felipe Wed Aug 27 00:17:27 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/fileinfo/libmagic funcs.c Log: - MFH: Fixed crash in file_error_core() http://cvs.php.net/viewvc.cgi/php-src/ext/fileinfo/libmagic/funcs.c?r1=1.3.2.2&r2=1.3.2.3&diff_format=u Index: php-src/ext/fileinfo/libmagic/funcs.c diff -u php-src/ext/fileinfo/libmagic/funcs.c:1.3.2.2 php-src/ext/fileinfo/libmagic/funcs.c:1.3.2.3 --- php-src/ext/fileinfo/libmagic/funcs.c:1.3.2.2 Tue Aug 26 12:23:29 2008 +++ php-src/ext/fileinfo/libmagic/funcs.c Wed Aug 27 00:17:27 2008 @@ -52,7 +52,6 @@ file_printf(struct magic_set *ms, const char *fmt, ...) { va_list ap; - size_t size; int len; char *buf = NULL, *newstr; @@ -81,17 +80,32 @@ file_error_core(struct magic_set *ms, int error, const char *f, va_list va, uint32_t lineno) { + char *buf = NULL; + /* Only the first error is ok */ - if (ms->haderr) + if (ms->haderr) { return; + } + if (lineno != 0) { efree(ms->o.buf); ms->o.buf = NULL; file_printf(ms, "line %u: ", lineno); } - file_printf(ms, f, va); - if (error > 0) - file_printf(ms, " (%s)", strerror(error)); + + vspprintf(&buf, 0, f, va); + va_end(va); + + if (error > 0) { + file_printf(ms, "%s (%s)", (*buf ? buf : ""), strerror(error)); + } else if (*buf) { + file_printf(ms, "%s", buf); + } + + if (buf) { + efree(buf); + } + ms->haderr++; ms->error = error; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php