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-Tag: FILE5_29~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=583b3c262f0797ab4e7062e029003dde162b82ab;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 38df3285..37d19a21 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.248 2016/03/31 17:51:12 christos Exp $") +FILE_RCSID("@(#)$File: apprentice.c,v 1.249 2016/05/17 21:43:07 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 c54d39e9..6693985b 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.177 2016/03/21 15:56:53 christos Exp $ + * @(#)$File: file.h,v 1.178 2016/03/31 17:51:12 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