diff options
Diffstat (limited to 'contrib/file/src/der.c')
-rw-r--r-- | contrib/file/src/der.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/contrib/file/src/der.c b/contrib/file/src/der.c index 220ad93584d9..3a036517d019 100644 --- a/contrib/file/src/der.c +++ b/contrib/file/src/der.c @@ -35,7 +35,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: der.c,v 1.22 2022/01/10 14:15:08 christos Exp $") +FILE_RCSID("@(#)$File: der.c,v 1.27 2022/09/24 20:30:13 christos Exp $") #endif #else #define SIZE_T_FORMAT "z" @@ -270,7 +270,7 @@ der_offs(struct magic_set *ms, struct magic *m, size_t nbytes) DPRINTF(("%s: bad tag 1\n", __func__)); return -1; } - DPRINTF(("%s1: %d %" SIZE_T_FORMAT "u %u\n", __func__, ms->offset, + DPRINTF(("%s1: %u %" SIZE_T_FORMAT "u %d\n", __func__, ms->offset, offs, m->offset)); uint32_t tlen = getlength(b, &offs, len); @@ -278,7 +278,7 @@ der_offs(struct magic_set *ms, struct magic *m, size_t nbytes) DPRINTF(("%s: bad tag 2\n", __func__)); return -1; } - DPRINTF(("%s2: %d %" SIZE_T_FORMAT "u %u\n", __func__, ms->offset, + DPRINTF(("%s2: %u %" SIZE_T_FORMAT "u %u\n", __func__, ms->offset, offs, tlen)); offs += ms->offset + m->offset; @@ -286,14 +286,14 @@ der_offs(struct magic_set *ms, struct magic *m, size_t nbytes) #ifdef DEBUG_DER size_t i; for (i = 0; i < m->cont_level; i++) - printf("cont_level[%" SIZE_T_FORMAT "u] = %u\n", i, + printf("cont_level[%" SIZE_T_FORMAT "u] = %d\n", i, ms->c.li[i].off); #endif if (m->cont_level != 0) { if (offs + tlen > nbytes) return -1; ms->c.li[m->cont_level - 1].off = CAST(int, offs + tlen); - DPRINTF(("cont_level[%u] = %u\n", m->cont_level - 1, + DPRINTF(("cont_level[%u] = %d\n", m->cont_level - 1, ms->c.li[m->cont_level - 1].off)); } return CAST(int32_t, offs); @@ -316,7 +316,7 @@ der_cmp(struct magic_set *ms, struct magic *m) return -1; } - DPRINTF(("%s1: %d %" SIZE_T_FORMAT "u %u\n", __func__, ms->offset, + DPRINTF(("%s1: %d %" SIZE_T_FORMAT "u %d\n", __func__, ms->offset, offs, m->offset)); tlen = getlength(b, &offs, len); @@ -331,21 +331,26 @@ der_cmp(struct magic_set *ms, struct magic *m) buf, s); size_t slen = strlen(buf); - if (strncmp(buf, s, slen) != 0) + if (strncmp(buf, s, slen) != 0) { + DPRINTF(("%s: no string match %s != %s\n", __func__, buf, s)); return 0; + } s += slen; again: switch (*s) { case '\0': + DPRINTF(("%s: EOF match\n", __func__)); return 1; case '=': s++; goto val; default: - if (!isdigit(CAST(unsigned char, *s))) + if (!isdigit(CAST(unsigned char, *s))) { + DPRINTF(("%s: no digit %c\n", __func__, *s)); return 0; + } slen = 0; do @@ -354,8 +359,10 @@ again: if ((ms->flags & MAGIC_DEBUG) != 0) fprintf(stderr, "%s: len %" SIZE_T_FORMAT "u %u\n", __func__, slen, tlen); - if (tlen != slen) + if (tlen != slen) { + DPRINTF(("%s: len %u != %zu\n", __func__, tlen, slen)); return 0; + } goto again; } val: @@ -364,9 +371,12 @@ val: der_data(buf, sizeof(buf), tag, b + offs, tlen); if ((ms->flags & MAGIC_DEBUG) != 0) fprintf(stderr, "%s: data %s %s\n", __func__, buf, s); - if (strcmp(buf, s) != 0 && strcmp("x", s) != 0) + if (strcmp(buf, s) != 0 && strcmp("x", s) != 0) { + DPRINTF(("%s: no string match %s != %s\n", __func__, buf, s)); return 0; + } strlcpy(ms->ms_value.s, buf, sizeof(ms->ms_value.s)); + DPRINTF(("%s: complete match\n", __func__)); return 1; } #endif |