Lines Matching refs:ms

117 file_softmagic(struct magic_set *ms, const struct buffer *b,  in file_softmagic()  argument
133 for (ml = ms->mlist[0]->next; ml != ms->mlist[0]; ml = ml->next) { in file_softmagic()
134 int ret = match(ms, ml->magic, ml->nmagic, b, in file_softmagic()
143 if ((ms->flags & MAGIC_CONTINUE) == 0) in file_softmagic()
158 file_fmtcheck(struct magic_set *ms, const char *desc, const char *def, in file_fmtcheck() argument
168 file_magerror(ms, in file_fmtcheck()
209 match(struct magic_set *ms, struct magic *magic, in match() argument
222 int print = (ms->flags & MAGIC_NODESC) == 0; in match()
233 if (file_check_mem(ms, cont_level) == -1) in match()
255 if (msetoffset(ms, m, &bb, b, offset, cont_level) == -1) in match()
257 ms->line = m->lineno; in match()
260 switch (mget(ms, m, b, CAST(const unsigned char *, bb.fbuf), in match()
276 switch (magiccheck(ms, m)) { in match()
296 if ((e = handle_annotation(ms, m, firstline)) != 0) in match()
315 if (print_sep(ms, firstline) == -1) in match()
317 if (mprint(ms, m) == -1) in match()
322 switch (moffset(ms, m, &bb, &ms->c.li[cont_level].off)) { in match()
331 if (file_check_mem(ms, ++cont_level) == -1) in match()
337 ms->line = m->lineno; /* for messages */ in match()
348 if (msetoffset(ms, m, &bb, b, offset, cont_level) == -1) in match()
352 if ((ms->flags & MAGIC_DEBUG) != 0) in match()
358 ms->offset += in match()
359 ms->c.li[cont_level - 1].off; in match()
365 if (ms->c.li[cont_level].last_match == 1) in match()
369 switch (mget(ms, m, b, CAST(const unsigned char *, in match()
390 switch (flush ? 1 : magiccheck(ms, m)) { in match()
395 ms->c.li[cont_level].last_match = 0; in match()
400 ms->c.li[cont_level].last_match = 1; in match()
403 ms->c.li[cont_level].got_match = 0; in match()
404 else if (ms->c.li[cont_level].got_match) { in match()
408 ms->c.li[cont_level].got_match = 1; in match()
410 if ((e = handle_annotation(ms, m, firstline)) in match()
436 if (print_sep(ms, firstline) in match()
443 if (file_printf(ms, " ") == -1) in match()
446 if (mprint(ms, m) == -1) in match()
451 switch (moffset(ms, m, &bb, in match()
452 &ms->c.li[cont_level].off)) { in match()
466 if (file_check_mem(ms, ++cont_level) == -1) in match()
475 if ((ms->flags & MAGIC_CONTINUE) == 0) in match()
487 check_fmt(struct magic_set *ms, const char *fmt) in check_fmt() argument
534 varexpand(struct magic_set *ms, char *buf, size_t len, const char *str) in varexpand() argument
559 if (ms->mode & 0111) { in varexpand()
589 mprint(struct magic_set *ms, struct magic *m) in mprint() argument
596 union VALUETYPE *p = &ms->ms_value; in mprint()
598 if (varexpand(ms, ebuf, sizeof(ebuf), m->desc) == -1) in mprint()
604 v = file_signextend(ms, m, CAST(uint64_t, value)); \ in mprint()
605 switch (check_fmt(ms, desc)) { \ in mprint()
616 if (file_printf(ms, F(ms, desc, "%s"), buf) == -1) \ in mprint()
621 if (file_printf(ms, F(ms, desc, "%" format "u"), \ in mprint()
625 if (file_printf(ms, F(ms, desc, "%" format "d"), \ in mprint()
659 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
660 file_printable(ms, sbuf, sizeof(sbuf), m->value.s, in mprint()
675 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
676 file_printable(ms, sbuf, sizeof(sbuf), str, in mprint()
681 size_t l = file_pstring_length_size(ms, m); in mprint()
692 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
701 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
710 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
718 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
726 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
736 switch (check_fmt(ms, desc)) { in mprint()
741 if (file_printf(ms, F(ms, desc, "%s"), buf) == -1) in mprint()
745 if (file_printf(ms, F(ms, desc, "%g"), vf) == -1) in mprint()
755 switch (check_fmt(ms, desc)) { in mprint()
760 if (file_printf(ms, F(ms, desc, "%s"), buf) == -1) in mprint()
764 if (file_printf(ms, F(ms, desc, "%g"), vd) == -1) in mprint()
775 cp = estrndup(RCAST(const char *, ms->search.s), in mprint()
776 ms->search.rm_len); in mprint()
778 file_oomem(ms, ms->search.rm_len); in mprint()
783 rval = file_printf(ms, F(ms, desc, "%s"), file_printable(ms, in mprint()
784 sbuf, sizeof(sbuf), scp, ms->search.rm_len)); in mprint()
794 if (file_printf(ms, "%s", m->desc) == -1) in mprint()
803 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
804 file_printable(ms, sbuf, sizeof(sbuf), ms->ms_value.s, in mprint()
805 sizeof(ms->ms_value.s))) == -1) in mprint()
809 (void) file_print_guid(buf, sizeof(buf), ms->ms_value.guid); in mprint()
810 if (file_printf(ms, F(ms, desc, "%s"), buf) == -1) in mprint()
816 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
823 if (file_printf(ms, F(ms, desc, "%s"), in mprint()
829 if (file_printf(ms, F(ms, desc, "%s"), buf) == -1) in mprint()
833 file_magerror(ms, "invalid m->type (%d) in mprint()", m->type); in mprint()
840 moffset(struct magic_set *ms, struct magic *m, const struct buffer *b, in moffset() argument
848 o = CAST(int32_t, (ms->offset + sizeof(char))); in moffset()
860 o = CAST(int32_t, (ms->offset + sizeof(short))); in moffset()
867 o = CAST(int32_t, (ms->offset + sizeof(int32_t))); in moffset()
873 o = CAST(int32_t, (ms->offset + sizeof(int64_t))); in moffset()
882 o = ms->offset + m->vallen; in moffset()
884 union VALUETYPE *p = &ms->ms_value; in moffset()
888 o = CAST(uint32_t, (ms->offset + strlen(p->s))); in moffset()
890 size_t l = file_pstring_length_size(ms, m); in moffset()
902 o = CAST(int32_t, (ms->offset + sizeof(uint32_t))); in moffset()
909 o = CAST(int32_t, (ms->offset + sizeof(uint32_t))); in moffset()
915 o = CAST(int32_t, (ms->offset + sizeof(uint64_t))); in moffset()
921 o = CAST(int32_t, (ms->offset + sizeof(uint64_t))); in moffset()
927 o = CAST(int32_t, (ms->offset + sizeof(float))); in moffset()
933 o = CAST(int32_t, (ms->offset + sizeof(double))); in moffset()
938 o = CAST(int32_t, ms->search.offset); in moffset()
941 (ms->search.offset + ms->search.rm_len)); in moffset()
946 o = CAST(int32_t, ms->search.offset); in moffset()
948 o = CAST(int32_t, (ms->search.offset + m->vallen)); in moffset()
956 o = ms->offset; in moffset()
960 o = der_offs(ms, m, nbytes); in moffset()
962 if ((ms->flags & MAGIC_DEBUG) != 0) { in moffset()
973 o = CAST(int32_t, (ms->offset + 2 * sizeof(uint64_t))); in moffset()
983 file_error(ms, 0, "Offset out of range %" SIZE_T_FORMAT in moffset()
993 cvt_id3(struct magic_set *ms, uint32_t v) in cvt_id3() argument
999 if ((ms->flags & MAGIC_DEBUG) != 0) in cvt_id3()
1156 mconvert(struct magic_set *ms, struct magic *m, int flip) in mconvert() argument
1158 union VALUETYPE *p = &ms->ms_value; in mconvert()
1199 size_t len, sz = file_pstring_length_size(ms, m); in mconvert()
1204 len = file_pstring_get_length(ms, m, ptr1); in mconvert()
1309 file_magerror(ms, "invalid type %d in mconvert()", m->type); in mconvert()
1313 file_magerror(ms, "zerodivide in mconvert()"); in mconvert()
1328 mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir, in mcopy() argument
1341 ms->search.s = RCAST(const char *, s) + offset; in mcopy()
1342 ms->search.s_len = nbytes - offset; in mcopy()
1343 ms->search.offset = offset; in mcopy()
1355 ms->search.s_len = 0; in mcopy()
1356 ms->search.s = NULL; in mcopy()
1370 if (bytecnt > ms->regex_max) in mcopy()
1371 bytecnt = ms->regex_max; in mcopy()
1391 ms->search.s = buf; in mcopy()
1392 ms->search.s_len = last - buf; in mcopy()
1393 ms->search.offset = offset; in mcopy()
1394 ms->search.rm_len = 0; in mcopy()
1500 msetoffset(struct magic_set *ms, struct magic *m, struct buffer *bb, in msetoffset() argument
1510 file_error(ms, 0, "negative offset %d at continuation" in msetoffset()
1519 file_magerror(ms, "non zero offset %" SIZE_T_FORMAT in msetoffset()
1526 ms->eoffset = ms->offset = CAST(int32_t, b->elen - m->offset); in msetoffset()
1533 ms->offset = offset; in msetoffset()
1534 ms->eoffset = 0; in msetoffset()
1536 ms->offset = ms->eoffset + offset; in msetoffset()
1539 if ((ms->flags & MAGIC_DEBUG) != 0) { in msetoffset()
1543 bb->fbuf, bb->flen, bb->elen, ms->offset, b->fbuf, in msetoffset()
1550 save_cont(struct magic_set *ms, struct cont *c) in save_cont() argument
1553 *c = ms->c; in save_cont()
1555 ms->c.li = CAST(struct level_info *, emalloc(len)); in save_cont()
1556 if (ms->c.li == NULL) { in save_cont()
1557 ms->c = *c; in save_cont()
1560 memcpy(ms->c.li, c->li, len); in save_cont()
1565 restore_cont(struct magic_set *ms, struct cont *c) in restore_cont() argument
1567 efree(ms->c.li); in restore_cont()
1568 ms->c = *c; in restore_cont()
1572 mget(struct magic_set *ms, struct magic *m, const struct buffer *b, in mget() argument
1578 uint32_t eoffset, offset = ms->offset; in mget()
1584 union VALUETYPE *p = &ms->ms_value; in mget()
1588 if (*indir_count >= ms->indir_max) { in mget()
1589 file_error(ms, 0, "indirect count (%hu) exceeded", in mget()
1594 if (*name_count >= ms->name_max) { in mget()
1595 file_error(ms, 0, "name use count (%hu) exceeded", in mget()
1602 if (mcopy(ms, p, m->type, m->flag & INDIR, s, in mget()
1606 if ((ms->flags & MAGIC_DEBUG) != 0) { in mget()
1685 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1689 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1719 lhs = cvt_id3(ms, CAST(uint32_t, lhs)); in mget()
1728 lhs = cvt_id3(ms, CAST(uint32_t, lhs)); in mget()
1758 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1765 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1770 offset += ms->c.li[cont_level - 1].off; in mget()
1772 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1777 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1780 if (mcopy(ms, p, m->type, 0, s, offset, nbytes, m) == -1) in mget()
1782 ms->offset = offset; in mget()
1784 if ((ms->flags & MAGIC_DEBUG) != 0) { in mget()
1860 if ((pb = file_push_buffer(ms)) == NULL) in mget()
1868 for (mlp = ms->mlist[0]->next; mlp != ms->mlist[0]; in mget()
1871 if ((rv = match(ms, mlp->magic, in mget()
1878 if ((ms->flags & MAGIC_DEBUG) != 0) in mget()
1881 rbuf = file_pop_buffer(ms, pb); in mget()
1882 if (rbuf == NULL && ms->event_flags & EVENT_HAD_ERR) in mget()
1886 if ((ms->flags & MAGIC_NODESC) == 0 && in mget()
1887 file_printf(ms, F(ms, m->desc, "%u"), offset) == -1) in mget()
1892 if (file_printf(ms, "%s", rbuf) == -1) { in mget()
1908 if (file_magicfind(ms, rbuf, &ml) == -1) { in mget()
1909 file_error(ms, 0, "cannot find entry `%s'", rbuf); in mget()
1912 if (save_cont(ms, &c) == -1) { in mget()
1913 file_error(ms, errno, "can't allocate continuation"); in mget()
1923 eoffset = ms->eoffset; in mget()
1924 rv = match(ms, ml.magic, ml.nmagic, b, in mget()
1928 ms->ms_value.q = nfound_match; in mget()
1932 restore_cont(ms, &c); in mget()
1936 ms->offset = offset; in mget()
1937 ms->eoffset = eoffset; in mget()
1941 if (ms->flags & MAGIC_NODESC) in mget()
1943 if (file_printf(ms, "%s", m->desc) == -1) in mget()
1952 if (!mconvert(ms, m, flip)) in mget()
2050 magiccheck(struct magic_set *ms, struct magic *m) in magiccheck() argument
2057 union VALUETYPE *p = &ms->ms_value; in magiccheck()
2134 file_magerror(ms, "cannot happen with float: " in magiccheck()
2167 file_magerror(ms, "cannot happen with double: " in magiccheck()
2198 if (ms->search.s == NULL) in magiccheck()
2208 if (m->str_range == 0 || ms->search.s_len < idx) in magiccheck()
2209 idx = ms->search.s_len; in magiccheck()
2210 found = CAST(const char *, php_memnstr(ms->search.s, in magiccheck()
2211 m->value.s, slen, ms->search.s + idx)); in magiccheck()
2216 idx = found - ms->search.s; in magiccheck()
2217 ms->search.offset += idx; in magiccheck()
2218 ms->search.rm_len = ms->search.s_len - idx; in magiccheck()
2224 if (slen + idx > ms->search.s_len) { in magiccheck()
2229 v = file_strncmp(m->value.s, ms->search.s + idx, slen, in magiccheck()
2230 ms->search.s_len - idx, m->str_flags); in magiccheck()
2232 ms->search.offset += idx; in magiccheck()
2233 ms->search.rm_len = ms->search.s_len - idx; in magiccheck()
2266 haystack = zend_string_init(ms->search.s, ms->search.s_len, 0); in magiccheck()
2292 ms->search.s += Z_LVAL_P(offset); /* this is where the match starts */ in magiccheck()
2293 ms->search.offset += Z_LVAL_P(offset); /* this is where the match starts as size_t */ in magiccheck()
2294 ms->search.rm_len = Z_STRLEN_P(match) /* This is the length of the matched pattern */; in magiccheck()
2314 return ms->ms_value.q != 0; in magiccheck()
2319 matched = der_cmp(ms, m); in magiccheck()
2321 if ((ms->flags & MAGIC_DEBUG) != 0) { in magiccheck()
2333 file_magerror(ms, "invalid type %d in magiccheck()", m->type); in magiccheck()
2337 v = file_signextend(ms, m, v); in magiccheck()
2341 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2349 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2358 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2368 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2376 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2387 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2395 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2405 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2416 if ((ms->flags & MAGIC_DEBUG) != 0) in magiccheck()
2425 file_magerror(ms, "cannot happen: invalid relation `%c'", in magiccheck()
2434 handle_annotation(struct magic_set *ms, struct magic *m, int firstline) in handle_annotation() argument
2436 if ((ms->flags & MAGIC_APPLE) && m->apple[0]) { in handle_annotation()
2437 if (print_sep(ms, firstline) == -1) in handle_annotation()
2439 if (file_printf(ms, "%.8s", m->apple) == -1) in handle_annotation()
2443 if ((ms->flags & MAGIC_EXTENSION) && m->ext[0]) { in handle_annotation()
2444 if (print_sep(ms, firstline) == -1) in handle_annotation()
2446 if (file_printf(ms, "%s", m->ext) == -1) in handle_annotation()
2450 if ((ms->flags & MAGIC_MIME_TYPE) && m->mimetype[0]) { in handle_annotation()
2453 if (print_sep(ms, firstline) == -1) in handle_annotation()
2455 if (varexpand(ms, buf, sizeof(buf), m->mimetype) == -1) in handle_annotation()
2459 if (file_printf(ms, "%s", p) == -1) in handle_annotation()
2467 print_sep(struct magic_set *ms, int firstline) in print_sep() argument
2475 return file_separator(ms); in print_sep()