mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-29 19:24:29 +03:00
Make url path absolute for SecHashEngine only when it is relative in the first place. Fix #752
This commit is contained in:
committed by
Felipe Zimmerle
parent
6f49bad748
commit
6473cf626d
@@ -68,24 +68,30 @@ char *normalize_path(modsec_rec *msr, char *input) {
|
|||||||
char *Uri = NULL;
|
char *Uri = NULL;
|
||||||
int bytes = 0;
|
int bytes = 0;
|
||||||
/*int i;*/
|
/*int i;*/
|
||||||
char *relative_link = NULL;
|
char *abs_link = NULL;
|
||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
char *relative_path = NULL;
|
char *abs_path = NULL;
|
||||||
char *relative_uri = NULL;
|
char *abs_uri = NULL;
|
||||||
|
|
||||||
|
if (uri->path[0] != '/') {
|
||||||
|
/* uri->path is relative. make it absolute */
|
||||||
filename = file_basename(msr->mp, msr->r->parsed_uri.path);
|
filename = file_basename(msr->mp, msr->r->parsed_uri.path);
|
||||||
|
|
||||||
if(filename == NULL || (strlen(msr->r->parsed_uri.path) - strlen(filename) < 0))
|
if(filename == NULL || (strlen(msr->r->parsed_uri.path) - strlen(filename) < 0))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
relative_path = apr_pstrndup(msr->mp, msr->r->parsed_uri.path, strlen(msr->r->parsed_uri.path) - strlen(filename));
|
abs_path = apr_pstrndup(msr->mp, msr->r->parsed_uri.path, strlen(msr->r->parsed_uri.path) - strlen(filename));
|
||||||
relative_uri = apr_pstrcat(msr->mp, relative_path, uri->path, NULL);
|
abs_uri = apr_pstrcat(msr->mp, abs_path, uri->path, NULL);
|
||||||
|
|
||||||
relative_link = apr_pstrdup(msr->mp, relative_uri);
|
abs_link = apr_pstrdup(msr->mp, abs_uri);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
abs_link = apr_pstrdup(msr->mp, uri->path);
|
||||||
|
}
|
||||||
|
|
||||||
xmlNormalizeURIPath(relative_link);
|
xmlNormalizeURIPath(abs_link);
|
||||||
|
|
||||||
Uri = apr_pstrdup(msr->mp, relative_link);
|
Uri = apr_pstrdup(msr->mp, abs_link);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
for(i = 0; i < (int)strlen(Uri); i++) {
|
for(i = 0; i < (int)strlen(Uri); i++) {
|
||||||
|
Reference in New Issue
Block a user