Skip to content

Commit f0b3e7b

Browse files
committed
streams: Refactor rename stream op to use zend_string
1 parent d7e05c7 commit f0b3e7b

File tree

7 files changed

+69
-72
lines changed

7 files changed

+69
-72
lines changed

ext/phar/stream.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int
741741
}
742742
/* }}} */
743743

744-
static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context) /* {{{ */
744+
static bool phar_wrapper_rename(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to, int options, php_stream_context *context) /* {{{ */
745745
{
746746
php_url *resource_from, *resource_to;
747747
char *error;
@@ -753,8 +753,8 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
753753

754754
error = NULL;
755755

756-
if ((resource_from = phar_parse_url(wrapper, url_from, "wb", options|PHP_STREAM_URL_STAT_QUIET)) == NULL) {
757-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid or non-writable url \"%s\"", url_from, url_to, url_from);
756+
if ((resource_from = phar_parse_url(wrapper, ZSTR_VAL(url_from), "wb", options|PHP_STREAM_URL_STAT_QUIET)) == NULL) {
757+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid or non-writable url \"%s\"", ZSTR_VAL(url_from), ZSTR_VAL(url_to), ZSTR_VAL(url_from));
758758
return 0;
759759
}
760760
if (SUCCESS != phar_get_archive(&pfrom, ZSTR_VAL(resource_from->host), ZSTR_LEN(resource_from->host), NULL, 0, &error)) {
@@ -769,9 +769,9 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
769769
return 0;
770770
}
771771

772-
if ((resource_to = phar_parse_url(wrapper, url_to, "wb", options|PHP_STREAM_URL_STAT_QUIET)) == NULL) {
772+
if ((resource_to = phar_parse_url(wrapper, ZSTR_VAL(url_to), "wb", options|PHP_STREAM_URL_STAT_QUIET)) == NULL) {
773773
php_url_free(resource_from);
774-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid or non-writable url \"%s\"", url_from, url_to, url_to);
774+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid or non-writable url \"%s\"", ZSTR_VAL(url_from), ZSTR_VAL(url_to), ZSTR_VAL(url_to));
775775
return 0;
776776
}
777777
if (SUCCESS != phar_get_archive(&pto, ZSTR_VAL(resource_to->host), ZSTR_LEN(resource_to->host), NULL, 0, &error)) {
@@ -790,36 +790,36 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
790790
if (!zend_string_equals(resource_from->host, resource_to->host)) {
791791
php_url_free(resource_from);
792792
php_url_free(resource_to);
793-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\", not within the same phar archive", url_from, url_to);
793+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\", not within the same phar archive", ZSTR_VAL(url_from), ZSTR_VAL(url_to));
794794
return 0;
795795
}
796796

797797
/* we must have at the very least phar://alias.phar/internalfile.php */
798798
if (!resource_from->scheme || !resource_from->host || !resource_from->path) {
799799
php_url_free(resource_from);
800800
php_url_free(resource_to);
801-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid url \"%s\"", url_from, url_to, url_from);
801+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid url \"%s\"", ZSTR_VAL(url_from), ZSTR_VAL(url_to), ZSTR_VAL(url_from));
802802
return 0;
803803
}
804804

805805
if (!resource_to->scheme || !resource_to->host || !resource_to->path) {
806806
php_url_free(resource_from);
807807
php_url_free(resource_to);
808-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid url \"%s\"", url_from, url_to, url_to);
808+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid url \"%s\"", ZSTR_VAL(url_from), ZSTR_VAL(url_to), ZSTR_VAL(url_to));
809809
return 0;
810810
}
811811

812812
if (!zend_string_equals_literal_ci(resource_from->scheme, "phar")) {
813813
php_url_free(resource_from);
814814
php_url_free(resource_to);
815-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": not a phar stream url \"%s\"", url_from, url_to, url_from);
815+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": not a phar stream url \"%s\"", ZSTR_VAL(url_from), ZSTR_VAL(url_to), ZSTR_VAL(url_from));
816816
return 0;
817817
}
818818

