From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (schwarze@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id s6PGhbRL005051 for ; Fri, 25 Jul 2014 12:43:37 -0400 (EDT) Received: (from schwarze@localhost) by krisdoz.my.domain (8.14.5/8.14.3/Submit) id s6PGhbKP001720; Fri, 25 Jul 2014 12:43:37 -0400 (EDT) Date: Fri, 25 Jul 2014 12:43:37 -0400 (EDT) Message-Id: <201407251643.s6PGhbKP001720@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: clean up pg_show() to not modify a string returned from X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- clean up pg_show() to not modify a string returned from getenv(3) Modified Files: -------------- mdocml: cgi.c Revision Data ------------- Index: cgi.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/cgi.c,v retrieving revision 1.83 retrieving revision 1.84 diff -Lcgi.c -Lcgi.c -u -p -r1.83 -r1.84 --- cgi.c +++ cgi.c @@ -908,20 +908,23 @@ resp_show(const struct req *req, const c } static void -pg_show(struct req *req, const char *path) +pg_show(struct req *req, const char *fullpath) { - char *sub; + char *manpath; + const char *file; - if (NULL == path || NULL == (sub = strchr(path, '/'))) { + if ((file = strchr(fullpath, '/')) == NULL) { pg_error_badrequest( "You did not specify a page to show."); return; } - *sub++ = '\0'; + manpath = mandoc_strndup(fullpath, file - fullpath); + file++; - if ( ! validate_manpath(req, path)) { + if ( ! validate_manpath(req, manpath)) { pg_error_badrequest( "You specified an invalid manpath."); + free(manpath); return; } @@ -931,27 +934,29 @@ pg_show(struct req *req, const char *pat * relative to the manpath root. */ - if (-1 == chdir(path)) { + if (chdir(manpath) == -1) { fprintf(stderr, "chdir %s: %s\n", - path, strerror(errno)); + manpath, strerror(errno)); pg_error_internal(); + free(manpath); return; } - if ( ! validate_filename(sub)) { + if (strcmp(manpath, "mandoc")) { + free(req->q.manpath); + req->q.manpath = manpath; + } else + free(manpath); + + if ( ! validate_filename(file)) { pg_error_badrequest( "You specified an invalid manual file."); return; } - if (strcmp(path, "mandoc")) { - free(req->q.manpath); - req->q.manpath = mandoc_strdup(path); - } - resp_begin_html(200, NULL); resp_searchform(req); - resp_show(req, sub); + resp_show(req, file); resp_end_html(); } -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv