From f380e0c8abb7eb26ddf8160abd6533fed22f74f2 Mon Sep 17 00:00:00 2001 From: Greg Ames Date: Tue, 15 Nov 2011 15:20:38 +0000 Subject: [PATCH] ap_core_translate: factor out duplicate code. no functional change. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1202236 13f79535-47bb-0310-9956-ffa450edef68 --- server/core.c | 60 ++++++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/server/core.c b/server/core.c index 751c32219b..eb196937d0 100644 --- a/server/core.c +++ b/server/core.c @@ -4062,6 +4062,7 @@ AP_INIT_TAKE1("TraceEnable", set_trace_enable, NULL, RSRC_CONF, AP_DECLARE_NONSTD(int) ap_core_translate(request_rec *r) { apr_status_t rv; + char *path; /* XXX this seems too specific, this should probably become * some general-case test @@ -4081,46 +4082,31 @@ AP_DECLARE_NONSTD(int) ap_core_translate(request_rec *r) || r->uri[r->server->pathlen] == '/' || r->uri[r->server->pathlen] == '\0')) { - /* skip all leading /'s (e.g. http://localhost///foo) - * so we are looking at only the relative path. - */ - char *path = r->uri + r->server->pathlen; - while (*path == '/') { - ++path; - } - if ((rv = apr_filepath_merge(&r->filename, ap_document_root(r), path, - APR_FILEPATH_TRUENAME - | APR_FILEPATH_SECUREROOT, r->pool)) - != APR_SUCCESS) { - ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, - "Cannot map %s to file", r->the_request); - return HTTP_FORBIDDEN; - } - r->canonical_filename = r->filename; + path = r->uri + r->server->pathlen; } else { - /* - * Make sure that we do not mess up the translation by adding two - * /'s in a row. This happens under windows when the document - * root ends with a / - */ - /* skip all leading /'s (e.g. http://localhost///foo) - * so we are looking at only the relative path. - */ - char *path = r->uri; - while (*path == '/') { - ++path; - } - if ((rv = apr_filepath_merge(&r->filename, ap_document_root(r), path, - APR_FILEPATH_TRUENAME - | APR_FILEPATH_SECUREROOT, r->pool)) - != APR_SUCCESS) { - ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, - "Cannot map %s to file", r->the_request); - return HTTP_FORBIDDEN; - } - r->canonical_filename = r->filename; + path = r->uri; + } + /* + * Make sure that we do not mess up the translation by adding two + * /'s in a row. This happens under windows when the document + * root ends with a / + */ + /* skip all leading /'s (e.g. http://localhost///foo) + * so we are looking at only the relative path. + */ + while (*path == '/') { + ++path; + } + if ((rv = apr_filepath_merge(&r->filename, ap_document_root(r), path, + APR_FILEPATH_TRUENAME + | APR_FILEPATH_SECUREROOT, r->pool)) + != APR_SUCCESS) { + ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, + "Cannot map %s to file", r->the_request); + return HTTP_FORBIDDEN; } + r->canonical_filename = r->filename; return OK; } -- 2.40.0