Hi,

file(1) crashes if the magic file contains a misplaced "strength" parameter.
A simple example to reproduce it:

$ cat ~/.magic
!:strength * 2
0 string \037\235 compress'd data


Index: usr.bin/file/magic-load.c
===================================================================
RCS file: /cvs/src/usr.bin/file/magic-load.c,v
retrieving revision 1.26
diff -u -p -r1.26 magic-load.c
--- usr.bin/file/magic-load.c   2 Jul 2017 10:58:15 -0000       1.26
+++ usr.bin/file/magic-load.c   30 Oct 2021 11:16:29 -0000
@@ -1015,6 +1015,12 @@ magic_adjust_strength(struct magic *m, u
                magic_warnm(m, at, "invalid strength operator: %s", s);
                return;
        }
+
+       if (ml == NULL) {
+               magic_warnm(m, at, "stray strength parameter");
+               return;
+       }
+
        ml->strength_operator = *cp++;

        while (isspace((u_char)*cp))

Reply via email to