Module Name: src
Committed By: mrg
Date: Tue Jan 22 05:32:57 UTC 2019
Modified Files:
src/libexec/httpd: CHANGES auth-bozo.c bozohttpd.c bozohttpd.h
dir-index-bozo.c
Log Message:
o don't display special files in the directory index. they aren't
served, but links to them are generated.
To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/libexec/httpd/CHANGES
cvs rdiff -u -r1.22 -r1.23 src/libexec/httpd/auth-bozo.c
cvs rdiff -u -r1.110 -r1.111 src/libexec/httpd/bozohttpd.c
cvs rdiff -u -r1.57 -r1.58 src/libexec/httpd/bozohttpd.h
cvs rdiff -u -r1.30 -r1.31 src/libexec/httpd/dir-index-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.36 src/libexec/httpd/CHANGES:1.37
--- src/libexec/httpd/CHANGES:1.36 Thu Jan 17 07:46:16 2019
+++ src/libexec/httpd/CHANGES Tue Jan 22 05:32:57 2019
@@ -1,4 +1,8 @@
-$NetBSD: CHANGES,v 1.36 2019/01/17 07:46:16 mrg Exp $
+$NetBSD: CHANGES,v 1.37 2019/01/22 05:32:57 mrg Exp $
+
+changes in bozohttpd 20190121:
+ o don't display special files in the directory index. they aren't
+ served, but links to them are generated.
changes in bozohttpd 20190116:
o fix CGI '+' parameter handling, some error checking, and a double
Index: src/libexec/httpd/auth-bozo.c
diff -u src/libexec/httpd/auth-bozo.c:1.22 src/libexec/httpd/auth-bozo.c:1.23
--- src/libexec/httpd/auth-bozo.c:1.22 Thu Nov 22 08:54:08 2018
+++ src/libexec/httpd/auth-bozo.c Tue Jan 22 05:32:57 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: auth-bozo.c,v 1.22 2018/11/22 08:54:08 mrg Exp $ */
+/* $NetBSD: auth-bozo.c,v 1.23 2019/01/22 05:32:57 mrg Exp $ */
/* $eterna: auth-bozo.c,v 1.17 2011/11/18 09:21:15 mrg Exp $ */
@@ -64,7 +64,7 @@ bozo_auth_check(bozo_httpreq_t *request,
strcpy(dir, ".");
else {
*basename++ = '\0';
- if (bozo_check_special_files(request, basename))
+ if (bozo_check_special_files(request, basename, true))
return 1;
}
request->hr_authrealm = bozostrdup(httpd, request, dir);
Index: src/libexec/httpd/bozohttpd.c
diff -u src/libexec/httpd/bozohttpd.c:1.110 src/libexec/httpd/bozohttpd.c:1.111
--- src/libexec/httpd/bozohttpd.c:1.110 Fri Jan 18 06:04:10 2019
+++ src/libexec/httpd/bozohttpd.c Tue Jan 22 05:32:57 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bozohttpd.c,v 1.110 2019/01/18 06:04:10 mrg Exp $ */
+/* $NetBSD: bozohttpd.c,v 1.111 2019/01/22 05:32:57 mrg Exp $ */
/* $eterna: bozohttpd.c,v 1.178 2011/11/18 09:21:15 mrg Exp $ */
@@ -109,7 +109,7 @@
#define INDEX_HTML "index.html"
#endif
#ifndef SERVER_SOFTWARE
-#define SERVER_SOFTWARE "bozohttpd/20190116"
+#define SERVER_SOFTWARE "bozohttpd/20190121"
#endif
#ifndef PUBLIC_HTML
#define PUBLIC_HTML "public_html"
@@ -140,7 +140,6 @@
#include <signal.h>
#include <stdarg.h>
#include <stdlib.h>
-#include <stdbool.h>
#include <strings.h>
#include <string.h>
#include <syslog.h>
@@ -1461,7 +1460,7 @@ check_bzredirect(bozo_httpreq_t *request
*basename++ = '\0';
strcpy(path, dir);
}
- if (bozo_check_special_files(request, basename))
+ if (bozo_check_special_files(request, basename, true))
return -1;
debug((httpd, DEBUG_FAT, "check_bzredirect: path %s", path));
@@ -1913,17 +1912,24 @@ bozo_process_request(bozo_httpreq_t *req
/* make sure we're not trying to access special files */
int
-bozo_check_special_files(bozo_httpreq_t *request, const char *name)
+bozo_check_special_files(bozo_httpreq_t *request, const char *name, bool doerror)
{
bozohttpd_t *httpd = request->hr_httpd;
size_t i;
+ int error = 0;
- for (i = 0; specials[i].file; i++)
- if (strcmp(name, specials[i].file) == 0)
- return bozo_http_error(httpd, 403, request,
+ for (i = 0; specials[i].file; i++) {
+ if (strcmp(name, specials[i].file) == 0) {
+ if (doerror) {
+ error = bozo_http_error(httpd, 403, request,
specials[i].name);
+ } else {
+ error = -1;
+ }
+ }
+ }
- return 0;
+ return error;
}
/* generic header printing routine */
Index: src/libexec/httpd/bozohttpd.h
diff -u src/libexec/httpd/bozohttpd.h:1.57 src/libexec/httpd/bozohttpd.h:1.58
--- src/libexec/httpd/bozohttpd.h:1.57 Sat Nov 24 13:02:46 2018
+++ src/libexec/httpd/bozohttpd.h Tue Jan 22 05:32:57 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bozohttpd.h,v 1.57 2018/11/24 13:02:46 christos Exp $ */
+/* $NetBSD: bozohttpd.h,v 1.58 2019/01/22 05:32:57 mrg Exp $ */
/* $eterna: bozohttpd.h,v 1.39 2011/11/18 09:21:15 mrg Exp $ */
@@ -34,6 +34,8 @@
#include "netbsd_queue.h"
+#include <stdbool.h>
+
#include <sys/stat.h>
#ifndef NO_LUA_SUPPORT
@@ -259,7 +261,7 @@ void debug__(bozohttpd_t *, int, const c
/* be sure to always return this error up */
int bozo_http_error(bozohttpd_t *, int, bozo_httpreq_t *, const char *);
-int bozo_check_special_files(bozo_httpreq_t *, const char *) BOZO_CHECKRET;
+int bozo_check_special_files(bozo_httpreq_t *, const char *, bool) BOZO_CHECKRET;
char *bozo_http_date(char *, size_t);
void bozo_print_header(bozo_httpreq_t *, struct stat *, const char *,
const char *);
Index: src/libexec/httpd/dir-index-bozo.c
diff -u src/libexec/httpd/dir-index-bozo.c:1.30 src/libexec/httpd/dir-index-bozo.c:1.31
--- src/libexec/httpd/dir-index-bozo.c:1.30 Thu Jan 17 07:46:16 2019
+++ src/libexec/httpd/dir-index-bozo.c Tue Jan 22 05:32:57 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dir-index-bozo.c,v 1.30 2019/01/17 07:46:16 mrg Exp $ */
+/* $NetBSD: dir-index-bozo.c,v 1.31 2019/01/22 05:32:57 mrg Exp $ */
/* $eterna: dir-index-bozo.c,v 1.20 2011/11/18 09:21:15 mrg Exp $ */
@@ -148,6 +148,9 @@ bozo_dir_index(bozo_httpreq_t *request,
httpd->hide_dots && name[0] == '.'))
continue;
+ if (bozo_check_special_files(request, name, false))
+ continue;
+
snprintf(buf, sizeof buf, "%s/%s", dirpath, name);
if (stat(buf, &sb))
nostat = 1;