Fix crash on very long error messages

Manual for snprintf says:
       If  the output was truncated, the return value is -1, oth-
       erwise it is the number of characters stored, not  includ-
       ing the terminating null.
And that's a blatant lie - in reality, libc 2.1 always returns number of
characters that _would be_ stored. I hate those libc bugs. Now we should go
and check every place we trusted snprintf return value.
This commit is contained in:
Stanislav Malyshev 2000-09-08 12:32:29 +00:00
parent 24b2feff63
commit 6426d1c9ce

View file

@ -334,6 +334,9 @@ static void php_error_cb(int type, const char *error_filename, const uint error_
buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, args);
buffer[sizeof(buffer)-1]=0;
if(buffer_len > sizeof(buffer) - 1 || buffer_len < 0) {
buffer_len = sizeof(buffer) - 1;
}
/* display/log the error if necessary */
if ((EG(error_reporting) & type || (type & E_CORE))