-1

私がやろうとするときはいつでも:

char buffed[1024];
snprintf(buffed, sizeof(buffed), "bash.sh %s &", get_value("request-uri"));
system(buffed);

これは私が使用する機能です:

char *get_value(char *name) {
        FORMAT_NODE *node;

#ifdef DEBUG
        ASSERT(name);
#endif

        if (strlen(name) == 0)
                return EMPTY_FIELD;

        if ((node = get_field(name))) {
                return node->value;
        } else {
                return EMPTY_FIELD;
        }
}

コンパイルは問題ありませんが、セグメンテーション違反が発生してクラッシュする値を出力する必要がある場合はいつでも、誰かが私が間違っていることを説明できますか?

前もって感謝します!

編集:

get_value("request-uri") は私が話しているものであり、文字列でなければなりません

strstr(get_value("request-uri"), "index.php") は完璧に動作します!

ただし、「index.php」は get_value から取得する必要があります

edit2: gdb: プログラムがシグナル SIGSEGV を受信しました。セグメンテーション違反です。/lib64/libc.so.6 からの __strlen_sse2 () の 0x00007ffff73f3321

4

1 に答える 1

0

ここの問題は、CBIII が gdb を使用するように指示したことで解決されました。使用される前にフラッシュされたため、値は空でした。

get_value("request-uri") は 0x0 を返しました

于 2013-08-03T13:25:39.713 に答える