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))