]> granicus.if.org Git - php/commitdiff
restore good patch parts
authorAnatol Belski <ab@php.net>
Thu, 5 Mar 2015 21:43:41 +0000 (22:43 +0100)
committerAnatol Belski <ab@php.net>
Sun, 8 Mar 2015 18:47:18 +0000 (19:47 +0100)
ext/fileinfo/libmagic/softmagic.c

index 119efed21e7efbeec8d28fe1c3657ea263b79b9a..9aaea49b326d10ac484c19a7719cf19bc930c4df 100644 (file)
@@ -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;