OSはLinux SuSE 2.6.16.60-0.21-smp
以下に示すように、SUIDが構成された実行可能binファイル(名前はbmu)が1つあります。
-rwsr-sr-x 1 root root 14968899 2012-03-29 10:35 bmu
dmidecode
そして、このプログラムは内部で呼び出します。
rootで実行された場合、操作は正常ですがdmidecode
、プログラムがroot以外のユーザーで実行された場合、呼び出された場合はnullが返されます。
この問題の理由とその修正方法は何ですか?
編集:コメントからコードと説明を追加しました:
read_fp = popen("dmidecode | grep 'Product Name'", "r");
/* ...... */
chars_read = fread(buffer, sizeof(char), BUFSIZ-1, read_fp);
の戻りread_fp
値はnullではありませんが、バッファの長さは0であり、何らかの値が必要です。