SOURCES: file-offset.patch - official fix
arekm
arekm at pld-linux.org
Sat Nov 25 19:16:46 CET 2006
Author: arekm Date: Sat Nov 25 18:16:46 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- official fix
---- Files affected:
SOURCES:
file-offset.patch (1.2 -> 1.3)
---- Diffs:
================================================================
Index: SOURCES/file-offset.patch
diff -u SOURCES/file-offset.patch:1.2 SOURCES/file-offset.patch:1.3
--- SOURCES/file-offset.patch:1.2 Sat Nov 25 00:30:30 2006
+++ SOURCES/file-offset.patch Sat Nov 25 19:16:40 2006
@@ -1,42 +1,201 @@
-diff -urN file-4.18.org/src/apprentice.c file-4.18/src/apprentice.c
---- file-4.18.org/src/apprentice.c 2006-10-31 20:37:17.000000000 +0100
-+++ file-4.18/src/apprentice.c 2006-11-25 01:27:51.000000000 +0100
-@@ -623,7 +623,7 @@
- }
-
- /* get offset, then skip over it */
-- m->offset = (uint32_t)strtoul(l, &t, 0);
-+ m->dummy4 = m->offset = (uint32_t)strtoul(l, &t, 0);
- if (l == t)
- if (ms->flags & MAGIC_CHECK)
- file_magwarn(ms, "offset `%s' invalid", l);
-@@ -1487,7 +1487,7 @@
- bs1(struct magic *m)
+diff -urN file-4.18.org/src/file.h file-4.18.fixed/src/file.h
+--- file-4.18.org/src/file.h 2006-10-31 21:59:39.000000000 +0100
++++ file-4.18.fixed/src/file.h 2006-11-25 18:28:54.000000000 +0100
+@@ -282,6 +282,7 @@
+ char *pbuf;
+ size_t psize;
+ } o;
++ uint32_t offset;
+ int error;
+ int flags;
+ int haderr;
+diff -urN file-4.18.org/src/softmagic.c file-4.18.fixed/src/softmagic.c
+--- file-4.18.org/src/softmagic.c 2006-10-31 20:37:17.000000000 +0100
++++ file-4.18.fixed/src/softmagic.c 2006-11-25 18:28:54.000000000 +0100
+@@ -50,7 +50,7 @@
+ private int32_t mprint(struct magic_set *, union VALUETYPE *, struct magic *);
+ private void mdebug(uint32_t, const char *, size_t);
+ private int mcopy(struct magic_set *, union VALUETYPE *, int, int,
+- const unsigned char *, size_t, size_t);
++ const unsigned char *, uint32_t, size_t);
+ private int mconvert(struct magic_set *, union VALUETYPE *, struct magic *);
+ private int check_mem(struct magic_set *, unsigned int);
+ private int print_sep(struct magic_set *, int);
+@@ -119,6 +119,7 @@
+
+ for (magindex = 0; magindex < nmagic; magindex++) {
+ /* if main entry matches, print it... */
++ ms->offset = magic[magindex].offset;
+ int flush = !mget(ms, &p, s, &magic[magindex], nbytes,
+ cont_level);
+ if (flush) {
+@@ -174,16 +175,16 @@
+ */
+ cont_level = magic[magindex].cont_level;
+ }
+- oldoff = magic[magindex].offset;
++ ms->offset = magic[magindex].offset;
+ if (magic[magindex].flag & OFFADD) {
+- magic[magindex].offset +=
++ ms->offset +=
+ ms->c.off[cont_level - 1];
+ }
+
+ flush = !mget(ms, &p, s, &magic[magindex], nbytes,
+ cont_level);
+ if (flush && magic[magindex].reln != '!')
+- goto done;
++ continue;
+
+ switch (flush ? 1 : magiccheck(ms, &p, &magic[magindex])) {
+ case -1:
+@@ -228,8 +229,6 @@
+ if (check_mem(ms, ++cont_level) == -1)
+ return -1;
+ }
+-done:
+- magic[magindex].offset = oldoff;
+ }
+ firstline = 0;
+ returnval = 1;
+@@ -304,7 +303,7 @@
+ return -1;
+ break;
+ }
+- t = m->offset + sizeof(char);
++ t = ms->offset + sizeof(char);
+ break;
+
+ case FILE_SHORT:
+@@ -325,7 +324,7 @@
+ return -1;
+ break;
+ }
+- t = m->offset + sizeof(short);
++ t = ms->offset + sizeof(short);
+ break;
+
+ case FILE_LONG:
+@@ -347,7 +346,7 @@
+ return -1;
+ break;
+ }
+- t = m->offset + sizeof(int32_t);
++ t = ms->offset + sizeof(int32_t);
+ break;
+
+ case FILE_QUAD:
+@@ -356,7 +355,7 @@
+ v = file_signextend(ms, m, p->q);
+ if (file_printf(ms, m->desc, (uint64_t) v) == -1)
+ return -1;
+- t = m->offset + sizeof(int64_t);
++ t = ms->offset + sizeof(int64_t);
+ break;
+ case FILE_STRING:
+ case FILE_PSTRING:
+@@ -365,7 +364,7 @@
+ if (m->reln == '=' || m->reln == '!') {
+ if (file_printf(ms, m->desc, m->value.s) == -1)
+ return -1;
+- t = m->offset + m->vallen;
++ t = ms->offset + m->vallen;
+ }
+ else {
+ if (*m->value.s == '\0') {
+@@ -375,7 +374,7 @@
+ }
+ if (file_printf(ms, m->desc, p->s) == -1)
+ return -1;
+- t = m->offset + strlen(p->s);
++ t = ms->offset + strlen(p->s);
+ }
+ break;
+
+@@ -385,7 +384,7 @@
+ case FILE_MEDATE:
+ if (file_printf(ms, m->desc, file_fmttime(p->l, 1)) == -1)
+ return -1;
+- t = m->offset + sizeof(time_t);
++ t = ms->offset + sizeof(time_t);
+ break;
+
+ case FILE_LDATE:
+@@ -394,7 +393,7 @@
+ case FILE_MELDATE:
+ if (file_printf(ms, m->desc, file_fmttime(p->l, 0)) == -1)
+ return -1;
+- t = m->offset + sizeof(time_t);
++ t = ms->offset + sizeof(time_t);
+ break;
+
+ case FILE_QDATE:
+@@ -403,7 +402,7 @@
+ if (file_printf(ms, m->desc, file_fmttime((uint32_t)p->q, 1))
+ == -1)
+ return -1;
+- t = m->offset + sizeof(uint64_t);
++ t = ms->offset + sizeof(uint64_t);
+ break;
+
+ case FILE_QLDATE:
+@@ -412,19 +411,19 @@
+ if (file_printf(ms, m->desc, file_fmttime((uint32_t)p->q, 0))
+ == -1)
+ return -1;
+- t = m->offset + sizeof(uint64_t);
++ t = ms->offset + sizeof(uint64_t);
+ break;
+
+ case FILE_REGEX:
+ if (file_printf(ms, m->desc, p->s) == -1)
+ return -1;
+- t = m->offset + strlen(p->s);
++ t = ms->offset + strlen(p->s);
+ break;
+
+ case FILE_SEARCH:
+ if (file_printf(ms, m->desc, m->value.s) == -1)
+ return -1;
+- t = m->offset + m->vallen;
++ t = ms->offset + m->vallen;
+ break;
+
+ default:
+@@ -610,7 +609,7 @@
+
+ private int
+ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir,
+- const unsigned char *s, size_t offset, size_t nbytes)
++ const unsigned char *s, uint32_t offset, size_t nbytes)
{
- m->cont_level = swap2(m->cont_level);
-- m->offset = swap4((uint32_t)m->offset);
-+ m->dummy4 = m->offset = swap4((uint32_t)m->offset);
- m->in_offset = swap4((uint32_t)m->in_offset);
- if (!IS_STRING(m->type))
- m->value.q = swap8(m->value.q);
-diff -urN file-4.18.org/src/funcs.c file-4.18/src/funcs.c
---- file-4.18.org/src/funcs.c 2006-10-31 20:37:17.000000000 +0100
-+++ file-4.18/src/funcs.c 2006-11-25 01:27:51.000000000 +0100
-@@ -151,10 +151,16 @@
- protected int
- file_reset(struct magic_set *ms)
+ if (type == FILE_REGEX && indir == 0) {
+ /*
+@@ -692,7 +691,7 @@
+ mget(struct magic_set *ms, union VALUETYPE *p, const unsigned char *s,
+ struct magic *m, size_t nbytes, unsigned int cont_level)
{
-+ struct mlist *ml;
- if (ms->mlist == NULL) {
- file_error(ms, 0, "no magic files loaded");
+- uint32_t offset = m->offset;
++ uint32_t offset = ms->offset;
+
+ if (mcopy(ms, p, m->type, m->flag & INDIR, s, offset, nbytes) == -1)
return -1;
- }
-+ for (ml = ms->mlist->next; ml != ms->mlist; ml = ml->next) {
-+ uint32_t magindex;
-+ for (magindex = 0; magindex < ml->nmagic; magindex++)
-+ ml->magic[magindex].offset = ml->magic[magindex].dummy4;
-+ }
- ms->o.ptr = ms->o.buf;
- ms->haderr = 0;
- ms->error = -1;
+@@ -1169,7 +1168,7 @@
+ if (m->flag & INDIROFFADD) offset += ms->c.off[cont_level-1];
+ if (mcopy(ms, p, m->type, 0, s, offset, nbytes) == -1)
+ return -1;
+- m->offset = offset;
++ ms->offset = offset;
+
+ if ((ms->flags & MAGIC_DEBUG) != 0) {
+ mdebug(offset, (char *)(void *)p,
+@@ -1381,7 +1380,7 @@
+ while (len-- > 0 && (v = *b++ - *a++) == 0)
+ continue;
+ if (!v) {
+- m->offset += range - 1;
++ ms->offset += range - 1;
+ break;
+ }
+ if (range + slen >= p->search.buflen)
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/file-offset.patch?r1=1.2&r2=1.3&f=u
More information about the pld-cvs-commit
mailing list