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