@@ -41,18 +41,17 @@ PHAR_FUNC(phar_opendir) /* {{{ */
41
41
}
42
42
43
43
if (!IS_ABSOLUTE_PATH (filename , filename_len ) && !strstr (filename , "://" )) {
44
- char * arch , * entry , * fname ;
45
- size_t arch_len , entry_len , fname_len ;
46
- fname = ( char * ) zend_get_executed_filename ();
44
+ char * arch , * entry ;
45
+ size_t arch_len , entry_len ;
46
+ zend_string * fname = zend_get_executed_filename_ex ();
47
47
48
48
/* we are checking for existence of a file within the relative path. Chances are good that this is
49
49
retrieving something from within the phar archive */
50
-
51
- if (strncasecmp (fname , "phar://" , 7 )) {
50
+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
52
51
goto skip_phar ;
53
52
}
54
- fname_len = strlen ( fname );
55
- if (SUCCESS == phar_split_fname (fname , fname_len , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
53
+
54
+ if (SUCCESS == phar_split_fname (ZSTR_VAL ( fname ), ZSTR_LEN ( fname ) , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
56
55
php_stream_context * context = NULL ;
57
56
php_stream * stream ;
58
57
char * name ;
@@ -91,15 +90,17 @@ PHAR_FUNC(phar_opendir) /* {{{ */
91
90
92
91
static zend_string * phar_get_name_for_relative_paths (zend_string * filename , bool using_include_path )
93
92
{
94
- char * arch , * entry , * fname ;
95
- size_t arch_len , entry_len , fname_len ;
93
+ char * arch , * entry ;
94
+ size_t arch_len , entry_len ;
95
+ zend_string * fname = zend_get_executed_filename_ex ();
96
96
97
- fname = (char * )zend_get_executed_filename ();
98
- if (strncasecmp (fname , "phar://" , 7 )) {
97
+ /* we are checking for existence of a file within the relative path. Chances are good that this is
98
+ retrieving something from within the phar archive */
99
+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
99
100
return NULL ;
100
101
}
101
- fname_len = strlen ( fname );
102
- if (FAILURE == phar_split_fname (fname , fname_len , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
102
+
103
+ if (FAILURE == phar_split_fname (ZSTR_VAL ( fname ), ZSTR_LEN ( fname ) , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
103
104
return NULL ;
104
105
}
105
106
@@ -485,22 +486,22 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ
485
486
}
486
487
487
488
if (!IS_ABSOLUTE_PATH (filename , filename_length ) && !strstr (filename , "://" )) {
488
- char * arch , * entry , * fname ;
489
- size_t arch_len , entry_len , fname_len ;
489
+ char * arch , * entry ;
490
+ size_t arch_len , entry_len ;
491
+ zend_string * fname ;
490
492
zend_stat_t sb = {0 };
491
493
phar_entry_info * data = NULL ;
492
494
phar_archive_data * phar ;
493
495
494
- fname = ( char * ) zend_get_executed_filename ();
496
+ fname = zend_get_executed_filename_ex ();
495
497
496
498
/* we are checking for existence of a file within the relative path. Chances are good that this is
497
499
retrieving something from within the phar archive */
498
-
499
- if (strncasecmp (fname , "phar://" , 7 )) {
500
+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
500
501
goto skip_phar ;
501
502
}
502
- fname_len = strlen ( fname );
503
- if (PHAR_G (last_phar ) && fname_len - 7 >= PHAR_G (last_phar_name_len ) && !memcmp (fname + 7 , PHAR_G (last_phar_name ), PHAR_G (last_phar_name_len ))) {
503
+
504
+ if (PHAR_G (last_phar ) && ZSTR_LEN ( fname ) - 7 >= PHAR_G (last_phar_name_len ) && !memcmp (ZSTR_VAL ( fname ) + 7 , PHAR_G (last_phar_name ), PHAR_G (last_phar_name_len ))) {
504
505
arch = estrndup (PHAR_G (last_phar_name ), PHAR_G (last_phar_name_len ));
505
506
arch_len = PHAR_G (last_phar_name_len );
506
507
entry = estrndup (filename , filename_length );
@@ -509,7 +510,7 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ
509
510
phar = PHAR_G (last_phar );
510
511
goto splitted ;
511
512
}
512
- if (SUCCESS == phar_split_fname (fname , fname_len , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
513
+ if (SUCCESS == phar_split_fname (ZSTR_VAL ( fname ), ZSTR_LEN ( fname ) , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
513
514
514
515
efree (entry );
515
516
entry = estrndup (filename , filename_length );
@@ -741,18 +742,17 @@ PHAR_FUNC(phar_is_file) /* {{{ */
741
742
goto skip_phar ;
742
743
}
743
744
if (!IS_ABSOLUTE_PATH (filename , filename_len ) && !strstr (filename , "://" )) {
744
- char * arch , * entry , * fname ;
745
- size_t arch_len , entry_len , fname_len ;
746
- fname = ( char * ) zend_get_executed_filename ();
745
+ char * arch , * entry ;
746
+ size_t arch_len , entry_len ;
747
+ zend_string * fname = zend_get_executed_filename_ex ();
747
748
748
749
/* we are checking for existence of a file within the relative path. Chances are good that this is
749
750
retrieving something from within the phar archive */
750
-
751
- if (strncasecmp (fname , "phar://" , 7 )) {
751
+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
752
752
goto skip_phar ;
753
753
}
754
- fname_len = strlen ( fname );
755
- if (SUCCESS == phar_split_fname (fname , fname_len , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
754
+
755
+ if (SUCCESS == phar_split_fname (ZSTR_VAL ( fname ), ZSTR_LEN ( fname ) , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
756
756
phar_archive_data * phar ;
757
757
758
758
efree (entry );
@@ -808,18 +808,17 @@ PHAR_FUNC(phar_is_link) /* {{{ */
808
808
goto skip_phar ;
809
809
}
810
810
if (!IS_ABSOLUTE_PATH (filename , filename_len ) && !strstr (filename , "://" )) {
811
- char * arch , * entry , * fname ;
812
- size_t arch_len , entry_len , fname_len ;
813
- fname = ( char * ) zend_get_executed_filename ();
811
+ char * arch , * entry ;
812
+ size_t arch_len , entry_len ;
813
+ zend_string * fname = zend_get_executed_filename_ex ();
814
814
815
815
/* we are checking for existence of a file within the relative path. Chances are good that this is
816
816
retrieving something from within the phar archive */
817
-
818
- if (strncasecmp (fname , "phar://" , 7 )) {
817
+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
819
818
goto skip_phar ;
820
819
}
821
- fname_len = strlen ( fname );
822
- if (SUCCESS == phar_split_fname (fname , fname_len , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
820
+
821
+ if (SUCCESS == phar_split_fname (ZSTR_VAL ( fname ), ZSTR_LEN ( fname ) , & arch , & arch_len , & entry , & entry_len , 2 , 0 )) {
823
822
phar_archive_data * phar ;
824
823
825
824
efree (entry );
0 commit comments