From: Greg Beaver Date: Sat, 12 Jan 2008 22:16:00 +0000 (+0000) Subject: fix segfault in Phar::webPhar() if file is in root directory, found in frontcontrolle... X-Git-Tag: RELEASE_2_0_0a1~931 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=56e84a390ca548a431aef4642f2c45e26d6949a5;p=php fix segfault in Phar::webPhar() if file is in root directory, found in frontcontroller16.phpt --- diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index aae4e82972..5a84b4c4a8 100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -306,7 +306,11 @@ static int phar_file_action(phar_entry_data *phar, char *mime_type, int code, ch PHAR_G(cwd_len) = 0; if (zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL)==SUCCESS) { if ((cwd = strrchr(entry, '/'))) { - if (entry[0] == '/') { + if (entry == cwd) { + /* root directory */ + PHAR_G(cwd_len) = 0; + PHAR_G(cwd) = NULL; + } else if (entry[0] == '/') { PHAR_G(cwd_len) = cwd - (entry + 1); PHAR_G(cwd) = estrndup(entry + 1, PHAR_G(cwd_len)); } else {