1
1
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
2
2
--- libmagic.orig/apprentice.c 2022-09-13 20:46:07.000000000 +0200
3
- +++ libmagic/apprentice.c 2022-10-02 15:56:16.390142333 +0200
4
- @@ -48,7 +48,6 @@
3
+ +++ libmagic/apprentice.c 2022-10-02 20:39:14.879183555 +0200
4
+ @@ -48,7 +48,9 @@
5
5
#ifdef QUICK
6
6
#include <sys/mman.h>
7
7
#endif
8
- - #include <dirent.h>
8
+ + #ifdef HAVE_DIRENT_H
9
+ #include <dirent.h>
10
+ + #endif
9
11
#include <limits.h>
10
12
#ifdef HAVE_BYTESWAP_H
11
13
#include <byteswap.h>
12
- @@ -147,10 +146 ,7 @@
14
+ @@ -147,10 +149 ,7 @@
13
15
#endif
14
16
15
17
private char *mkdbname(struct magic_set *, const char *, int);
@@ -20,7 +22,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
20
22
private void apprentice_unmap(struct magic_map *);
21
23
private int apprentice_compile(struct magic_set *, struct magic_map *,
22
24
const char *);
23
- @@ -186,6 +182 ,8 @@
25
+ @@ -186,6 +185 ,8 @@
24
26
{ NULL, 0, NULL }
25
27
};
26
28
@@ -29,7 +31,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
29
31
#ifdef COMPILE_ONLY
30
32
31
33
int main(int, char *[]);
32
- @@ -446,21 +444 ,13 @@
34
+ @@ -446,21 +447 ,13 @@
33
35
struct mlist *ml;
34
36
35
37
mlp->map = NULL;
@@ -53,7 +55,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
53
55
mlp->prev->next = ml;
54
56
ml->prev = mlp->prev;
55
57
ml->next = mlp;
56
- @@ -539,13 +529 ,19 @@
58
+ @@ -539,13 +532 ,19 @@
57
59
return;
58
60
for (i = 0; i < MAGIC_SETS; i++)
59
61
mlist_free(ms->mlist[i]);
@@ -77,7 +79,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
77
79
}
78
80
79
81
protected struct magic_set *
80
- @@ -554,7 +550 ,7 @@
82
+ @@ -554,7 +553 ,7 @@
81
83
struct magic_set *ms;
82
84
size_t i, len;
83
85
@@ -86,7 +88,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
86
88
sizeof(struct magic_set)))) == NULL)
87
89
return NULL;
88
90
89
- @@ -567,7 +563 ,7 @@
91
+ @@ -567,7 +566 ,7 @@
90
92
ms->o.blen = 0;
91
93
len = (ms->c.len = 10) * sizeof(*ms->c.li);
92
94
@@ -95,7 +97,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
95
97
goto free;
96
98
97
99
ms->event_flags = 0;
98
- @@ -597,42 +593 ,28 @@
100
+ @@ -597,42 +596 ,28 @@
99
101
private void
100
102
apprentice_unmap(struct magic_map *map)
101
103
{
@@ -150,7 +152,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
150
152
return NULL;
151
153
}
152
154
mlist->next = mlist->prev = mlist;
153
- @@ -653,21 +635 ,9 @@
155
+ @@ -653,21 +638 ,9 @@
154
156
private void
155
157
mlist_free_one(struct mlist *ml)
156
158
{
@@ -173,7 +175,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
173
175
}
174
176
175
177
private void
176
- @@ -686,51 +656 ,6 @@
178
+ @@ -686,51 +659 ,6 @@
177
179
mlist_free_one(mlist);
178
180
}
179
181
@@ -225,7 +227,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
225
227
/* const char *fn: list of magic files and directories */
226
228
protected int
227
229
file_apprentice(struct magic_set *ms, const char *fn, int action)
228
- @@ -741,12 +666 ,28 @@
230
+ @@ -741,12 +669 ,28 @@
229
231
230
232
(void)file_reset(ms, 0);
231
233
@@ -255,7 +257,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
255
257
file_oomem(ms, strlen(fn));
256
258
return -1;
257
259
}
258
- @@ -759,7 +700 ,7 @@
260
+ @@ -759,7 +703 ,7 @@
259
261
mlist_free(ms->mlist[j]);
260
262
ms->mlist[j] = NULL;
261
263
}
@@ -264,7 +266,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
264
266
return -1;
265
267
}
266
268
}
267
- @@ -776,7 +717 ,7 @@
269
+ @@ -776,7 +720 ,7 @@
268
270
fn = p;
269
271
}
270
272
@@ -273,7 +275,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
273
275
274
276
if (errs == -1) {
275
277
for (i = 0; i < MAGIC_SETS; i++) {
276
- @@ -1289,7 +1230 ,7 @@
278
+ @@ -1289,7 +1233 ,7 @@
277
279
278
280
size_t incr = mset[i].max + ALLOC_INCR;
279
281
if ((mp = CAST(struct magic_entry *,
@@ -282,7 +284,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
282
284
NULL) {
283
285
file_oomem(ms, sizeof(*mp) * incr);
284
286
return -1;
285
- @@ -1312,13 +1253 ,19 @@
287
+ @@ -1312,13 +1256 ,19 @@
286
288
load_1(struct magic_set *ms, int action, const char *fn, int *errs,
287
289
struct magic_entry_set *mset)
288
290
{
@@ -306,7 +308,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
306
308
if (errno != ENOENT)
307
309
file_error(ms, errno, "cannot read magic file `%s'",
308
310
fn);
309
- @@ -1328,8 +1275 ,7 @@
311
+ @@ -1328,8 +1278 ,7 @@
310
312
311
313
memset(&me, 0, sizeof(me));
312
314
/* read and parse this file */
@@ -316,7 +318,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
316
318
if (len == 0) /* null line, garbage, etc */
317
319
continue;
318
320
if (line[len - 1] == '\n') {
319
- @@ -1388,8 +1334 ,8 @@
321
+ @@ -1388,8 +1337 ,8 @@
320
322
}
321
323
if (me.mp)
322
324
(void)addentry(ms, &me, mset);
@@ -327,7 +329,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
327
329
}
328
330
329
331
/*
330
- @@ -1474,7 +1420 ,7 @@
332
+ @@ -1474,7 +1423 ,7 @@
331
333
}
332
334
333
335
slen = sizeof(**ma) * mentrycount;
@@ -336,7 +338,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
336
338
file_oomem(ms, slen);
337
339
return -1;
338
340
}
339
- @@ -1496,8 +1442 ,8 @@
341
+ @@ -1496,8 +1445 ,8 @@
340
342
if (me == NULL)
341
343
return;
342
344
for (i = 0; i < nme; i++)
@@ -347,7 +349,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
347
349
}
348
350
349
351
private struct magic_map *
350
- @@ -1506,18 +1452 ,19 @@
352
+ @@ -1506,18 +1455 ,19 @@
351
353
int errs = 0;
352
354
uint32_t i, j;
353
355
size_t files = 0, maxfiles = 0;
@@ -372,7 +374,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
372
374
{
373
375
file_oomem(ms, sizeof(*map));
374
376
return NULL;
375
- @@ -1529,52 +1476 ,50 @@
377
+ @@ -1529,52 +1479 ,50 @@
376
378
(void)fprintf(stderr, "%s\n", usg_hdr);
377
379
378
380
/* load directory or file */
@@ -444,15 +446,15 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
444
446
}
445
447
} else
446
448
load_1(ms, action, fn, &errs, mset);
447
- @@ -1612,7 +1557 ,6 @@
449
+ @@ -1612,7 +1560 ,6 @@
448
450
}
449
451
450
452
out:
451
453
- free(filearr);
452
454
for (j = 0; j < MAGIC_SETS; j++)
453
455
magic_entry_free(mset[j].me, mset[j].count);
454
456
455
- @@ -2060,7 +2004 ,7 @@
457
+ @@ -2060,7 +2007 ,7 @@
456
458
if (me->cont_count == me->max_count) {
457
459
struct magic *nm;
458
460
size_t cnt = me->max_count + ALLOC_CHUNK;
@@ -461,7 +463,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
461
463
sizeof(*nm) * cnt))) == NULL) {
462
464
file_oomem(ms, sizeof(*nm) * cnt);
463
465
return -1;
464
- @@ -2075,7 +2019 ,7 @@
466
+ @@ -2075,7 +2022 ,7 @@
465
467
static const size_t len = sizeof(*m) * ALLOC_CHUNK;
466
468
if (me->mp != NULL)
467
469
return 1;
@@ -470,7 +472,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
470
472
file_oomem(ms, len);
471
473
return -1;
472
474
}
473
- @@ -2301,7 +2245 ,7 @@
475
+ @@ -2301,7 +2248 ,7 @@
474
476
475
477
m->mask_op = 0;
476
478
if (*l == '~') {
@@ -479,7 +481,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
479
481
m->mask_op |= FILE_OPINVERSE;
480
482
else if (ms->flags & MAGIC_CHECK)
481
483
file_magwarn(ms, "'~' invalid for string types");
482
- @@ -2310,7 +2254 ,7 @@
484
+ @@ -2310,7 +2257 ,7 @@
483
485
m->str_range = 0;
484
486
m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0;
485
487
if ((op = get_op(*l)) != -1) {
@@ -488,7 +490,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
488
490
int r;
489
491
490
492
if (op != FILE_OPDIVIDE) {
491
- @@ -2493,8 +2437 ,7 @@
493
+ @@ -2493,8 +2440 ,7 @@
492
494
493
495
private int
494
496
parse_extra(struct magic_set *ms, struct magic_entry *me, const char *line,
@@ -498,7 +500,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
498
500
{
499
501
size_t i;
500
502
const char *l = line;
501
- @@ -2852,13 +2795 ,19 @@
503
+ @@ -2852,13 +2798 ,19 @@
502
504
return -1;
503
505
}
504
506
if (m->type == FILE_REGEX) {
@@ -524,7 +526,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
524
526
}
525
527
return 0;
526
528
default:
527
- @@ -3230,120 +3179 ,83 @@
529
+ @@ -3230,120 +3182 ,83 @@
528
530
}
529
531
530
532
/*
@@ -688,7 +690,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
688
690
}
689
691
needsbyteswap = 1;
690
692
} else
691
- @@ -3353,17 +3265 ,29 @@
693
+ @@ -3353,17 +3268 ,29 @@
692
694
else
693
695
version = ptr[1];
694
696
if (version != VERSIONNO) {
@@ -727,7 +729,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
727
729
}
728
730
map->magic[0] = CAST(struct magic *, map->p) + 1;
729
731
nentries = 0;
730
- @@ -3376,15 +3300 ,29 @@
732
+ @@ -3376,15 +3303 ,29 @@
731
733
map->magic[i + 1] = map->magic[i] + map->nmagic[i];
732
734
nentries += map->nmagic[i];
733
735
}
@@ -760,22 +762,16 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
760
762
}
761
763
762
764
/*
763
- @@ -3395,7 +3333,6 @@
765
+ @@ -3395,7 +3336,7 @@
764
766
{
765
767
static const size_t nm = sizeof(*map->nmagic) * MAGIC_SETS;
766
768
static const size_t m = sizeof(**map->magic);
767
769
- int fd = -1;
770
+ + php_stream *stream;
768
771
size_t len;
769
772
char *dbname;
770
773
int rv = -1;
771
- @@ -3404,14 +3341,17 @@
772
- struct magic m;
773
- uint32_t h[2 + MAGIC_SETS];
774
- } hdr;
775
- + php_stream *stream;
776
-
777
- dbname = mkdbname(ms, fn, 1);
778
-
774
+ @@ -3410,8 +3351,10 @@
779
775
if (dbname == NULL)
780
776
goto out;
781
777
@@ -788,7 +784,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
788
784
file_error(ms, errno, "cannot open `%s'", dbname);
789
785
goto out;
790
786
}
791
- @@ -3420,26 +3360 ,25 @@
787
+ @@ -3420,26 +3363 ,25 @@
792
788
hdr.h[1] = VERSIONNO;
793
789
memcpy(hdr.h + 2, map->nmagic, nm);
794
790
@@ -809,21 +805,21 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
809
805
}
810
806
}
811
807
812
- + if (stream) {
813
- + php_stream_close(stream);
814
- + }
815
808
rv = 0;
816
809
- out2:
817
810
- if (fd != -1)
818
811
- (void)close(fd);
812
+ + if (stream) {
813
+ + php_stream_close(stream);
814
+ + }
819
815
out:
820
816
- apprentice_unmap(map);
821
817
- free(dbname);
822
818
+ efree(dbname);
823
819
return rv;
824
820
}
825
821
826
- @@ -3473,17 +3412 ,18 @@
822
+ @@ -3473,17 +3415 ,18 @@
827
823
q++;
828
824
/* Compatibility with old code that looked in .mime */
829
825
if (ms->flags & MAGIC_MIME) {
@@ -849,7 +845,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
849
845
850
846
/* Compatibility with old code that looked in .mime */
851
847
if (strstr(fn, ".mime") != NULL)
852
- @@ -3605,7 +3545 ,7 @@
848
+ @@ -3605,7 +3548 ,7 @@
853
849
m->offset = swap4(CAST(uint32_t, m->offset));
854
850
m->in_offset = swap4(CAST(uint32_t, m->in_offset));
855
851
m->lineno = swap4(CAST(uint32_t, m->lineno));
@@ -858,7 +854,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
858
854
m->str_range = swap4(m->str_range);
859
855
m->str_flags = swap4(m->str_flags);
860
856
}
861
- @@ -3702,7 +3642 ,6 @@
857
+ @@ -3702,7 +3645 ,6 @@
862
858
continue;
863
859
if (strcmp(ma[i].value.s, name) == 0) {
864
860
v->magic = &ma[i];
@@ -1205,27 +1201,6 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
1205
1201
#endif
1206
1202
#ifdef __DJGPP__
1207
1203
#define timespec timeval
1208
- diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
1209
- --- libmagic.orig/cdf_time.c 2022-09-13 20:34:35.000000000 +0200
1210
- +++ libmagic/cdf_time.c 2022-10-02 15:56:16.390142333 +0200
1211
- @@ -152,7 +152,7 @@
1212
- #endif
1213
- #ifdef notyet
1214
- struct tm tm;
1215
- - if (gmtime_r(&ts->ts_sec, &tm) == NULL) {
1216
- + if (php_gmtime_r(&ts->ts_sec, &tm) == NULL) {
1217
- errno = EINVAL;
1218
- return -1;
1219
- }
1220
- @@ -168,7 +168,7 @@
1221
- char *
1222
- cdf_ctime(const time_t *sec, char *buf)
1223
- {
1224
- - char *ptr = ctime_r(sec, buf);
1225
- + char *ptr = php_ctime_r(sec, buf);
1226
- if (ptr != NULL)
1227
- return buf;
1228
- #ifdef WIN32
1229
1204
diff -u libmagic.orig/compress.c libmagic/compress.c
1230
1205
--- libmagic.orig/compress.c 2022-09-13 20:34:42.000000000 +0200
1231
1206
+++ libmagic/compress.c 2022-10-02 15:56:16.390142333 +0200
@@ -2665,7 +2640,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
2665
2640
}
2666
2641
return file_getbuffer(ms);
2667
2642
diff -u libmagic.orig/magic.h libmagic/magic.h
2668
- --- libmagic.orig/magic.h 2022-10-02 18:25:10.305221809 +0200
2643
+ --- libmagic.orig/magic.h 2022-10-02 20:46:41.085566920 +0200
2669
2644
+++ libmagic/magic.h 2022-10-02 15:56:16.394142341 +0200
2670
2645
@@ -126,6 +126,7 @@
2671
2646
0 commit comments