Module Name: src
Committed By: mrg
Date: Thu Jan 17 07:34:06 UTC 2019
Modified Files:
src/libexec/httpd: CHANGES cgi-bozo.c daemon-bozo.c
Log Message:
- fix CGI '+' param and error handling.
- remove unused parameter to daemon_poll_err().
both from "Rajeev V. Pillai" <[email protected]>
To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/libexec/httpd/CHANGES
cvs rdiff -u -r1.45 -r1.46 src/libexec/httpd/cgi-bozo.c
cvs rdiff -u -r1.19 -r1.20 src/libexec/httpd/daemon-bozo.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/libexec/httpd/CHANGES
diff -u src/libexec/httpd/CHANGES:1.34 src/libexec/httpd/CHANGES:1.35
--- src/libexec/httpd/CHANGES:1.34 Wed Dec 19 12:40:32 2018
+++ src/libexec/httpd/CHANGES Thu Jan 17 07:34:06 2019
@@ -1,4 +1,8 @@
-$NetBSD: CHANGES,v 1.34 2018/12/19 12:40:32 mrg Exp $
+$NetBSD: CHANGES,v 1.35 2019/01/17 07:34:06 mrg Exp $
+
+changes in bozohttpd 20190116:
+ o fix CGI '+' parameter handling, and a double free. from
+ [email protected]
changes in bozohttpd 20181215:
o fix .htpasswd bypass for authenticated users. reported by JP,
Index: src/libexec/httpd/cgi-bozo.c
diff -u src/libexec/httpd/cgi-bozo.c:1.45 src/libexec/httpd/cgi-bozo.c:1.46
--- src/libexec/httpd/cgi-bozo.c:1.45 Sat Nov 24 13:03:15 2018
+++ src/libexec/httpd/cgi-bozo.c Thu Jan 17 07:34:06 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cgi-bozo.c,v 1.45 2018/11/24 13:03:15 christos Exp $ */
+/* $NetBSD: cgi-bozo.c,v 1.46 2019/01/17 07:34:06 mrg Exp $ */
/* $eterna: cgi-bozo.c,v 1.40 2011/11/18 09:21:15 mrg Exp $ */
@@ -241,10 +241,10 @@ parse_search_string(bozo_httpreq_t *requ
args[0] = str;
args[*args_len] = NULL;
- for (s = str, i = 0; (s = strchr(s, '+')) != NULL;) {
+ for (s = str, i = 1; (s = strchr(s, '+')) != NULL; i++) {
*s = '\0';
s++;
- args[i++] = s;
+ args[i] = s;
}
/*
@@ -333,8 +333,7 @@ parse_search_string(bozo_httpreq_t *requ
parse_err:
- free (str);
- free (*args);
+ free(str);
free(args);
*args_len = 0;
@@ -610,9 +609,12 @@ bozo_process_cgi(bozo_httpreq_t *request
closelog();
bozo_daemon_closefds(httpd);
- if (-1 == execve(path, argv, envp))
+ if (-1 == execve(path, argv, envp)) {
+ bozo_http_error(httpd, 404, request,
+ "Cannot execute CGI");
bozoerr(httpd, 1, "child exec failed: %s: %s",
path, strerror(errno));
+ }
/* NOT REACHED */
bozoerr(httpd, 1, "child execve returned?!");
}
Index: src/libexec/httpd/daemon-bozo.c
diff -u src/libexec/httpd/daemon-bozo.c:1.19 src/libexec/httpd/daemon-bozo.c:1.20
--- src/libexec/httpd/daemon-bozo.c:1.19 Thu Nov 22 08:54:08 2018
+++ src/libexec/httpd/daemon-bozo.c Thu Jan 17 07:34:06 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: daemon-bozo.c,v 1.19 2018/11/22 08:54:08 mrg Exp $ */
+/* $NetBSD: daemon-bozo.c,v 1.20 2019/01/17 07:34:06 mrg Exp $ */
/* $eterna: daemon-bozo.c,v 1.24 2011/11/18 09:21:15 mrg Exp $ */
@@ -205,7 +205,7 @@ daemon_runchild(bozohttpd_t *httpd, int
}
static int
-daemon_poll_err(bozohttpd_t *httpd, int fd, int idx)
+daemon_poll_err(bozohttpd_t *httpd, int idx)
{
if ((httpd->fds[idx].revents & (POLLNVAL|POLLERR|POLLHUP)) == 0)
return 0;
@@ -284,7 +284,7 @@ again:
}
for (i = 0; i < httpd->nsock; i++) {
- if (daemon_poll_err(httpd, fd, i))
+ if (daemon_poll_err(httpd, i))
break;
if (httpd->fds[i].revents == 0)
continue;