@@ -41,18 +41,17 @@ PHAR_FUNC(phar_opendir) /* {{{ */
4141 }
4242
4343 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 ();
4747
4848 /* we are checking for existence of a file within the relative path. Chances are good that this is
4949 retrieving something from within the phar archive */
50-
51- if (strncasecmp (fname , "phar://" , 7 )) {
50+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
5251 goto skip_phar ;
5352 }
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 )) {
5655 php_stream_context * context = NULL ;
5756 php_stream * stream ;
5857 char * name ;
@@ -91,15 +90,17 @@ PHAR_FUNC(phar_opendir) /* {{{ */
9190
9291static zend_string * phar_get_name_for_relative_paths (zend_string * filename , bool using_include_path )
9392{
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 ();
9696
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://" )) {
99100 return NULL ;
100101 }
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 )) {
103104 return NULL ;
104105 }
105106
@@ -485,22 +486,22 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ
485486 }
486487
487488 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 ;
490492 zend_stat_t sb = {0 };
491493 phar_entry_info * data = NULL ;
492494 phar_archive_data * phar ;
493495
494- fname = ( char * ) zend_get_executed_filename ();
496+ fname = zend_get_executed_filename_ex ();
495497
496498 /* we are checking for existence of a file within the relative path. Chances are good that this is
497499 retrieving something from within the phar archive */
498-
499- if (strncasecmp (fname , "phar://" , 7 )) {
500+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
500501 goto skip_phar ;
501502 }
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 ))) {
504505 arch = estrndup (PHAR_G (last_phar_name ), PHAR_G (last_phar_name_len ));
505506 arch_len = PHAR_G (last_phar_name_len );
506507 entry = estrndup (filename , filename_length );
@@ -509,7 +510,7 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ
509510 phar = PHAR_G (last_phar );
510511 goto splitted ;
511512 }
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 )) {
513514
514515 efree (entry );
515516 entry = estrndup (filename , filename_length );
@@ -741,18 +742,17 @@ PHAR_FUNC(phar_is_file) /* {{{ */
741742 goto skip_phar ;
742743 }
743744 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 ();
747748
748749 /* we are checking for existence of a file within the relative path. Chances are good that this is
749750 retrieving something from within the phar archive */
750-
751- if (strncasecmp (fname , "phar://" , 7 )) {
751+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
752752 goto skip_phar ;
753753 }
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 )) {
756756 phar_archive_data * phar ;
757757
758758 efree (entry );
@@ -808,18 +808,17 @@ PHAR_FUNC(phar_is_link) /* {{{ */
808808 goto skip_phar ;
809809 }
810810 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 ();
814814
815815 /* we are checking for existence of a file within the relative path. Chances are good that this is
816816 retrieving something from within the phar archive */
817-
818- if (strncasecmp (fname , "phar://" , 7 )) {
817+ if (!zend_string_starts_with_literal_ci (fname , "phar://" )) {
819818 goto skip_phar ;
820819 }
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 )) {
823822 phar_archive_data * phar ;
824823
825824 efree (entry );
0 commit comments