Commit Diff


commit - 9711a56ef7f3c9977ef6a188095f50d35db53ce3
commit + 3d9ef5b47476cc2d6aa05a8851e4acdfb02ad137
blob - 78bfac7fdedee95ead1b839ad082fa8f350b7567
blob + fc37148221bb216be2cb642ddc0ea36cf5e6c0a2
--- config.c
+++ config.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: config.c,v 1.70 2026/05/10 10:02:04 kirill Exp $	*/
+/*	$OpenBSD: config.c,v 1.71 2026/05/11 22:33:10 kirill Exp $	*/
 
 /*
  * Copyright (c) 2011 - 2015 Reyk Floeter <reyk@openbsd.org>
@@ -501,7 +501,7 @@ config_getserver_config(struct httpd *env, struct serv
 #endif
 	struct server_config	*srv_conf, *parent;
 	uint8_t			*p = imsg->data;
-	unsigned int		 f;
+	uint64_t		 f;
 	size_t			 s;
 
 	if ((srv_conf = calloc(1, sizeof(*srv_conf))) == NULL)
blob - 4f84c00c6449947f21a1bd41ac874f2ea9e495e3
blob + b3a6b83f0d25027a2311ba43e2d03178f0f08234
--- httpd.c
+++ httpd.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: httpd.c,v 1.77 2026/03/02 19:24:58 rsadowski Exp $	*/
+/*	$OpenBSD: httpd.c,v 1.78 2026/05/11 22:33:10 kirill Exp $	*/
 
 /*
  * Copyright (c) 2014 Reyk Floeter <reyk@openbsd.org>
@@ -1218,7 +1218,7 @@ print_host(struct sockaddr_storage *ss, char *buf, siz
 }
 
 const char *
-printb_flags(const uint32_t v, const char *bits)
+printb_flags(const uint64_t v, const char *bits)
 {
 	static char	 buf[2][BUFSIZ];
 	static int	 idx = 0;
@@ -1231,13 +1231,15 @@ printb_flags(const uint32_t v, const char *bits)
 	if (bits) {
 		bits++;
 		while ((i = *bits++)) {
-			if (v & (1 << (i - 1))) {
+			if (v & (1ULL << (i - 1))) {
 				if (any) {
 					*p++ = ',';
 					*p++ = ' ';
 				}
 				any = 1;
-				for (; (c = *bits) > 32; bits++) {
+				for (; isalnum((unsigned char)*bits) ||
+				    *bits == '_'; bits++) {
+					c = *bits;
 					if (c == '_')
 						*p++ = ' ';
 					else
@@ -1245,7 +1247,8 @@ printb_flags(const uint32_t v, const char *bits)
 						    tolower((unsigned char)c);
 				}
 			} else
-				for (; *bits > 32; bits++)
+				for (; isalnum((unsigned char)*bits) ||
+				    *bits == '_'; bits++)
 					;
 		}
 	}
blob - c7bef17d3e53bb264e52c28c93e60015957b7784
blob + 8fc5d2adb05cadcd1ce5e350fb063fe44608ea15
--- httpd.h
+++ httpd.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: httpd.h,v 1.170 2026/05/10 10:02:04 kirill Exp $	*/
+/*	$OpenBSD: httpd.h,v 1.171 2026/05/11 22:33:10 kirill Exp $	*/
 
 /*
  * Copyright (c) 2006 - 2015 Reyk Floeter <reyk@openbsd.org>
@@ -119,7 +119,7 @@ enum httpchunk {
 
 struct ctl_flags {
 	uint8_t		 cf_opts;
-	uint32_t	 cf_flags;
+	uint64_t	 cf_flags;
 	uint8_t		 cf_tls_sid[TLS_MAX_SESSION_ID_LENGTH];
 };
 
@@ -362,37 +362,37 @@ struct client {
 };
 SPLAY_HEAD(client_tree, client);
 
-#define SRVFLAG_INDEX		0x00000001
-#define SRVFLAG_NO_INDEX	0x00000002
-#define SRVFLAG_AUTO_INDEX	0x00000004
-#define SRVFLAG_NO_AUTO_INDEX	0x00000008
-#define SRVFLAG_ROOT		0x00000010
-#define SRVFLAG_LOCATION	0x00000020
-#define SRVFLAG_FCGI		0x00000040
-#define SRVFLAG_NO_FCGI		0x00000080
-#define SRVFLAG_LOG		0x00000100
-#define SRVFLAG_NO_LOG		0x00000200
-#define SRVFLAG_ERRDOCS		0x00000400
-#define SRVFLAG_SYSLOG		0x00000800
-#define SRVFLAG_NO_SYSLOG	0x00001000
-#define SRVFLAG_TLS		0x00002000
-#define SRVFLAG_ACCESS_LOG	0x00004000
-#define SRVFLAG_ERROR_LOG	0x00008000
-#define SRVFLAG_AUTH		0x00010000
-#define SRVFLAG_NO_AUTH		0x00020000
-#define SRVFLAG_BLOCK		0x00040000
-#define SRVFLAG_NO_BLOCK	0x00080000
-#define SRVFLAG_LOCATION_MATCH	0x00100000
-#define SRVFLAG_SERVER_MATCH	0x00200000
-#define SRVFLAG_SERVER_HSTS	0x00400000
-#define SRVFLAG_DEFAULT_TYPE	0x00800000
-#define SRVFLAG_PATH_REWRITE	0x01000000
-#define SRVFLAG_NO_PATH_REWRITE	0x02000000
-#define SRVFLAG_GZIP_STATIC	0x04000000
-#define SRVFLAG_NO_BANNER	0x08000000
-#define SRVFLAG_NO_GZIP_STATIC	0x10000000
-#define SRVFLAG_LOCATION_FOUND	0x40000000
-#define SRVFLAG_LOCATION_NOT_FOUND 0x80000000
+#define SRVFLAG_INDEX			0x0000000000000001ULL
+#define SRVFLAG_NO_INDEX		0x0000000000000002ULL
+#define SRVFLAG_AUTO_INDEX		0x0000000000000004ULL
+#define SRVFLAG_NO_AUTO_INDEX		0x0000000000000008ULL
+#define SRVFLAG_ROOT			0x0000000000000010ULL
+#define SRVFLAG_LOCATION		0x0000000000000020ULL
+#define SRVFLAG_FCGI			0x0000000000000040ULL
+#define SRVFLAG_NO_FCGI			0x0000000000000080ULL
+#define SRVFLAG_LOG			0x0000000000000100ULL
+#define SRVFLAG_NO_LOG			0x0000000000000200ULL
+#define SRVFLAG_ERRDOCS			0x0000000000000400ULL
+#define SRVFLAG_SYSLOG			0x0000000000000800ULL
+#define SRVFLAG_NO_SYSLOG		0x0000000000001000ULL
+#define SRVFLAG_TLS			0x0000000000002000ULL
+#define SRVFLAG_ACCESS_LOG		0x0000000000004000ULL
+#define SRVFLAG_ERROR_LOG		0x0000000000008000ULL
+#define SRVFLAG_AUTH			0x0000000000010000ULL
+#define SRVFLAG_NO_AUTH			0x0000000000020000ULL
+#define SRVFLAG_BLOCK			0x0000000000040000ULL
+#define SRVFLAG_NO_BLOCK		0x0000000000080000ULL
+#define SRVFLAG_LOCATION_MATCH		0x0000000000100000ULL
+#define SRVFLAG_SERVER_MATCH		0x0000000000200000ULL
+#define SRVFLAG_SERVER_HSTS		0x0000000000400000ULL
+#define SRVFLAG_DEFAULT_TYPE		0x0000000000800000ULL
+#define SRVFLAG_PATH_REWRITE		0x0000000001000000ULL
+#define SRVFLAG_NO_PATH_REWRITE		0x0000000002000000ULL
+#define SRVFLAG_GZIP_STATIC		0x0000000004000000ULL
+#define SRVFLAG_NO_BANNER		0x0000000008000000ULL
+#define SRVFLAG_NO_GZIP_STATIC		0x0000000010000000ULL
+#define SRVFLAG_LOCATION_FOUND		0x0000000040000000ULL
+#define SRVFLAG_LOCATION_NOT_FOUND	0x0000000080000000ULL
 
 #define SRVFLAG_BITS							\
 	"\10\01INDEX\02NO_INDEX\03AUTO_INDEX\04NO_AUTO_INDEX"		\
@@ -516,7 +516,7 @@ struct server_config {
 	struct server_tls_ticket tls_ticket_key;
 	int			 tls_ticket_lifetime;
 
-	uint32_t		 flags;
+	uint64_t		 flags;
 	int			 strip;
 	uint8_t			 tcpflags;
 	int			 tcpbufsiz;
@@ -582,7 +582,7 @@ TAILQ_HEAD(serverlist, server);
 
 struct httpd {
 	uint8_t			 sc_opts;
-	uint32_t		 sc_flags;
+	uint64_t		 sc_flags;
 	const char		*sc_conffile;
 	struct event		 sc_ev;
 	uint16_t		 sc_prefork_server;
@@ -756,7 +756,7 @@ struct auth	*auth_add(struct serverauth *, struct auth
 struct auth	*auth_byid(struct serverauth *, uint32_t);
 void		 auth_free(struct serverauth *, struct auth *);
 const char	*print_host(struct sockaddr_storage *, char *, size_t);
-const char	*printb_flags(const uint32_t, const char *);
+const char	*printb_flags(const uint64_t, const char *);
 void		 getmonotime(struct timeval *);
 
 extern struct httpd *httpd_env;
blob - 7b026210bc3dbf9982aef9557f70fbdd723e7f81
blob + 060a6671db52a49724b68deeb3b23193a5b9f910
--- parse.y
+++ parse.y
@@ -1,4 +1,4 @@
-/*	$OpenBSD: parse.y,v 1.132 2026/05/10 10:02:04 kirill Exp $	*/
+/*	$OpenBSD: parse.y,v 1.133 2026/05/11 22:33:10 kirill Exp $	*/
 
 /*
  * Copyright (c) 2020 Matthias Pressfreund <mpfr@fn.de>
@@ -646,7 +646,7 @@ serveroptsl	: LISTEN ON STRING opttls port	{
 			SPLAY_INIT(&srv->srv_clients);
 		} '{' optnl serveropts_l '}'	{
 			struct server	*s = NULL;
-			uint32_t	 f;
+			uint64_t	 f;
 
 			f = SRVFLAG_LOCATION_FOUND |
 			    SRVFLAG_LOCATION_NOT_FOUND;