From: Greg Beaver Date: Fri, 8 Feb 2008 00:55:38 +0000 (+0000) Subject: fix invalid read/write if strstr() returns NULL X-Git-Tag: RELEASE_2_0_0a1~576 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7575b012f2c7494b2327da2b7c8b86379603694e;p=php fix invalid read/write if strstr() returns NULL --- diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 09f5986148..708602e5d0 100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -609,15 +609,19 @@ PHP_METHOD(Phar, webPhar) sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); tmp = strstr(path_info, basename) + fname_len; - sa = *tmp; - *tmp = '\0'; + if (tmp) { + sa = *tmp; + *tmp = '\0'; + } ctr.response_code = 0; if (path_info[strlen(path_info)-1] == '/') { ctr.line_len = spprintf(&(ctr.line), 4096, "Location: %s%s", path_info, entry + 1); } else { ctr.line_len = spprintf(&(ctr.line), 4096, "Location: %s%s", path_info, entry); } - *tmp = sa; + if (tmp) { + *tmp = sa; + } if (free_pathinfo) { efree(path_info); } @@ -1063,11 +1067,7 @@ PHP_METHOD(Phar, __construct) phar_obj->arc.archive = phar_data; phar_obj->spl.oth_handler = &phar_spl_foreign_handler; -#ifdef PHP_WIN32 - phar_unixify_path_separators(fname, fname_len); -#endif - - fname_len = spprintf(&fname, 0, "phar://%s", fname); + fname_len = spprintf(&fname, 0, "phar://%s", phar_data->fname); INIT_PZVAL(&arg1); ZVAL_STRINGL(&arg1, fname, fname_len, 0);