mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
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:
parent
24b2feff63
commit
6426d1c9ce
1 changed files with 3 additions and 0 deletions
|
@ -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))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue