]> git.pld-linux.org Git - packages/file.git/commitdiff
- official fix
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Sat, 25 Nov 2006 18:16:40 +0000 (18:16 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    file-offset.patch -> 1.3

file-offset.patch

index 0c11178309fea2d5ce92948eaaca1f1111132bf6..562428b0d85df1f4f7a8accd5194e6ca6aeb97f2 100644 (file)
-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)
 
This page took 0.059421 seconds and 4 git commands to generate.