Lines Matching refs:ms

61 -	struct magic_set *ms;
74 - if ((ms = magic_open(MAGIC_CHECK)) == NULL) {
78 - ret = magic_compile(ms, argv[1]) == -1 ? 1 : 0;
80 - (void)fprintf(stderr, "%s: %s\n", progname, magic_error(ms));
81 - magic_close(ms);
110 return apprentice_compile(ms, map, fn);
114 map = apprentice_map(ms, fn);
116 - if (ms->flags & MAGIC_CHECK)
117 - file_magwarn(ms, "using regular magic file `%s'", fn);
118 - map = apprentice_load(ms, fn, action);
120 + if (ms->flags & MAGIC_CHECK)
121 + file_magwarn(ms, "using regular magic file `%s'", fn);
122 + map = apprentice_load(ms, fn, action);
138 mlist_free(ms->mlist[i]);
139 - free(ms->o.pbuf);
140 - free(ms->o.buf);
141 - free(ms->c.li);
142 - free(ms);
143 + if (ms->o.pbuf) {
144 + efree(ms->o.pbuf);
146 + if (ms->o.buf) {
147 + efree(ms->o.buf);
149 + if (ms->c.li) {
150 + efree(ms->c.li);
152 + efree(ms);
157 struct magic_set *ms;
160 - if ((ms = CAST(struct magic_set *, calloc((size_t)1,
161 + if ((ms = CAST(struct magic_set *, ecalloc((size_t)1,
166 ms->o.buf = ms->o.pbuf = NULL;
167 len = (ms->c.len = 10) * sizeof(*ms->c.li);
169 - if ((ms->c.li = CAST(struct level_info *, malloc(len))) == NULL)
170 + if ((ms->c.li = CAST(struct level_info *, emalloc(len))) == NULL)
173 ms->event_flags = 0;
175 ms->line = 0;
176 return ms;
178 - free(ms);
179 + efree(ms);
251 + mlist_free(ms->mlist[i]);
252 + if ((ms->mlist[i] = mlist_alloc()) == NULL) {
253 + file_oomem(ms, sizeof(*ms->mlist[i]));
257 + return apprentice_1(ms, fn, action);
261 file_oomem(ms, strlen(fn));
265 mlist_free(ms->mlist[i]);
289 file_oomem(ms, sizeof(*mp) * maxmagic[i]);
292 load_1(struct magic_set *ms, int action, const char *fn, int *errs,
303 - FILE *f = fopen(ms->file = fn, "r");
309 + ms->file = fn;
318 file_error(ms, errno, "cannot read magic file `%s'",
324 - for (ms->line = 1; (len = getline(&line, &llen, f)) != -1;
325 - ms->line++) {
326 + for (ms->line = 1; (line = php_stream_get_line(stream, buffer , BUFSIZ, &len)) != NULL; ms->line+…
341 (void)addentry(ms, &me, mentry, mentrycount);
354 file_oomem(ms, slen);
368 apprentice_load(struct magic_set *ms, const char *fn, int action)
387 ms->flags |= MAGIC_CHECK; /* Enable checks for parsed files */
391 file_oomem(ms, sizeof(*map));
426 file_oomem(ms,
445 file_oomem(ms, mlen);
460 load_1(ms, action, filearr[i], &errs, mentry,
468 load_1(ms, action, fn, &errs, mentry, mentrycount);
498 file_oomem(ms, sizeof(*nm) * cnt);
506 file_oomem(ms, len);
520 if (ms->flags & MAGIC_CHECK)
521 file_magwarn(ms, "type `%s' invalid", l);
536 else if (ms->flags & MAGIC_CHECK)
537 file_magwarn(ms, "'~' invalid for string types");
548 if (check_format(ms, m) == -1)
561 apprentice_map(struct magic_set *ms, const char *fn)
580 file_oomem(ms, sizeof(*map));
600 dbname = mkdbname(ms, fn, 0);
617 file_error(ms, errno, "cannot stat `%s'", dbname);
623 file_error(ms, 0, "file `%s' is too small", dbname);
631 - file_error(ms, errno, "cannot map `%s'", dbname);
638 file_oomem(ms, map->len);
643 file_badread(ms);
660 file_error(ms, 0, "bad magic in `%s'", dbname);
665 - file_error(ms, 0, "File %s supports only version %d magic "
667 + file_error(ms, 0, "File %d.%d supports only version %d magic "
674 - file_error(ms, 0, "Size of `%s' %llu is not a multiple of %zu",
691 + file_error(ms, 0, "Size of `%s' %llu is not a multiple of %zu",
705 file_error(ms, 0, "Inconsistent entries in `%s' %u != %u",
742 - dbname = mkdbname(ms, fn, 1);
743 + dbname = mkdbname(ms, fn, 0);
758 file_error(ms, errno, "cannot open `%s'", dbname);
767 file_error(ms, errno, "error writing `%s'", dbname);
775 file_error(ms, errno, "error seeking `%s'", dbname);
783 file_error(ms, errno, "error writing `%s'", dbname);
812 if (ms->flags & MAGIC_MIME) {
822 ms->flags &= MAGIC_MIME_TYPE;
852 file_oomem(ms, mlen);
858 if ((rv = file_softmagic(ms, utf8_buf,
866 if (file_printf(ms, ", ") == -1)
1218 int mime = ms->flags & MAGIC_MIME;
1221 if ((ms->flags & MAGIC_COMPRESS) == 0)
1236 ms->flags |= MAGIC_COMPRESS;
1263 file_badseek(ms);
1483 +protected size_t file_printedlen(const struct magic_set *ms);
1556 -bad_link(struct magic_set *ms, int err, char *buf)
1558 - int mime = ms->flags & MAGIC_MIME;
1560 - file_printf(ms, "inode/symlink")
1564 - if (ms->flags & MAGIC_ERROR) {
1565 - file_error(ms, err,
1569 - if (file_printf(ms, "broken symbolic link to `%s'", buf) == -1)
1590 handle_mime(struct magic_set *ms, int mime, const char *str)
1596 -file_fsmagic(struct magic_set *ms, const char *fn, struct stat *sb)
1597 +file_fsmagic(struct magic_set *ms, const char *fn, struct stat *sb, php_stream *stream)
1600 int mime = ms->flags & MAGIC_MIME;
1608 if (ms->flags & MAGIC_APPLE)
1622 - if ((ms->flags & MAGIC_SYMLINK) == 0)
1629 - if (ms->flags & MAGIC_ERROR) {
1630 - file_error(ms, errno, "cannot stat `%s'", fn);
1636 + if (ms->flags & MAGIC_ERROR) {
1637 + file_error(ms, errno, "cannot stat `%s'", fn);
1645 + if (ms->flags & MAGIC_ERROR) {
1646 + file_error(ms, errno, "cannot stat `%s'", fn);
1651 - if (file_printf(ms, "cannot open `%s' (%s)",
1654 - ms->event_flags |= EVENT_HAD_ERR;
1663 if (file_printf(ms, "%ssetuid", COMMA) == -1)
1672 - if (handle_mime(ms, mime, "directory") == -1)
1674 - } else if (file_printf(ms, "%sdirectory", COMMA) == -1)
1684 - if ((ms->flags & MAGIC_DEVICES) != 0) {
1689 - if (handle_mime(ms, mime, "chardevice") == -1)
1702 + if ((ms->flags & MAGIC_DEVICES) != 0) {
1707 + if (handle_mime(ms, mime, "x-character-device") == -1)
1712 if (file_printf(ms, "%scharacter special (%d/%d/%d)",
1720 if (file_printf(ms, "%scharacter special (%ld/%ld)",
1729 if (file_printf(ms, "%scharacter special", COMMA) == -1)
1742 - if ((ms->flags & MAGIC_DEVICES) != 0) {
1747 - if (handle_mime(ms, mime, "blockdevice") == -1)
1752 - if (file_printf(ms, "%sblock special (%d/%d/%d)",
1757 - if (file_printf(ms, "%sblock special (%ld/%ld)",
1767 - if (file_printf(ms, "%sblock special", COMMA) == -1)
1777 if((ms->flags & MAGIC_DEVICES) != 0)
1784 if (ms->flags & MAGIC_ERROR) {
1785 - file_error(ms, errno, "unreadable symlink `%s'",
1787 + file_error(ms, errno, "unreadable symlink `%s'", fn);
1791 - if (handle_mime(ms, mime, "symlink") == -1)
1793 - } else if (file_printf(ms,
1804 - return bad_link(ms, errno, buf);
1813 - if (ms->flags & MAGIC_ERROR) {
1814 - file_error(ms, 0,
1819 - if (handle_mime(ms, mime,
1822 - } else if (file_printf(ms,
1836 - return bad_link(ms, errno, buf);
1840 - if ((ms->flags & MAGIC_SYMLINK) != 0) {
1842 - ms->flags &= MAGIC_SYMLINK;
1843 - p = magic_file(ms, buf);
1844 - ms->flags |= MAGIC_SYMLINK;
1849 - if (handle_mime(ms, mime, "symlink") == -1)
1851 - } else if (file_printf(ms, "%ssymbolic link to `%s'",
1886 - if ((ms->flags & MAGIC_DEVICES) == 0 && sb->st_size == 0) {
1888 - if (handle_mime(ms, mime, "x-empty") == -1)
1890 - } else if (file_printf(ms, "%sempty", COMMA) == -1)
1892 + if ((ms->flags & MAGIC_DEVICES) == 0 && sb->st_size == 0) {
1894 + if (handle_mime(ms, mime, "x-empty") == -1)
1896 + } else if (file_printf(ms, "%sempty", COMMA) == -1)
1909 - if (file_printf(ms, " ") == -1)
1940 -file_vprintf(struct magic_set *ms, const char *fmt, va_list ap)
1941 +file_printf(struct magic_set *ms, const char *fmt, ...)
1955 if (ms->o.buf != NULL) {
1956 - len = asprintf(&newstr, "%s%s", ms->o.buf, buf);
1960 - free(ms->o.buf);
1962 + len = spprintf(&newstr, 0, "%s%s", ms->o.buf, (buf ? buf : ""));
1966 + efree(ms->o.buf);
1967 + ms->o.buf = newstr;
1969 + ms->o.buf = buf;
1971 - ms->o.buf = buf;
1974 - file_error(ms, errno, "vasprintf failed");
1979 -file_printf(struct magic_set *ms, const char *fmt, ...)
1985 - rv = file_vprintf(ms, fmt, ap);
1992 file_error_core(struct magic_set *ms, int error, const char *f, va_list va,
1998 if (ms->event_flags & EVENT_HAD_ERR)
2001 - free(ms->o.buf);
2002 + efree(ms->o.buf);
2003 ms->o.buf = NULL;
2004 file_printf(ms, "line %" SIZE_T_FORMAT "u: ", lineno);
2006 - file_vprintf(ms, f, va);
2008 - file_printf(ms, " (%s)", strerror(error));
2014 + file_printf(ms, "%s (%s)", (*buf ? buf : ""), strerror(error));
2016 + file_printf(ms, "%s", buf);
2023 ms->event_flags |= EVENT_HAD_ERR;
2024 ms->error = error;
2027 file_error(ms, errno, "error reading");
2032 -file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unused)),
2034 +file_buffer(struct magic_set *ms, php_stream *stream, const char *inname, const void *buf,
2038 int mime = ms->flags & MAGIC_MIME;
2047 if ((ms->flags & MAGIC_NO_CHECK_COMPRESS) == 0)
2048 - if ((m = file_zmagic(ms, fd, inname, ubuf, nb)) != 0) {
2049 + if ((m = file_zmagic(ms, stream, inname, ubuf, nb)) != 0) {
2050 if ((ms->flags & MAGIC_DEBUG) != 0)
2057 - if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0)
2058 - if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) {
2059 - if ((ms->flags & MAGIC_DEBUG) != 0)
2062 + if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0) {
2066 + if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) {
2067 + if ((ms->flags & MAGIC_DEBUG) != 0)
2075 if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0)
2076 - if ((m = file_softmagic(ms, ubuf, nb, BINTEST,
2077 + if ((m = file_softmagic(ms, ubuf, nb, 0, BINTEST,
2079 if ((ms->flags & MAGIC_DEBUG) != 0)
2088 file_reset(struct magic_set *ms)
2092 if (ms->o.buf) {
2093 - free(ms->o.buf);
2094 + efree(ms->o.buf);
2095 ms->o.buf = NULL;
2097 if (ms->o.pbuf) {
2098 - free(ms->o.pbuf);
2099 + efree(ms->o.pbuf);
2100 ms->o.pbuf = NULL;
2102 ms->event_flags &= ~EVENT_HAD_ERR;
2105 file_getbuffer(struct magic_set *ms)
2111 if (ms->event_flags & EVENT_HAD_ERR)
2114 len = strlen(ms->o.buf);
2116 - file_oomem(ms, len);
2120 - if ((pbuf = CAST(char *, realloc(ms->o.pbuf, psize))) == NULL) {
2121 + if ((ms->o.pbuf = CAST(char *, erealloc(ms->o.pbuf, psize))) == NULL) {
2122 file_oomem(ms, psize);
2125 - ms->o.pbuf = pbuf;
2130 if (level >= ms->c.len) {
2131 len = (ms->c.len += 20) * sizeof(*ms->c.li);
2132 ms->c.li = CAST(struct level_info *, (ms->c.li == NULL) ?
2134 - realloc(ms->c.li, len));
2136 + erealloc(ms->c.li, len));
2137 if (ms->c.li == NULL) {
2138 file_oomem(ms, len);
2141 return ms->o.buf == NULL ? 0 : strlen(ms->o.buf);
2147 file_replace(struct magic_set *ms, const char *pat, const char *rep)
2172 + res = php_pcre_replace_impl(pce, ms->o.buf, strlen(ms->o.buf), repl,
2179 - file_magerror(ms, "regex error %d, (%s)", rc, errmsg);
2189 - while (regexec(&rx, ms->o.buf, 1, &rm, 0) == 0) {
2190 - ms->o.buf[rm.rm_so] = '\0';
2191 - if (file_printf(ms, "%s%s", rep,
2192 - rm.rm_eo != 0 ? ms->o.buf + rm.rm_eo : "") == -1)
2200 + strncpy(ms->o.buf, res, res_len);
2201 + ms->o.buf[res_len] = '\0';
2342 magic_load(struct magic_set *ms, const char *magicfile)
2344 if (ms == NULL)
2347 return file_apprentice(ms, magicfile, FILE_LOAD);
2351 return file_apprentice(ms, magicfile, FILE_COMPILE);
2355 -magic_check(struct magic_set *ms, const char *magicfile)
2357 - if (ms == NULL)
2359 - return file_apprentice(ms, magicfile, FILE_CHECK);
2363 magic_list(struct magic_set *ms, const char *magicfile)
2365 close_and_restore(const struct magic_set *ms, const char *name, int fd,
2372 if ((ms->flags & MAGIC_PRESERVE_ATIME) != 0) {
2384 if (ms == NULL)
2386 - return file_or_fd(ms, NULL, fd);
2387 + return file_or_stream(ms, NULL, NULL);
2393 if (ms == NULL)
2395 - return file_or_fd(ms, inname, STDIN_FILENO);
2396 + return file_or_stream(ms, inname, NULL);
2400 +magic_stream(struct magic_set *ms, php_stream *stream)
2402 + if (ms == NULL)
2404 + return file_or_stream(ms, NULL, stream);
2408 -file_or_fd(struct magic_set *ms, const char *inname, int fd)
2409 +file_or_stream(struct magic_set *ms, const char *inname, php_stream *stream)
2432 if (file_reset(ms) == -1)
2435 - switch (file_fsmagic(ms, inname, &sb)) {
2436 + switch (file_fsmagic(ms, inname, &sb, stream)) {
2467 - if (unreadable_info(ms, sb.st_mode, inname) == -1)
2471 + if (unreadable_info(ms, sb.st_mode, inname) == -1)
2501 - if (unreadable_info(ms, sb.st_mode, inname) == -1)
2509 - file_error(ms, errno, "cannot read `%s'", inname);
2513 + file_error(ms, errno, "cannot read `%s'", inname);
2518 - if (file_buffer(ms, fd, inname, buf, (size_t)nbytes) == -1)
2519 + if (file_buffer(ms, stream, inname, buf, (size_t)nbytes) == -1)
2524 - close_and_restore(ms, inname, fd, &sb);
2531 + close_and_restore(ms, inname, 0, &sb);
2532 return rv == 0 ? file_getbuffer(ms) : NULL;
2542 - if (file_buffer(ms, -1, NULL, buf, nb) == -1) {
2543 + if (file_buffer(ms, NULL, NULL, buf, nb) == -1) {
2546 return file_getbuffer(ms);
2551 magic_error(struct magic_set *ms)
2768 file_magwarn(struct magic_set *ms, const char *f, ...)
2778 - if (ms->file)
2779 - (void) fprintf(stderr, "%s, %lu: ", ms->file,
2780 - (unsigned long)ms->line);
2850 if (NOTMIME(ms) && file_printf(ms,
2867 if (NOTMIME(ms) && file_printf(ms,
2869 if (file_printf(ms,
2873 - if (file_printf(ms, ", %s%s", corrupt, expn) == -1)
2876 + if (file_printf(ms, ", %s%s", corrupt, expn) == -1)
2879 if (file_printf(ms, "application/CDFV2-corrupt") == -1)
2917 file_softmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes,
2923 for (ml = ms->mlist[0]->next; ml != ms->mlist[0]; ml = ml->next)
2924 if ((rv = match(ms, ml->magic, ml->nmagic, buf, nbytes, 0, mode,
2940 if (file_check_mem(ms, ++cont_level) == -1)
2948 ms->line = m->lineno; /* for messages */
2952 check_fmt(struct magic_set *ms, struct magic *m)
2970 - file_magerror(ms, "regex error %d, (%s)", rc, errmsg);
3003 mprint(struct magic_set *ms, struct magic *m)
3009 - cp = strndup((const char *)ms->search.s, ms->search.rm_len);
3010 + cp = estrndup((const char *)ms->search.s, ms->search.rm_len);
3012 file_oomem(ms, ms->search.rm_len);
3015 rval = file_printf(ms, m->desc, cp);
3070 mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir,
3093 ms->search.s_len = 0;
3094 ms->search.s = NULL;
3110 ms->search.s = buf;
3111 ms->search.s_len = last - buf;
3115 uint32_t soffset, offset = ms->offset;
3119 union VALUETYPE *p = &ms->ms_value;
3123 if (mcopy(ms, p, m->type, m->flag & INDIR, s, (uint32_t)(offset + o),
3128 if ((ms->flags & MAGIC_DEBUG) != 0) {
3213 if ((ms->flags & MAGIC_DEBUG) != 0)
3216 - if (mcopy(ms, p, m->type, 0, s, offset, nbytes, count) == -1)
3217 + if (mcopy(ms, p, m->type, 0, s, offset, nbytes, m) == -1)
3219 ms->offset = offset;
3221 if ((ms->flags & MAGIC_DEBUG) != 0) {
3283 sbuf = ms->o.buf;
3284 soffset = ms->offset;
3285 ms->o.buf = NULL;
3286 ms->offset = 0;
3287 rv = file_softmagic(ms, s + offset, nbytes - offset,
3290 if ((ms->flags & MAGIC_DEBUG) != 0)
3292 rbuf = ms->o.buf;
3294 ms->offset = soffset;
3296 if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 &&
3297 - file_printf(ms, m->desc, offset) == -1)
3298 + file_printf(ms, m->desc, offset) == -1) {
3303 - if (file_printf(ms, "%s", rbuf) == -1)
3305 + if (file_printf(ms, "%s", rbuf) == -1) {
3365 magiccheck(struct magic_set *ms, struct magic *m)
3375 - if (ms->search.s == NULL)
3384 - file_magerror(ms, "regex error %d, (%s)",
3392 - size_t l = ms->search.s_len - 1;
3393 - char c = ms->search.s[l];
3394 - ((char *)(intptr_t)ms->search.s)[l] = '\0';
3397 - pmatch[0].rm_eo = ms->search.s_len;
3399 - rc = regexec(&rx, (const char *)ms->search.s,
3402 - ((char *)(intptr_t)ms->search.s)[l] = c;
3406 - ms->search.s += (int)pmatch[0].rm_so;
3407 - ms->search.offset += (size_t)pmatch[0].rm_so;
3408 - ms->search.rm_len =
3443 + haystack = estrndup(ms->search.s, ms->search.s_len);
3446 + php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE…
3531 + ms->search.s += (int)Z_LVAL_P(pattern_offset); /* this is where the match starts */
3532 + ms->search.offset += (size_t)Z_LVAL_P(pattern_offset); /* this is where the match starts as …
3533 + ms->search.rm_len = Z_STRLEN_P(pattern_match) /* This is the length of the matched pattern *…
3556 - file_magerror(ms, "regexec error %d, (%s)",
3578 file_magerror(ms, "invalid type %d in magiccheck()", m->type);