Make url path absolute for SecHashEngine only when it is relative in the first place. Fix #752

This commit is contained in:
Hideaki Hayashi 2016-02-05 11:20:28 -08:00 коммит произвёл Felipe Zimmerle
Родитель 6f49bad748
Коммит 6473cf626d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E6DFB08CE8B11277
1 изменённых файлов: 17 добавлений и 11 удалений

Просмотреть файл

@ -68,24 +68,30 @@ char *normalize_path(modsec_rec *msr, char *input) {
char *Uri = NULL;
int bytes = 0;
/*int i;*/
char *relative_link = NULL;
char *abs_link = NULL;
char *filename = NULL;
char *relative_path = NULL;
char *relative_uri = NULL;
char *abs_path = NULL;
char *abs_uri = NULL;
filename = file_basename(msr->mp, msr->r->parsed_uri.path);
if (uri->path[0] != '/') {
/* uri->path is relative. make it absolute */
filename = file_basename(msr->mp, msr->r->parsed_uri.path);
if(filename == NULL || (strlen(msr->r->parsed_uri.path) - strlen(filename) < 0))
return NULL;
if(filename == NULL || (strlen(msr->r->parsed_uri.path) - strlen(filename) < 0))
return NULL;
relative_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_path = apr_pstrndup(msr->mp, msr->r->parsed_uri.path, strlen(msr->r->parsed_uri.path) - strlen(filename));
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++) {