mirror of
https://github.com/php/php-src.git
synced 2024-11-28 20:34:29 +08:00
Prune uploaded file names to \ on all OSes, read comments for explanation.
This commit is contained in:
parent
b6b3659224
commit
7ee1fdb657
@ -1077,11 +1077,7 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)
|
||||
str_len = strlen(filename);
|
||||
php_mb_gpc_encoding_converter(&filename, &str_len, 1, NULL, NULL TSRMLS_CC);
|
||||
}
|
||||
#ifdef PHP_WIN32
|
||||
s = php_mb_strrchr(filename, '\\' TSRMLS_CC);
|
||||
#else
|
||||
s = filename;
|
||||
#endif
|
||||
if ((tmp = php_mb_strrchr(filename, '/' TSRMLS_CC)) > s) {
|
||||
s = tmp;
|
||||
}
|
||||
@ -1089,12 +1085,13 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)
|
||||
goto filedone;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
/* The \ check should technically be needed for win32 systems only where
|
||||
* it is a valid path separator. However, IE in all it's wisdom always sends
|
||||
* the full path of the file on the user's filesystem, which means that unless
|
||||
* the user does basename() they get a bogus file name. Until IE's user base drops
|
||||
* to nill or problem is fixed this code must remain enabled for all systems.
|
||||
*/
|
||||
s = strrchr(filename, '\\');
|
||||
#else
|
||||
s = filename;
|
||||
#endif
|
||||
if ((tmp = strrchr(filename, '/')) > s) {
|
||||
s = tmp;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user