A есть следующий код c ansi, в версии Linux 2.6.32-431.11.2.el6.x86_64
fprintf(fpOut, "%s",cBuffer);
Где cBuffer — указатель на char, например
int bfnAddOutputFile(FILE *fpOut, char *cBuffer){/**/
fprintf(fpOut, "%s",cBuffer);
//code
return ( TRUE );
}
Когда он выполняет fprintf, генерирует дамп ядра
Program received signal SIGSEGV, Segmentation fault.
0x00000038b2e6723e in fputs () from /lib64/libc.so.6
Существует максимальная длина символа, которую можно отправить в fprintf, и если это так, то какой это номер?
cBuffer
строка ASCIIZ? - person Iłya Bursov   schedule 25.10.2016fprintf(fpOut, "%s",cBuffer);
наprintf("%zd\n",strlen(cBuffer));
и посмотрите, повторяется ли ошибка. - person r3mainer   schedule 25.10.2016strlen
, @squeamishossifrage? Если да, то (1)strlen()
, скорее всего, будет страдать от той же проблемы, и (2) правильным дескриптором поля будет%zx
, а не%xd
. - person John Bollinger   schedule 25.10.2016