每当我尝试去做:
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
编辑2:
gdb:
程序收到信号SIGSEGV,分段故障。
来自/lib64/libc.so.6的__strlen_sse2()中的0x00007ffff73f3321
最佳答案
由于告诉我使用gdb,CBIII解决了这里的问题,该值是空的,因为它在使用前已刷新。
get_value(“ request-uri”)返回0x0