commit 3d9ef5b47476cc2d6aa05a8851e4acdfb02ad137 from: kirill date: Mon May 11 22:33:10 2026 UTC usr.sbin/httpd: widen server flags to 64-bit integers OK job@ 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 @@ -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 @@ -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 @@ -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 @@ -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;