diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-07-27 11:56:52 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-07-27 11:56:52 +0200 |
commit | 041cbec0230bbe4d509c63ac856d1bd270977944 (patch) | |
tree | 009bfae4877d28fb72e86d1ffce811b6a8423eac /sapi/cli/php_cli_server.c | |
parent | 08e6c209550a268500bbdef48c1b19494272e6e8 (diff) | |
parent | 68aa1329eb0b669f724ebc2b56f4ffe987b59414 (diff) | |
download | php-git-041cbec0230bbe4d509c63ac856d1bd270977944.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #77932: File extensions are case-sensitive
Diffstat (limited to 'sapi/cli/php_cli_server.c')
-rw-r--r-- | sapi/cli/php_cli_server.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index b385f877e5..dd721ccac5 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -372,7 +372,13 @@ static void append_essential_headers(smart_str* buffer, php_cli_server_client *c static const char *get_mime_type(const php_cli_server *server, const char *ext, size_t ext_len) /* {{{ */ { - return (const char*)zend_hash_str_find_ptr(&server->extension_mime_types, ext, ext_len); + char *ret; + ALLOCA_FLAG(use_heap) + char *ext_lower = do_alloca(ext_len + 1, use_heap); + zend_str_tolower_copy(ext_lower, ext, ext_len); + ret = zend_hash_str_find_ptr(&server->extension_mime_types, ext_lower, ext_len); + free_alloca(ext_lower, use_heap); + return (const char*)ret; } /* }}} */ PHP_FUNCTION(apache_request_headers) /* {{{ */ @@ -2216,9 +2222,12 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server static int php_cli_server_dispatch(php_cli_server *server, php_cli_server_client *client) /* {{{ */ { int is_static_file = 0; + const char *ext = client->request.ext; SG(server_context) = client; - if (client->request.ext_len != 3 || memcmp(client->request.ext, "php", 3) || !client->request.path_translated) { + if (client->request.ext_len != 3 + || (ext[0] != 'p' && ext[0] != 'P') || (ext[1] != 'h' && ext[1] != 'H') || (ext[2] != 'p' && ext[2] != 'P') + || !client->request.path_translated) { is_static_file = 1; } |