From: Christos Zoulas Date: Tue, 5 Jul 2016 19:20:19 +0000 (+0000) Subject: Bumo string size to 96; don't try to parse a compiled file as a regular magic X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e2f9ceb7a746e50992fa47404e31f168a274cd14;p=file Bumo string size to 96; don't try to parse a compiled file as a regular magic file. --- diff --git a/src/apprentice.c b/src/apprentice.c index e395854d..8793982e 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -32,7 +32,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: apprentice.c,v 1.249 2016/05/17 21:43:07 christos Exp $") +FILE_RCSID("@(#)$File: apprentice.c,v 1.250 2016/07/05 19:20:19 christos Exp $") #endif /* lint */ #include "magic.h" @@ -451,6 +451,8 @@ apprentice_1(struct magic_set *ms, const char *fn, int action) #ifndef COMPILE_ONLY map = apprentice_map(ms, fn); + if (map == (struct magic_map *)-1) + goto fail; if (map == NULL) { if (ms->flags & MAGIC_CHECK) file_magwarn(ms, "using regular magic file `%s'", fn); @@ -2930,6 +2932,7 @@ apprentice_map(struct magic_set *ms, const char *fn) struct stat st; char *dbname = NULL; struct magic_map *map; + struct magic_map *rv = NULL; fd = -1; if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) { @@ -2978,8 +2981,10 @@ apprentice_map(struct magic_set *ms, const char *fn) (void)close(fd); fd = -1; - if (check_buffer(ms, map, dbname) != 0) + if (check_buffer(ms, map, dbname) != 0) { + rv = (struct magic_map *)-1; goto error; + } #ifdef QUICK if (mprotect(map->p, (size_t)st.st_size, PROT_READ) == -1) { file_error(ms, errno, "cannot mprotect `%s'", dbname); @@ -2995,7 +3000,7 @@ error: (void)close(fd); apprentice_unmap(map); free(dbname); - return NULL; + return rv; } private int diff --git a/src/file.h b/src/file.h index f22fcd94..641bde7f 100644 --- a/src/file.h +++ b/src/file.h @@ -27,7 +27,7 @@ */ /* * file.h - definitions for file(1) program - * @(#)$File: file.h,v 1.178 2016/03/31 17:51:12 christos Exp $ + * @(#)$File: file.h,v 1.179 2016/07/05 19:20:19 christos Exp $ */ #ifndef __file_h__ @@ -134,11 +134,11 @@ or directory */ #define MAXDESC 64 /* max len of text description/MIME type */ #define MAXMIME 80 /* max len of text MIME type */ -#define MAXstring 64 /* max len of "string" types */ +#define MAXstring 96 /* max len of "string" types */ #define MAGICNO 0xF11E041C -#define VERSIONNO 13 -#define FILE_MAGICSIZE 312 +#define VERSIONNO 14 +#define FILE_MAGICSIZE 344 #define FILE_LOAD 0 #define FILE_CHECK 1