-3
我得到了「分段錯誤(核心轉儲)」「FILE * pFile;」出現分段錯誤(核心轉儲)?
並且進程被中斷。
請幫助解決它!
可疑部分代碼在這裏
...
FILE *pFile;
char buffer[100];
sprintf(buffer,"/var/www/html/%s.txt",topic);
pFile = fopen(buffer,"w");
中可能會出現此問題上面 (沒有進入的if-else)
if(NULL == pFile){
_mosquitto_log_printf(NULL, MOSQ_LOG_DEBUG,"open failure");
}else{
fwrite(payload,1,sizeof(payload)-1,pFile);
_mosquitto_log_printf(NULL, MOSQ_LOG_INFO, "File context : %s", payload);
}
fclose(pFile);
...
操作系統Ubuntu 14
什麼是「有效載荷」? –
您是否嘗試使用調試器來查看哪條指令導致段錯誤? – blatinox
如果'topic'足夠長,您創建的文本可能不適合緩衝區。由於這看起來好像在堆棧中,緩衝區溢出可能會破壞'pFile',一些其他變量甚至是返回地址。 IOW:它可能是一個經典的緩衝區溢出(但沒有惡意的意圖)。如您所說,在輸入if-else子句之前可能會出現問題。 –