819819
if (!zend_string_equals_literal_ci(resource_to->scheme, "phar")) {
820820
php_url_free(resource_from);
821821
php_url_free(resource_to);
822-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": not a phar stream url \"%s\"", url_from, url_to, url_to);
822+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": not a phar stream url \"%s\"", ZSTR_VAL(url_from), ZSTR_VAL(url_to), ZSTR_VAL(url_to));
823823
return 0;
824824
}
825825

@@ -828,15 +828,15 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
828828
if (SUCCESS != phar_get_archive(&phar, ZSTR_VAL(resource_from->host), host_len, NULL, 0, &error)) {
829829
php_url_free(resource_from);
830830
php_url_free(resource_to);
831-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": %s", url_from, url_to, error);
831+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": %s", ZSTR_VAL(url_from), ZSTR_VAL(url_to), error);
832832
efree(error);
833833
return 0;
834834
}
835835

836836
if (phar->is_persistent && FAILURE == phar_copy_on_write(&phar)) {
837837
php_url_free(resource_from);
838838
php_url_free(resource_to);
839-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": could not make cached phar writeable", url_from, url_to);
839+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": could not make cached phar writeable", ZSTR_VAL(url_from), ZSTR_VAL(url_to));
840840
return 0;
841841
}
842842

@@ -847,7 +847,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
847847
if (entry->is_deleted) {
848848
php_url_free(resource_from);
849849
php_url_free(resource_to);
850-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\" from extracted phar archive, source has been deleted", url_from, url_to);
850+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\" from extracted phar archive, source has been deleted", ZSTR_VAL(url_from), ZSTR_VAL(url_to));
851851
return 0;
852852
}
853853
/* transfer all data over to the new entry */
@@ -867,7 +867,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
867867
if (FAILURE == phar_copy_entry_fp(source, entry, &error)) {
868868
php_url_free(resource_from);
869869
php_url_free(resource_to);
870-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": %s", url_from, url_to, error);
870+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": %s", ZSTR_VAL(url_from), ZSTR_VAL(url_to), error);
871871
efree(error);
872872
zend_hash_str_del(&(phar->manifest), entry->filename, strlen(entry->filename));
873873
return 0;
@@ -882,7 +882,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
882882
/* file does not exist */
883883
php_url_free(resource_from);
884884
php_url_free(resource_to);
885-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\" from extracted phar archive, source does not exist", url_from, url_to);
885+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\" from extracted phar archive, source does not exist", ZSTR_VAL(url_from), ZSTR_VAL(url_to));
886886
return 0;
887887

888888
}
@@ -963,7 +963,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
963963
if (error) {
964964
php_url_free(resource_from);
965965
php_url_free(resource_to);
966-
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": %s", url_from, url_to, error);
966+
php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": %s", ZSTR_VAL(url_from), ZSTR_VAL(url_to), error);
967967
efree(error);
968968
return 0;
969969
}

ext/phar/stream.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const
2323
void phar_entry_remove(phar_entry_data *idata, char **error);
2424

2525
static php_stream* phar_wrapper_open_url(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
26-
static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context);
26+
static bool phar_wrapper_rename(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to, int options, php_stream_context *context);
2727
static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
2828
static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context);
2929

