1
1
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
2
2
--- libmagic.orig/apprentice.c 2019-02-20 03:35:27.000000000 +0100
3
- +++ libmagic/apprentice.c 2020-08-21 17:02:45.104803600 +0200
3
+ +++ libmagic/apprentice.c 2020-08-25 15:13:14.549715400 +0200
4
4
@@ -29,6 +29,8 @@
5
5
* apprentice - make one pass through /etc/magic, learning its secrets.
6
6
*/
@@ -635,19 +635,19 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
635
635
- if (rc) {
636
636
- if (ms->flags & MAGIC_CHECK)
637
637
- file_regerror(&rx, rc, ms);
638
- + zval pattern;
638
+ + zend_string * pattern;
639
639
+ int options = 0;
640
640
+ pcre_cache_entry *pce;
641
641
+
642
- + convert_libmagic_pattern(& pattern, m->value.s, strlen(m->value.s), options);
642
+ + pattern = convert_libmagic_pattern( m->value.s, strlen(m->value.s), options);
643
643
+
644
- + if ((pce = pcre_get_compiled_regex_cache(Z_STR( pattern) )) == NULL) {
645
- + zval_ptr_dtor_nogc(& pattern);
644
+ + if ((pce = pcre_get_compiled_regex_cache(pattern)) == NULL) {
645
+ + zend_string_release( pattern);
646
646
+ return -1;
647
647
}
648
648
- file_regfree(&rx);
649
649
- return rc ? -1 : 0;
650
- + zval_ptr_dtor_nogc(& pattern);
650
+ + zend_string_release( pattern);
651
651
+
652
652
+ return 0;
653
653
}
@@ -974,7 +974,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
974
974
}
975
975
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
976
976
--- libmagic.orig/ascmagic.c 2019-05-07 04:27:11.000000000 +0200
977
- +++ libmagic/ascmagic.c 2020-08-21 17:02:41.887436300 +0200
977
+ +++ libmagic/ascmagic.c 2020-08-24 14:22:57.162970900 +0200
978
978
@@ -51,7 +51,7 @@
979
979
#define ISSPC(x) ((x) == ' ' || (x) == '\t' || (x) == '\r' || (x) == '\n' \
980
980
|| (x) == 0x85 || (x) == '\f')
@@ -1640,7 +1640,7 @@ diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
1640
1640
CAST(int, elf_getu16(swap, elfhdr.e_shstrndx)),
1641
1641
diff -u libmagic.orig/encoding.c libmagic/encoding.c
1642
1642
--- libmagic.orig/encoding.c 2019-04-15 18:48:41.000000000 +0200
1643
- +++ libmagic/encoding.c 2020-08-21 17:02:41.890255300 +0200
1643
+ +++ libmagic/encoding.c 2020-08-24 14:22:57.172802500 +0200
1644
1644
@@ -44,14 +44,14 @@
1645
1645
#include <stdlib.h>
1646
1646
@@ -1830,7 +1830,7 @@ diff -u libmagic.orig/encoding.c libmagic/encoding.c
1830
1830
return 0;
1831
1831
diff -u libmagic.orig/file.h libmagic/file.h
1832
1832
--- libmagic.orig/file.h 2019-05-07 04:27:11.000000000 +0200
1833
- +++ libmagic/file.h 2020-08-21 17:02:41.894108600 +0200
1833
+ +++ libmagic/file.h 2020-08-25 15:11:06.907695900 +0200
1834
1834
@@ -33,18 +33,9 @@
1835
1835
#ifndef __file_h__
1836
1836
#define __file_h__
@@ -2004,7 +2004,7 @@ diff -u libmagic.orig/file.h libmagic/file.h
2004
2004
size_t *);
2005
2005
protected size_t file_pstring_length_size(const struct magic *);
2006
2006
protected size_t file_pstring_get_length(const struct magic *, const char *);
2007
- @@ -513,34 +498,13 @@
2007
+ @@ -513,34 +498,12 @@
2008
2008
size_t);
2009
2009
#endif /* __EMX__ */
2010
2010
@@ -2037,12 +2037,11 @@ diff -u libmagic.orig/file.h libmagic/file.h
2037
2037
- int);
2038
2038
- protected void file_regfree(file_regex_t *);
2039
2039
- protected void file_regerror(file_regex_t *, int, struct magic_set *);
2040
- + public void
2041
- + convert_libmagic_pattern(zval *pattern, char *val, size_t len, uint32_t options);
2040
+ + public zend_string* convert_libmagic_pattern(char *val, size_t len, uint32_t options);
2042
2041
2043
2042
typedef struct {
2044
2043
char *buf;
2045
- @@ -550,28 +514 ,13 @@
2044
+ @@ -550,28 +513 ,13 @@
2046
2045
protected file_pushbuf_t *file_push_buffer(struct magic_set *);
2047
2046
protected char *file_pop_buffer(struct magic_set *, file_pushbuf_t *);
2048
2047
@@ -2073,7 +2072,7 @@ diff -u libmagic.orig/file.h libmagic/file.h
2073
2072
size_t strlcat(char *, const char *, size_t);
2074
2073
#endif
2075
2074
#ifndef HAVE_STRCASESTR
2076
- @@ -587,39 +536 ,6 @@
2075
+ @@ -587,39 +535 ,6 @@
2077
2076
#ifndef HAVE_ASCTIME_R
2078
2077
char *asctime_r(const struct tm *, char *);
2079
2078
#endif
@@ -2113,7 +2112,7 @@ diff -u libmagic.orig/file.h libmagic/file.h
2113
2112
2114
2113
#if defined(HAVE_MMAP) && defined(HAVE_SYS_MMAN_H) && !defined(QUICK)
2115
2114
#define QUICK
2116
- @@ -645,6 +561 ,18 @@
2115
+ @@ -645,6 +560 ,18 @@
2117
2116
#else
2118
2117
#define FILE_RCSID(id)
2119
2118
#endif
@@ -2427,7 +2426,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
2427
2426
case S_IFSOCK:
2428
2427
diff -u libmagic.orig/funcs.c libmagic/funcs.c
2429
2428
--- libmagic.orig/funcs.c 2019-05-07 04:27:11.000000000 +0200
2430
- +++ libmagic/funcs.c 2020-08-07 20:46:25.164794200 +0200
2429
+ +++ libmagic/funcs.c 2020-08-25 15:11:06.872908800 +0200
2431
2430
@@ -31,87 +31,80 @@
2432
2431
#endif /* lint */
2433
2432
@@ -2686,25 +2685,25 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
2686
2685
- nm++;
2687
2686
- }
2688
2687
- rv = nm;
2689
- + zval patt ;
2688
+ + zend_string *pattern ;
2690
2689
+ uint32_t opts = 0;
2691
2690
+ pcre_cache_entry *pce;
2692
2691
+ zend_string *res;
2693
2692
+ zend_string *repl;
2694
2693
+ size_t rep_cnt = 0;
2695
2694
+
2696
2695
+ opts |= PCRE2_MULTILINE;
2697
- + convert_libmagic_pattern(&patt, (char*)pat, strlen(pat), opts);
2698
- + if ((pce = pcre_get_compiled_regex_cache_ex(Z_STR(patt) , 0)) == NULL) {
2699
- + zval_ptr_dtor(&patt );
2696
+ + pattern = convert_libmagic_pattern((char*)pat, strlen(pat), opts);
2697
+ + if ((pce = pcre_get_compiled_regex_cache_ex(pattern , 0)) == NULL) {
2698
+ + zend_string_release(pattern );
2700
2699
+ rep_cnt = -1;
2701
2700
+ goto out;
2702
2701
}
2703
2702
- out:
2704
2703
- file_regfree(&rx);
2705
2704
- return rv;
2706
2705
- }
2707
- + zval_ptr_dtor(&patt );
2706
+ + zend_string_release(pattern );
2708
2707
2709
2708
- protected int
2710
2709
- file_regcomp(file_regex_t *rx, const char *pat, int flags)
@@ -3263,7 +3262,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
3263
3262
public const char *
3264
3263
magic_error(struct magic_set *ms)
3265
3264
diff -u libmagic.orig/magic.h libmagic/magic.h
3266
- --- libmagic.orig/magic.h 2020-08-21 17:03:04.181135100 +0200
3265
+ --- libmagic.orig/magic.h 2020-08-25 15:19:32.346097700 +0200
3267
3266
+++ libmagic/magic.h 2020-04-07 22:25:10.548560600 +0200
3268
3267
@@ -124,6 +124,7 @@
3269
3268
@@ -3275,7 +3274,7 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
3275
3274
3276
3275
diff -u libmagic.orig/print.c libmagic/print.c
3277
3276
--- libmagic.orig/print.c 2019-03-12 21:43:05.000000000 +0100
3278
- +++ libmagic/print.c 2020-08-07 18:30:21.155794100 +0200
3277
+ +++ libmagic/print.c 2020-08-22 19:28:45.849356800 +0200
3279
3278
@@ -28,6 +28,7 @@
3280
3279
/*
3281
3280
* print.c - debugging printout routines
@@ -3468,7 +3467,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
3468
3467
if (i != -1)
3469
3468
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3470
3469
--- libmagic.orig/softmagic.c 2019-05-17 04:24:59.000000000 +0200
3471
- +++ libmagic/softmagic.c 2020-04-26 00:43 :35.734037100 +0200
3470
+ +++ libmagic/softmagic.c 2020-08-25 15:15 :35.784945600 +0200
3472
3471
@@ -43,6 +43,10 @@
3473
3472
#include <time.h>
3474
3473
#include "der.h"
@@ -3641,12 +3640,11 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3641
3640
return rv;
3642
3641
3643
3642
case FILE_USE:
3644
- @@ -1926,6 +1904,61 @@
3643
+ @@ -1926,6 +1904,60 @@
3645
3644
return file_strncmp(a, b, len, flags);
3646
3645
}
3647
3646
3648
- + public void
3649
- + convert_libmagic_pattern(zval *pattern, char *val, size_t len, uint32_t options)
3647
+ + public zend_string* convert_libmagic_pattern(char *val, size_t len, uint32_t options)
3650
3648
+ {
3651
3649
+ int i, j;
3652
3650
+ zend_string *t;
@@ -3697,20 +3695,20 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3697
3695
+ ZSTR_VAL(t)[j]='\0';
3698
3696
+ ZSTR_LEN(t) = j;
3699
3697
+
3700
- + ZVAL_NEW_STR(pattern, t) ;
3698
+ + return t ;
3701
3699
+ }
3702
3700
+
3703
3701
private int
3704
3702
magiccheck(struct magic_set *ms, struct magic *m)
3705
3703
{
3706
- @@ -2104,65 +2137 ,77 @@
3704
+ @@ -2104,65 +2136 ,77 @@
3707
3705
break;
3708
3706
}
3709
3707
case FILE_REGEX: {
3710
3708
- int rc;
3711
3709
- file_regex_t rx;
3712
3710
- const char *search;
3713
- + zval pattern;
3711
+ + zend_string * pattern;
3714
3712
+ uint32_t options = 0;
3715
3713
+ pcre_cache_entry *pce;
3716
3714
@@ -3729,11 +3727,11 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3729
3727
+ options |= PCRE2_CASELESS;
3730
3728
+ }
3731
3729
+
3732
- + convert_libmagic_pattern(& pattern, (char *)m->value.s, m->vallen, options);
3730
+ + pattern = convert_libmagic_pattern( (char *)m->value.s, m->vallen, options);
3733
3731
+
3734
3732
+ l = v = 0;
3735
- + if ((pce = pcre_get_compiled_regex_cache(Z_STR( pattern) )) == NULL) {
3736
- + zval_ptr_dtor(& pattern);
3733
+ + if ((pce = pcre_get_compiled_regex_cache(pattern)) == NULL) {
3734
+ + zend_string_release( pattern);
3737
3735
+ return -1;
3738
3736
} else {
3739
3737
- regmatch_t pmatch;
@@ -3769,7 +3767,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3769
3767
+
3770
3768
+ if (Z_LVAL(retval) < 0) {
3771
3769
+ zval_ptr_dtor(&subpats);
3772
- + zval_ptr_dtor(& pattern);
3770
+ + zend_string_release( pattern);
3773
3771
+ return -1;
3774
3772
+ } else if ((Z_LVAL(retval) > 0) && (Z_TYPE(subpats) == IS_ARRAY)) {
3775
3773
+ /* Need to fetch global match which equals pmatch[0] */
@@ -3796,7 +3794,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3796
3794
+ } else {
3797
3795
+ error_out:
3798
3796
+ zval_ptr_dtor(&subpats);
3799
- + zval_ptr_dtor(& pattern);
3797
+ + zend_string_release( pattern);
3800
3798
+ return -1;
3801
3799
+ }
3802
3800
} else {
@@ -3825,7 +3823,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3825
3823
- break;
3826
3824
}
3827
3825
+ zval_ptr_dtor(&subpats);
3828
- + zval_ptr_dtor(& pattern);
3826
+ + zend_string_release( pattern);
3829
3827
}
3830
3828
- file_regfree(&rx);
3831
3829
- if (v == CAST(uint64_t, -1))
0 commit comments