From 6f811a48994c8a72bcae732e3288ff5647b191eb Mon Sep 17 00:00:00 2001 From: "roberto@precise64" Date: Mon, 26 Mar 2012 13:41:18 +0200 Subject: [PATCH] better realpath for static docroot --- protocol.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/protocol.c b/protocol.c index a3e92475..1755e5d3 100644 --- a/protocol.c +++ b/protocol.c @@ -958,9 +958,21 @@ nextsm: // finally check for docroot if (uwsgi.check_static_docroot && wsgi_req->document_root_len > 0) { - if (!uwsgi_file_serve(wsgi_req, wsgi_req->document_root, wsgi_req->document_root_len, wsgi_req->path_info, wsgi_req->path_info_len)) { + char *orig_docroot = uwsgi_concat2n(wsgi_req->document_root, wsgi_req->document_root_len, "", 0); + char *real_docroot = uwsgi_malloc(PATH_MAX+1); + if (!realpath(orig_docroot, real_docroot)) { + uwsgi_error("realpath()"); + free(orig_docroot); + free(real_docroot); + return -1; + } + if (!uwsgi_file_serve(wsgi_req, real_docroot, strlen(real_docroot), wsgi_req->path_info, wsgi_req->path_info_len)) { + free(orig_docroot); + free(real_docroot); return -1; } + free(orig_docroot); + free(real_docroot); } return 0;