Hi,

I would like to report a crash (coredump) with an invalid magic file
(MALLOC_OPTIONS=S is need to expose the bug).

--- ~/.magic ---
0       beshort         0xffd8          JPEG image data
!:mime  image/jpeg
>6      string          JFIF\
--- end of file ---

The problem is on the last line: the function magic_get_string, used for
get the "JFIF\" string, miss the end-of-line due to '\' char, resulting
processing outside the line variable.

Problem found using afl-fuzz.

The proposed diff ensure '\0' is correctly detected, and return an
error ("can't parse string").
-- 
Sébastien Marie


Index: magic-load.c
===================================================================
RCS file: /cvs/src/usr.bin/file/magic-load.c,v
retrieving revision 1.2
diff -u -p -r1.2 magic-load.c
--- magic-load.c        24 Apr 2015 16:45:32 -0000      1.2
+++ magic-load.c        25 Apr 2015 18:21:04 -0000
@@ -479,6 +479,8 @@ magic_get_string(char **line, char *out,
                case '\"':
                        *out++ = '\"';
                        break;
+               case '\0':
+                       return (-1);
                default:
                        *out++ = c;
                        break;

Reply via email to