ext/standard/file.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,20 +1257,19 @@ PHPAPI PHP_FUNCTION(fpassthru)
12571257
/* {{{ Rename a file */
12581258
PHP_FUNCTION(rename)
12591259
{
1260-
char *old_name, *new_name;
1261-
size_t old_name_len, new_name_len;
1260+
zend_string *old_name, *new_name;
12621261
zval *zcontext = NULL;
12631262
php_stream_wrapper *wrapper;
12641263
php_stream_context *context;
12651264

12661265
ZEND_PARSE_PARAMETERS_START(2, 3)
1267-
Z_PARAM_PATH(old_name, old_name_len)
1268-
Z_PARAM_PATH(new_name, new_name_len)
1266+
Z_PARAM_PATH_STR(old_name)
1267+
Z_PARAM_PATH_STR(new_name)
12691268
Z_PARAM_OPTIONAL
12701269
Z_PARAM_RESOURCE_OR_NULL(zcontext)
12711270
ZEND_PARSE_PARAMETERS_END();
12721271

1273-
wrapper = php_stream_locate_url_wrapper(old_name, NULL, 0);
1272+
wrapper = php_stream_locate_url_wrapper(ZSTR_VAL(old_name), NULL, 0);
12741273

12751274
if (!wrapper || !wrapper->wops) {
12761275
php_error_docref(NULL, E_WARNING, "Unable to locate stream wrapper");
@@ -1282,7 +1281,7 @@ PHP_FUNCTION(rename)
12821281
RETURN_FALSE;
12831282
}
12841283

1285-
if (wrapper != php_stream_locate_url_wrapper(new_name, NULL, 0)) {
1284+
if (wrapper != php_stream_locate_url_wrapper(ZSTR_VAL(new_name), NULL, 0)) {
12861285
php_error_docref(NULL, E_WARNING, "Cannot rename a file across wrapper types");
12871286
RETURN_FALSE;
12881287
}

ext/standard/ftp_fopen_wrapper.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -941,15 +941,15 @@ static int php_stream_ftp_unlink(php_stream_wrapper *wrapper, const char *url, i
941941
/* }}} */
942942

943943
/* {{{ php_stream_ftp_rename */
944-
static int php_stream_ftp_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context)
944+
static bool php_stream_ftp_rename(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to, int options, php_stream_context *context)
945945
{
946946
php_stream *stream = NULL;
947947
php_url *resource_from = NULL, *resource_to = NULL;
948948
int result;
949949
char tmp_line[512];
950950

951-
resource_from = php_url_parse(url_from);
952-
resource_to = php_url_parse(url_to);
951+
resource_from = php_url_parse(ZSTR_VAL(url_from));
952+
resource_to = php_url_parse(ZSTR_VAL(url_to));
953953
/* Must be same scheme (ftp/ftp or ftps/ftps), same host, and same port
954954
(or a 21/0 0/21 combination which is also "same")
955955
Also require paths to/from */
@@ -969,7 +969,7 @@ static int php_stream_ftp_rename(php_stream_wrapper *wrapper, const char *url_fr
969969
goto rename_errexit;
970970
}
971971

972-
stream = php_ftp_fopen_connect(wrapper, url_from, "r", 0, NULL, context, NULL, NULL, NULL, NULL);
972+
stream = php_ftp_fopen_connect(wrapper, ZSTR_VAL(url_from), "r", 0, NULL, context, NULL, NULL, NULL, NULL);
973973
if (!stream) {
974974
if (options & REPORT_ERRORS) {
975975
php_error_docref(NULL, E_WARNING, "Unable to connect to %s", ZSTR_VAL(resource_from->host));

main/php_streams.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ typedef struct _php_stream_wrapper_ops {
148148
int (*unlink)(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
149149

150150
/* rename a file */
151-
int (*rename)(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context);
151+
bool (*rename)(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to, int options, php_stream_context *context);
152152

153153
/* Create/Remove directory */
154154
int (*stream_mkdir)(php_stream_wrapper *wrapper, const char *url, int mode, int options, php_stream_context *context);

main/streams/plain_wrapper.c

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,44 +1266,42 @@ static int php_plain_files_unlink(php_stream_wrapper *wrapper, const char *url,
12661266
return 1;
12671267
}
12681268

1269-
static int php_plain_files_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context)
1269+
static bool php_plain_files_rename(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to, int options, php_stream_context *context)
12701270
{
1271-
int ret;
1272-
12731271
if (!url_from || !url_to) {
1274-
return 0;
1272+
return false;
12751273
}
12761274

1277-
size_t url_from_len = strlen(url_from);
1278-
size_t url_to_len = strlen(url_to);
12791275
#ifdef PHP_WIN32
1280-
if (!php_win32_check_trailing_space(url_from, url_from_len)) {
1281-
php_win32_docref2_from_error(ERROR_INVALID_NAME, url_from, url_to);
1282-
return 0;
1276+
if (!php_win32_check_trailing_space(ZSTR_VAL(url_from), ZSTR_LEN(url_from))) {
1277+
php_win32_docref2_from_error(ERROR_INVALID_NAME, ZSTR_VAL(url_from), ZSTR_VAL(url_to));
1278+
return false;
12831279
}
1284-
if (!php_win32_check_trailing_space(url_to, url_to_len)) {
1285-
php_win32_docref2_from_error(ERROR_INVALID_NAME, url_from, url_to);
1286-
return 0;
1280+
if (!php_win32_check_trailing_space(ZSTR_VAL(url_to), ZSTR_LEN(url_to))) {
1281+
php_win32_docref2_from_error(ERROR_INVALID_NAME, ZSTR_VAL(url_from), ZSTR_VAL(url_to));
1282+
return false;
12871283
}
12881284
#endif
12891285

1290-
if (strncasecmp(url_from, "file://", sizeof("file://") - 1) == 0) {
1291-
url_from += sizeof("file://") - 1;
1292-
url_from_len -= sizeof("file://");
1286+
const char *url_from_ptr = ZSTR_VAL(url_from);
1287+
size_t url_from_len = ZSTR_LEN(url_from);
1288+
if (zend_string_starts_with_literal_ci(url_from, "file://")) {
1289+
url_from_ptr += strlen("file://");
1290+
url_from_len -= strlen("file://");
12931291
}
12941292

1295-
if (strncasecmp(url_to, "file://", sizeof("file://") - 1) == 0) {
1296-
url_to += sizeof("file://") - 1;
1297-
url_to_len -= sizeof("file://");
1293+
const char *url_to_ptr = ZSTR_VAL(url_to);
1294+
size_t url_to_len = ZSTR_LEN(url_to);
1295+
if (zend_string_starts_with_literal_ci(url_to, "file://")) {
1296+
url_to_ptr += strlen("file://");
1297+
url_to_len -= strlen("file://");
12981298
}
12991299

1300-
if (php_check_open_basedir(url_from) || php_check_open_basedir(url_to)) {
1301-
return 0;
1300+
if (php_check_open_basedir(url_from_ptr) || php_check_open_basedir(url_to_ptr)) {
1301+
return false;
13021302
}
13031303

1304-
ret = VCWD_RENAME(url_from, url_from_len, url_to, url_to_len);
1305-
1306-
if (ret == -1) {
1304+
if (VCWD_RENAME(url_from_ptr, url_from_len, url_to_ptr, url_to_len) == FAILURE) {
13071305
#ifndef PHP_WIN32
13081306
# ifdef EXDEV
13091307
if (errno == EXDEV) {
@@ -1312,10 +1310,10 @@ static int php_plain_files_rename(php_stream_wrapper *wrapper, const char *url_f
13121310
/* not sure what to do in ZTS case, umask is not thread-safe */
13131311
int oldmask = umask(077);
13141312
# endif
1315-
int success = 0;
1316-
if (php_copy_file(url_from, url_to) == SUCCESS) {
1317-
if (VCWD_STAT(url_from, &sb) == 0) {
1318-
success = 1;
1313+
bool success = false;
1314+
if (php_copy_file(url_from_ptr, url_to_ptr) == SUCCESS) {
1315+
if (VCWD_STAT(url_from_ptr, &sb) == 0) {
1316+
success = true;
13191317
# ifndef TSRM_WIN32
13201318
/*
13211319
* Try to set user and permission info on the target.
@@ -1324,30 +1322,30 @@ static int php_plain_files_rename(php_stream_wrapper *wrapper, const char *url_f
13241322
* on the system environment to have proper umask to not allow
13251323
* access to the file in the meantime.
13261324
*/
1327-
if (VCWD_CHOWN(url_to, sb.st_uid, sb.st_gid)) {
1328-
php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno));
1325+
if (VCWD_CHOWN(url_to_ptr, sb.st_uid, sb.st_gid)) {
1326+
php_error_docref2(NULL, ZSTR_VAL(url_from), ZSTR_VAL(url_to), E_WARNING, "%s", strerror(errno));
13291327
if (errno != EPERM) {
1330-
success = 0;
1328+
success = false;
13311329
}
13321330
}
13331331

13341332
if (success) {
1335-
if (VCWD_CHMOD(url_to, sb.st_mode)) {
1336-
php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno));
1333+
if (VCWD_CHMOD(url_to_ptr, sb.st_mode)) {
1334+
php_error_docref2(NULL, ZSTR_VAL(url_from), ZSTR_VAL(url_to), E_WARNING, "%s", strerror(errno));
13371335
if (errno != EPERM) {
1338-
success = 0;
1336+
success = false;
13391337
}
13401338
}
13411339
}
13421340
# endif
13431341
if (success) {
1344-
VCWD_UNLINK(url_from);
1342+
VCWD_UNLINK(url_from_ptr);
13451343
}
13461344
} else {
1347-
php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno));
1345+
php_error_docref2(NULL, ZSTR_VAL(url_from), ZSTR_VAL(url_to), E_WARNING, "%s", strerror(errno));
13481346
}
13491347
} else {
1350-
php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno));
1348+
php_error_docref2(NULL, ZSTR_VAL(url_from), ZSTR_VAL(url_to), E_WARNING, "%s", strerror(errno));
13511349
}
13521350
# if !defined(ZTS) && !defined(TSRM_WIN32)
13531351
umask(oldmask);
@@ -1358,17 +1356,17 @@ static int php_plain_files_rename(php_stream_wrapper *wrapper, const char *url_f
13581356
#endif
13591357

13601358
#ifdef PHP_WIN32
1361-
php_win32_docref2_from_error(GetLastError(), url_from, url_to);
1359+
php_win32_docref2_from_error(GetLastError(), ZSTR_VAL(url_from), ZSTR_VAL(url_to));
13621360
#else
1363-
php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno));
1361+
php_error_docref2(NULL, ZSTR_VAL(url_from), ZSTR_VAL(url_to), E_WARNING, "%s", strerror(errno));
13641362
#endif
1365-
return 0;
1363+
return false;
13661364
}
13671365

13681366
/* Clear stat cache (and realpath cache) */
13691367
php_clear_stat_cache(1, NULL, 0);
13701368

1371-
return 1;
1369+
return true;
13721370
}
13731371

13741372
static int php_plain_files_mkdir(php_stream_wrapper *wrapper, const char *dir, int mode, int options, php_stream_context *context)

main/streams/userspace.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *
4646
static int user_wrapper_close(php_stream_wrapper *wrapper, php_stream *stream);
4747
static int user_wrapper_stat_url(php_stream_wrapper *wrapper, const char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context);
4848
static int user_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
49-
static int user_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context);
49+
static bool user_wrapper_rename(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to, int options, php_stream_context *context);
5050
static int user_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url, int mode, int options, php_stream_context *context);
5151
static int user_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
5252
static int user_wrapper_metadata(php_stream_wrapper *wrapper, const char *url, int option, void *value, php_stream_context *context);
@@ -1067,7 +1067,7 @@ static int user_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int
10671067
return ret;
10681068
}
10691069

1070-
static int user_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to,
1070+
static bool user_wrapper_rename(php_stream_wrapper *wrapper, const zend_string *url_from, const zend_string *url_to,
10711071
int options, php_stream_context *context)
10721072
{
10731073
struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
@@ -1084,8 +1084,8 @@ static int user_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
10841084
}
10851085

10861086
/* call the rename method */
1087-
ZVAL_STRING(&args[0], url_from);
1088-
ZVAL_STRING(&args[1], url_to);
1087+
ZVAL_STRINGL(&args[0], ZSTR_VAL(url_from), ZSTR_LEN(url_from));
1088+
ZVAL_STRINGL(&args[1], ZSTR_VAL(url_to), ZSTR_LEN(url_to));
10891089

10901090
ZVAL_STRING(&zfuncname, USERSTREAM_RENAME);
10911091

0 commit comments

Comments
 (0)