mirror of
https://github.com/php/php-src.git
synced 2024-09-23 10:57:26 +00:00
better fix for invalid mem access
This commit is contained in:
parent
7575b012f2
commit
43f2638634
@ -424,7 +424,7 @@ PHP_METHOD(Phar, webPhar)
|
|||||||
char *alias = NULL, *error, *plain_map, *index_php, *f404 = NULL, *ru = NULL;
|
char *alias = NULL, *error, *plain_map, *index_php, *f404 = NULL, *ru = NULL;
|
||||||
int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0, ru_len = 0;
|
int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0, ru_len = 0;
|
||||||
char *fname, *basename, *path_info, *mime_type, *entry, *pt;
|
char *fname, *basename, *path_info, *mime_type, *entry, *pt;
|
||||||
int fname_len, entry_len, code, index_php_len = 0;
|
int fname_len, entry_len, code, index_php_len = 0, not_cgi;
|
||||||
phar_entry_data *phar;
|
phar_entry_data *phar;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!saz", &alias, &alias_len, &index_php, &index_php_len, &f404, &f404_len, &mimeoverride, &rewrite) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!saz", &alias, &alias_len, &index_php, &index_php_len, &f404, &f404_len, &mimeoverride, &rewrite) == FAILURE) {
|
||||||
@ -489,6 +489,7 @@ PHP_METHOD(Phar, webPhar)
|
|||||||
entry_len = 0;
|
entry_len = 0;
|
||||||
}
|
}
|
||||||
pt = estrndup(testit, (pt - testit) + (fname_len - (basename - fname)));
|
pt = estrndup(testit, (pt - testit) + (fname_len - (basename - fname)));
|
||||||
|
not_cgi = 1;
|
||||||
} else {
|
} else {
|
||||||
path_info = SG(request_info).request_uri;
|
path_info = SG(request_info).request_uri;
|
||||||
|
|
||||||
@ -502,6 +503,7 @@ PHP_METHOD(Phar, webPhar)
|
|||||||
entry = estrndup(pt + (fname_len - (basename - fname)), entry_len);
|
entry = estrndup(pt + (fname_len - (basename - fname)), entry_len);
|
||||||
|
|
||||||
pt = estrndup(path_info, (pt - path_info) + (fname_len - (basename - fname)));
|
pt = estrndup(path_info, (pt - path_info) + (fname_len - (basename - fname)));
|
||||||
|
not_cgi = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rewrite) {
|
if (rewrite) {
|
||||||
@ -608,8 +610,8 @@ PHP_METHOD(Phar, webPhar)
|
|||||||
ctr.line = "HTTP/1.1 301 Moved Permanently";
|
ctr.line = "HTTP/1.1 301 Moved Permanently";
|
||||||
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC);
|
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC);
|
||||||
|
|
||||||
tmp = strstr(path_info, basename) + fname_len;
|
if (not_cgi) {
|
||||||
if (tmp) {
|
tmp = strstr(path_info, basename) + fname_len;
|
||||||
sa = *tmp;
|
sa = *tmp;
|
||||||
*tmp = '\0';
|
*tmp = '\0';
|
||||||
}
|
}
|
||||||
@ -619,7 +621,7 @@ PHP_METHOD(Phar, webPhar)
|
|||||||
} else {
|
} else {
|
||||||
ctr.line_len = spprintf(&(ctr.line), 4096, "Location: %s%s", path_info, entry);
|
ctr.line_len = spprintf(&(ctr.line), 4096, "Location: %s%s", path_info, entry);
|
||||||
}
|
}
|
||||||
if (tmp) {
|
if (not_cgi) {
|
||||||
*tmp = sa;
|
*tmp = sa;
|
||||||
}
|
}
|
||||||
if (free_pathinfo) {
|
if (free_pathinfo) {
|
||||||
|
Loading…
Reference in New Issue
Block a user