2017-12-18 8 views
0

rootユーザーとしてnotify-sendを使用して通知を送信する必要があるPHPを使用してCLI APPを構築しています。PHP exec | DBUS_SESSION_BUS_ADDRESSを設定しようとするとヌルバイトエラーが発生する

通知を送信しようとする前にDBUS_SESSION_BUS_ADDRESSを設定する必要があることがわかりました。それ以外の場合は動作しません。ここで、このコードの下

:NULLバイト検出:

$c = sprintf("DBUS_SESSION_BUS_ADDRESS=".$DBUS_SESSION." /usr/bin/notify-send \"TITLE\" \"MESSAGE\""); 
system($c); 

エラー

システム()をスロー。私は$DBUS_SESSIONを発見した私の豊富なデバッグから ライン186

に /filepath.phpでの攻撃の可能性が問題を引き起こしています。しかし、私が$DBUS_SESSIONの値をハードコードすると、コマンドは問題なく動作します。このような

$c = sprintf("DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus,guid=5ded8923178f8ea19642e36a5a37eb76 /usr/bin/notify-send \"sdfTITLE\" \"MESSAGE\""); 
system($c); 

はここで何が起こっていますか?これをどうすれば解決できますか?

答えて

1

問題は、変数をsprintfに直接渡しているということですが、それはどのように動作するのでしょうか。次に、このようなsprintf関数への継続的な引数として順に変数を提供し、引数の型を決定づける:

$c = sprintf("DBUS_SESSION_BUS_ADDRESS=%s /usr/bin/notify-send \"TITLE\" \"MESSAGE\"", $DBUS_SESSION); 
system($c); 

これは、残念ながら私はまだ同じエラーを持っているNULL BYTE detectedエラー

+0

を解決する必要があります。私はエラーが渡されている文字列の種類のためだと思う。 'DBUS'にはこの問題の原因となっているものが含まれています –

関連する問題