From 1a7798c786466977ef8d2bc95b40a435c47c845a Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 5 Mar 2015 22:43:41 +0100 Subject: [PATCH] restore good patch parts --- ext/fileinfo/libmagic/softmagic.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c index 119efed21e..9aaea49b32 100644 --- a/ext/fileinfo/libmagic/softmagic.c +++ b/ext/fileinfo/libmagic/softmagic.c @@ -624,11 +624,12 @@ mprint(struct magic_set *ms, struct magic *m) t = ms->offset + sizeof(double); break; + case FILE_SEARCH: case FILE_REGEX: { char *cp; int rval; - cp = zend_strndup((const char *)ms->search.s, ms->search.rm_len); + cp = estrndup((const char *)ms->search.s, ms->search.rm_len); if (cp == NULL) { file_oomem(ms, ms->search.rm_len); return -1; @@ -647,15 +648,6 @@ mprint(struct magic_set *ms, struct magic *m) break; } - case FILE_SEARCH: - if (file_printf(ms, F(ms, m, "%s"), m->value.s) == -1) - return -1; - if ((m->str_flags & REGEX_OFFSET_START)) - t = ms->search.offset; - else - t = ms->search.offset + m->vallen; - break; - case FILE_DEFAULT: case FILE_CLEAR: if (file_printf(ms, "%s", m->desc) == -1) @@ -1643,7 +1635,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, break; case FILE_REGEX: - if (nbytes < offset) + if (OFFSET_OOB(nbytes, offset, 0)) return 0; break; @@ -1652,8 +1644,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, offset += CAST(uint32_t, o); if (offset == 0) return 0; - - if (nbytes < offset) + if (OFFSET_OOB(nbytes, offset, 0)) return 0; if ((pb = file_push_buffer(ms)) == NULL) @@ -1684,7 +1675,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, return rv; case FILE_USE: - if (nbytes < offset) + if (OFFSET_OOB(nbytes, offset, 0)) return 0; rbuf = m->value.s; if (*rbuf == '^') { @@ -1908,6 +1899,7 @@ magiccheck(struct magic_set *ms, struct magic *m) break; default: + matched = 0; file_magerror(ms, "cannot happen with float: invalid relation `%c'", m->reln); return -1; @@ -1941,6 +1933,7 @@ magiccheck(struct magic_set *ms, struct magic *m) break; default: + matched = 0; file_magerror(ms, "cannot happen with double: invalid relation `%c'", m->reln); return -1; } @@ -2189,6 +2182,7 @@ magiccheck(struct magic_set *ms, struct magic *m) break; default: + matched = 0; file_magerror(ms, "cannot happen: invalid relation `%c'", m->reln); return -1; -- 2.50.1