Является ли этот код безопасен:strerror_r буфер всегда нулем
strerror_r(errcode,buffer,length);
printf("Error: %s",buffer);
То есть, я могу доверять буферные быть нулем в случае, если буфер слишком мал? На странице руководства:
Соответствующий XSI strerror_r() является предпочтительным для переносных приложений. Он возвращает строку ошибки в пользовательском буфере buf длины buflen.
GNU-специфический strerror_r() возвращает указатель на строку, содержащую сообщение об ошибке. Это может быть либо указатель на строку, которую функция хранит в buf, либо указатель на некоторую (неизменяемую) статическую строку (в этом случае buf не используется). Если функция хранит строку в buf, то сохраняются не более байтовые байты (строка может быть усечена, если buflen слишком мал и errnum неизвестен). Строка всегда включает в себя завершающий нулевой байт ('\ 0').
Правильно ли я, что если я использую XSI-совместимую версию, может случиться так, что буфер не нуль.
@yellowantphil RHEL 5.4 не имеет отношения к делу, если ядро не было обновлено до версии 2.6.36 и gcc до 4.8. – user877329