=================================================================== RCS file: /cvs/mandoc/cgi.c,v retrieving revision 1.32 retrieving revision 1.34 diff -u -p -r1.32 -r1.34 --- mandoc/cgi.c 2011/12/15 12:05:19 1.32 +++ mandoc/cgi.c 2011/12/16 08:04:34 1.34 @@ -1,4 +1,4 @@ -/* $Id: cgi.c,v 1.32 2011/12/15 12:05:19 kristaps Exp $ */ +/* $Id: cgi.c,v 1.34 2011/12/16 08:04:34 kristaps Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * @@ -497,6 +497,8 @@ resp_search(struct res *r, size_t sz, void *arg) resp_begin_html(200, NULL); resp_searchform(req); + puts("
"); + if (0 == sz) { printf("

\n" "No %s results found.\n", @@ -512,12 +514,12 @@ resp_search(struct res *r, size_t sz, void *arg) puts("\">apropos?)"); } puts("

"); + puts("
"); resp_end_html(); return; } - puts("

\n" - ""); + puts("
"); for (i = 0; i < (int)sz; i++) { printf("\n" @@ -540,7 +542,8 @@ resp_search(struct res *r, size_t sz, void *arg) ""); } - puts("
"); + puts("\n" + ""); resp_end_html(); } @@ -746,6 +749,7 @@ static void pg_show(const struct req *req, char *path) { struct manpaths ps; + size_t sz; char *sub; char file[MAXPATHLEN]; const char *fn, *cp; @@ -801,7 +805,8 @@ pg_show(const struct req *req, char *path) goto out; } - strlcpy(file, ps.paths[vol], MAXPATHLEN); + sz = strlcpy(file, ps.paths[vol], MAXPATHLEN); + assert(sz < MAXPATHLEN); strlcat(file, "/mandoc.index", MAXPATHLEN); /* Open the index recno(3) database. */ @@ -830,10 +835,13 @@ pg_show(const struct req *req, char *path) else if (NULL == memchr(fn, '\0', val.size - (fn - cp))) resp_baddb(); else { + file[(int)sz] = '\0'; + strlcat(file, "/", MAXPATHLEN); + strlcat(file, fn, MAXPATHLEN); if (0 == strcmp(cp, "cat")) - catman(req, fn + 1); + catman(req, file); else - format(req, fn + 1); + format(req, file); } out: if (idx)