felipe          Wed Aug 27 00:16:12 2008 UTC

  Modified files:              
    /php-src/ext/fileinfo/libmagic      funcs.c 
  Log:
  - Fixed crash in file_error_core()
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/fileinfo/libmagic/funcs.c?r1=1.5&r2=1.6&diff_format=u
Index: php-src/ext/fileinfo/libmagic/funcs.c
diff -u php-src/ext/fileinfo/libmagic/funcs.c:1.5 
php-src/ext/fileinfo/libmagic/funcs.c:1.6
--- php-src/ext/fileinfo/libmagic/funcs.c:1.5   Tue Aug 26 12:24:12 2008
+++ php-src/ext/fileinfo/libmagic/funcs.c       Wed Aug 27 00:16:11 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

Reply via email to