commit 0bfdd8d71ab43b0aa0b880503a651d58e112ef98
parent 641d2e97c99776570f2cfbe57d0daf127d12cc43
Author: Christian Grothoff <christian@grothoff.org>
Date: Thu, 30 Jul 2026 17:46:29 +0200
releasing v1.0.9
Diffstat:
7 files changed, 222 insertions(+), 201 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,12 @@
+Thu Jul 30 05:32:00 PM CEST 2026
+ Enfocing a minimal size on the PSK.
+ Fix support for red zones in memorypool.
+ Fix rare over-writing of HTTP version string with network data
+ after parsing header.
+ Fix rare crash from adding connection manually followed by
+ immediate daemon shutdown.
+ Releasing GNU libmicrohttpd 1.0.9. -CG
+
Tue Jul 28 06:12:03 PM CEST 2026
Fixing additional vulnerabilities inspired by reviewing the
code for similar issues like the ones reported by A. Ramos;
diff --git a/NEWS b/NEWS
@@ -1,3 +1,11 @@
+Thu Jul 30 05:34:18 PM CEST 2026
+Released GNU libmicrohttpd 1.0.9.
+
+ This is a bugfix release, fixing minor vulnerabilities
+ and expanding the test suite.
+
+ -- Christian Grothoff
+
Tue Jul 28 06:13:26 PM CEST 2026
Released GNU libmicrohttpd 1.0.8.
diff --git a/configure.ac b/configure.ac
@@ -23,7 +23,7 @@
#
AC_PREREQ([2.64])
LT_PREREQ([2.4.0])
-AC_INIT([GNU libmicrohttpd],[1.0.8],[libmicrohttpd@gnu.org])
+AC_INIT([GNU libmicrohttpd],[1.0.9],[libmicrohttpd@gnu.org])
AC_CONFIG_AUX_DIR([build-aux])
MHD_AUX_DIR='build-aux' # Must be set to the same value as in the previous line
AC_CONFIG_HEADERS([MHD_config.h])
@@ -31,7 +31,7 @@ AC_CONFIG_MACRO_DIR([m4])
m4_pattern_forbid([^_?MHD_[A-Z_]+_CC_])dnl
LIB_VERSION_CURRENT=74
-LIB_VERSION_REVISION=6
+LIB_VERSION_REVISION=7
LIB_VERSION_AGE=62
AC_SUBST([LIB_VERSION_CURRENT])
AC_SUBST([LIB_VERSION_REVISION])
diff --git a/po/libmicrohttpd.pot b/po/libmicrohttpd.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: GNU libmicrohttpd 1.0.8\n"
+"Project-Id-Version: GNU libmicrohttpd 1.0.9\n"
"Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n"
-"POT-Creation-Date: 2026-07-29 00:02+0200\n"
+"POT-Creation-Date: 2026-07-30 17:35+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -62,8 +62,8 @@ msgid "Wrong error code value"
msgstr ""
#: src/microhttpd/connection.c:1403 src/microhttpd/connection.c:1422
-#: src/microhttpd/daemon.c:3338 src/microhttpd/daemon.c:4165
-#: src/microhttpd/daemon.c:9135
+#: src/microhttpd/daemon.c:3360 src/microhttpd/daemon.c:4187
+#: src/microhttpd/daemon.c:9157
msgid "Failed to remove FD from epoll set.\n"
msgstr ""
@@ -144,8 +144,8 @@ msgstr ""
msgid "Invalid TLS state value.\n"
msgstr ""
-#: src/microhttpd/connection.c:3878 src/microhttpd/connection.c:6899
-#: src/microhttpd/connection.c:6997 src/microhttpd/connection.c:7596
+#: src/microhttpd/connection.c:3878 src/microhttpd/connection.c:6909
+#: src/microhttpd/connection.c:7007 src/microhttpd/connection.c:7606
#, c-format
msgid "In function %s handling connection at state: %s\n"
msgstr ""
@@ -309,181 +309,181 @@ msgstr ""
msgid "%<PRIu64> %s lines without colons has been skipped.\n"
msgstr ""
-#: src/microhttpd/connection.c:6848
+#: src/microhttpd/connection.c:6858
msgid "Socket has been disconnected when reading request.\n"
msgstr ""
-#: src/microhttpd/connection.c:6860
+#: src/microhttpd/connection.c:6870
#, c-format
msgid "Connection socket is closed when reading request due to the error: %s\n"
msgstr ""
-#: src/microhttpd/connection.c:6878
+#: src/microhttpd/connection.c:6888
msgid "Connection was closed by remote side with incomplete request.\n"
msgstr ""
-#: src/microhttpd/connection.c:7024
+#: src/microhttpd/connection.c:7034
#, c-format
msgid "Failed to send data in request for %s.\n"
msgstr ""
-#: src/microhttpd/connection.c:7033
+#: src/microhttpd/connection.c:7043
#, c-format
msgid "Sent 100 continue response: `%.*s'\n"
msgstr ""
-#: src/microhttpd/connection.c:7110
+#: src/microhttpd/connection.c:7120
#, c-format
msgid ""
"Failed to send the response headers for the request for `%s'. Error: %s\n"
msgstr ""
-#: src/microhttpd/connection.c:7176
+#: src/microhttpd/connection.c:7186
msgid "Data offset exceeds limit.\n"
msgstr ""
-#: src/microhttpd/connection.c:7186
+#: src/microhttpd/connection.c:7196
#, c-format
msgid "Sent %d-byte DATA response: `%.*s'\n"
msgstr ""
-#: src/microhttpd/connection.c:7203
+#: src/microhttpd/connection.c:7213
#, c-format
msgid "Failed to send the response body for the request for `%s'. Error: %s\n"
msgstr ""
-#: src/microhttpd/connection.c:7235
+#: src/microhttpd/connection.c:7245
#, c-format
msgid ""
"Failed to send the chunked response body for the request for `%s'. Error: "
"%s\n"
msgstr ""
-#: src/microhttpd/connection.c:7271
+#: src/microhttpd/connection.c:7281
#, c-format
msgid "Failed to send the footers for the request for `%s'. Error: %s\n"
msgstr ""
-#: src/microhttpd/connection.c:7300
+#: src/microhttpd/connection.c:7310
msgid "Internal error.\n"
msgstr ""
-#: src/microhttpd/connection.c:7339
+#: src/microhttpd/connection.c:7349
#, c-format
msgid "Detected system clock %u milliseconds jump back.\n"
msgstr ""
-#: src/microhttpd/connection.c:7346
+#: src/microhttpd/connection.c:7356
#, c-format
msgid "Detected too large system clock %<PRIu64> milliseconds jump back.\n"
msgstr ""
-#: src/microhttpd/connection.c:7428
+#: src/microhttpd/connection.c:7438
msgid ""
"Failed to signal end of connection via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/connection.c:7742
+#: src/microhttpd/connection.c:7752
msgid "Closing connection (failed to create response header).\n"
msgstr ""
-#: src/microhttpd/connection.c:7876
+#: src/microhttpd/connection.c:7886
msgid "Closing connection (failed to create response footer)."
msgstr ""
-#: src/microhttpd/connection.c:7987 src/microhttpd/daemon.c:3043
-#: src/microhttpd/daemon.c:5625 src/microhttpd/daemon.c:5659
-#: src/microhttpd/daemon.c:7569 src/microhttpd/daemon.c:7588
+#: src/microhttpd/connection.c:7997 src/microhttpd/daemon.c:3065
+#: src/microhttpd/daemon.c:5647 src/microhttpd/daemon.c:5681
+#: src/microhttpd/daemon.c:7591 src/microhttpd/daemon.c:7610
#: src/microhttpd/response.c:2078 src/microhttpd/response.c:2104
#, c-format
msgid "Call to epoll_ctl failed: %s\n"
msgstr ""
-#: src/microhttpd/connection.c:8151 src/microhttpd/daemon.c:6794
+#: src/microhttpd/connection.c:8161 src/microhttpd/daemon.c:6816
#, c-format
msgid ""
"The specified connection timeout (%u) is too large. Maximum allowed value "
"(%<PRIu64>) will be used instead.\n"
msgstr ""
-#: src/microhttpd/connection.c:8267
+#: src/microhttpd/connection.c:8277
msgid "Attempted to queue response on wrong thread!\n"
msgstr ""
-#: src/microhttpd/connection.c:8291
+#: src/microhttpd/connection.c:8300
msgid ""
"Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n"
msgstr ""
-#: src/microhttpd/connection.c:8300
+#: src/microhttpd/connection.c:8309
msgid "Application used invalid status code for 'upgrade' response!\n"
msgstr ""
-#: src/microhttpd/connection.c:8309
+#: src/microhttpd/connection.c:8318
msgid "Application used invalid response without \"Connection\" header!\n"
msgstr ""
-#: src/microhttpd/connection.c:8323
+#: src/microhttpd/connection.c:8336
msgid ""
"Application used invalid response without \"upgrade\" token in "
"\"Connection\" header!\n"
msgstr ""
-#: src/microhttpd/connection.c:8333
+#: src/microhttpd/connection.c:8346
msgid "Connection \"Upgrade\" can be used only with HTTP/1.1 connections!\n"
msgstr ""
-#: src/microhttpd/connection.c:8354
+#: src/microhttpd/connection.c:8367
msgid ""
"Connection cannot be upgraded: it has already been marked as \"must close\" "
"while the request was being parsed.\n"
msgstr ""
-#: src/microhttpd/connection.c:8369
+#: src/microhttpd/connection.c:8382
msgid ""
"Application used status code 101 \"Switching Protocols\" with non-'upgrade' "
"response!\n"
msgstr ""
-#: src/microhttpd/connection.c:8377
+#: src/microhttpd/connection.c:8390
msgid ""
"Application used status code 101 \"Switching Protocols\", but this MHD was "
"built without \"Upgrade\" support!\n"
msgstr ""
-#: src/microhttpd/connection.c:8388
+#: src/microhttpd/connection.c:8401
#, c-format
msgid ""
"Refused wrong status code (%u). HTTP requires three digits status code!\n"
msgstr ""
-#: src/microhttpd/connection.c:8400
+#: src/microhttpd/connection.c:8413
#, c-format
msgid ""
"Wrong status code (%u) refused. HTTP/1.0 clients do not support 1xx status "
"codes!\n"
msgstr ""
-#: src/microhttpd/connection.c:8411
+#: src/microhttpd/connection.c:8424
#, c-format
msgid ""
"Wrong status code (%u) refused. HTTP/1.0 reply mode does not support 1xx "
"status codes!\n"
msgstr ""
-#: src/microhttpd/connection.c:8423
+#: src/microhttpd/connection.c:8436
#, c-format
msgid ""
"Successful (%u) response code cannot be used to answer \"CONNECT\" request!\n"
msgstr ""
-#: src/microhttpd/connection.c:8435
+#: src/microhttpd/connection.c:8448
msgid ""
"HEAD-only response cannot be used when the request requires reply body to be "
"sent!\n"
msgstr ""
-#: src/microhttpd/connection.c:8446
+#: src/microhttpd/connection.c:8459
msgid ""
"The response has application-defined \"Content-Length\" header. The reply to "
"the request will be not HTTP-compliant and may result in hung connection or "
@@ -545,7 +545,7 @@ msgid ""
"unsupported.\n"
msgstr ""
-#: src/microhttpd/daemon.c:1261 src/microhttpd/daemon.c:4755
+#: src/microhttpd/daemon.c:1261 src/microhttpd/daemon.c:4777
#, c-format
msgid ""
"%s() called with fd_setsize (%u) less than value set by "
@@ -553,7 +553,7 @@ msgid ""
"MHD_OPTION_APP_FD_SETSIZE with the correct value.\n"
msgstr ""
-#: src/microhttpd/daemon.c:1270 src/microhttpd/daemon.c:4764
+#: src/microhttpd/daemon.c:1270 src/microhttpd/daemon.c:4786
#, c-format
msgid ""
"%s() called with fd_setsize (%u) less than FD_SETSIZE used by MHD (%d). Some "
@@ -561,14 +561,14 @@ msgid ""
"option.\n"
msgstr ""
-#: src/microhttpd/daemon.c:1283 src/microhttpd/daemon.c:4777
+#: src/microhttpd/daemon.c:1283 src/microhttpd/daemon.c:4799
#, c-format
msgid ""
"%s() called with fd_setsize (%u) less than fixed FD_SETSIZE value (%d) used "
"on the platform.\n"
msgstr ""
-#: src/microhttpd/daemon.c:1532 src/microhttpd/daemon.c:9264
+#: src/microhttpd/daemon.c:1532 src/microhttpd/daemon.c:9293
msgid ""
"Initiated daemon shutdown while \"upgraded\" connection was not closed.\n"
msgstr ""
@@ -630,116 +630,120 @@ msgid ""
"Failed to signal thread termination via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2511
+#: src/microhttpd/daemon.c:2521
msgid "Internal server error. This should be impossible.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2521 src/microhttpd/daemon.c:2560
+#: src/microhttpd/daemon.c:2531 src/microhttpd/daemon.c:2582
msgid "PSK not supported by this server.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2535
+#: src/microhttpd/daemon.c:2545
+msgid "PSK authentication failed: PSK too short.\n"
+msgstr ""
+
+#: src/microhttpd/daemon.c:2554
msgid "PSK authentication failed: PSK too long.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2544
+#: src/microhttpd/daemon.c:2566
msgid "PSK authentication failed: gnutls_malloc failed to allocate memory.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2608
+#: src/microhttpd/daemon.c:2630
#, c-format
msgid "Accepted connection on socket %d.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2620 src/microhttpd/daemon.c:2961
+#: src/microhttpd/daemon.c:2642 src/microhttpd/daemon.c:2983
msgid "Server reached connection limit. Closing inbound connection.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2639
+#: src/microhttpd/daemon.c:2661
msgid "Connection rejected by application. Closing connection.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2657 src/microhttpd/daemon.c:2686
-#: src/microhttpd/daemon.c:2944 src/microhttpd/daemon.c:5094
-#: src/microhttpd/daemon.c:6681
+#: src/microhttpd/daemon.c:2679 src/microhttpd/daemon.c:2708
+#: src/microhttpd/daemon.c:2966 src/microhttpd/daemon.c:5116
+#: src/microhttpd/daemon.c:6703
#, c-format
msgid "Error allocating memory: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:2764
+#: src/microhttpd/daemon.c:2786
msgid "Failed to initialise TLS session.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2788
+#: src/microhttpd/daemon.c:2810
msgid "Failed to set ALPN protocols.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2818
+#: src/microhttpd/daemon.c:2840
#, c-format
msgid "Failed to setup TLS credentials: unknown credential type %d.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2830
+#: src/microhttpd/daemon.c:2852
msgid "Unknown credential type.\n"
msgstr ""
-#: src/microhttpd/daemon.c:2858
+#: src/microhttpd/daemon.c:2880
msgid "TLS connection on non-TLS daemon.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3005 src/microhttpd/daemon.c:8879
+#: src/microhttpd/daemon.c:3027 src/microhttpd/daemon.c:8901
msgid ""
"Failed to create a new thread because it would have exceeded the system "
"limit on the number of threads or no system resources available.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3011
+#: src/microhttpd/daemon.c:3033
#, c-format
msgid "Failed to create a thread: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:3164
+#: src/microhttpd/daemon.c:3186
#, c-format
msgid ""
"New connection socket descriptor (%d) is not less than FD_SETSIZE (%d).\n"
msgstr ""
-#: src/microhttpd/daemon.c:3181
+#: src/microhttpd/daemon.c:3203
msgid "Epoll mode supports only non-blocking sockets\n"
msgstr ""
-#: src/microhttpd/daemon.c:3218
+#: src/microhttpd/daemon.c:3240
msgid ""
"Failed to signal new connection via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3263
+#: src/microhttpd/daemon.c:3285
msgid "Failed to start serving new connection.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3391
+#: src/microhttpd/daemon.c:3413
msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n"
msgstr ""
-#: src/microhttpd/daemon.c:3398
+#: src/microhttpd/daemon.c:3420
msgid "Error: connection scheduled for \"upgrade\" cannot be suspended.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3431
+#: src/microhttpd/daemon.c:3453
msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n"
msgstr ""
-#: src/microhttpd/daemon.c:3446 src/microhttpd/daemon.c:3482
+#: src/microhttpd/daemon.c:3468 src/microhttpd/daemon.c:3504
msgid "Failed to signal resume via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3623
+#: src/microhttpd/daemon.c:3645
msgid ""
"Failed to signal resume of connection via inter-thread communication "
"channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3679
+#: src/microhttpd/daemon.c:3701
msgid ""
"MHD_add_connection() has been called for daemon started without MHD_USE_ITC "
"flag.\n"
@@ -747,128 +751,128 @@ msgid ""
"already added sockets.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3693 src/microhttpd/daemon.c:3719
+#: src/microhttpd/daemon.c:3715 src/microhttpd/daemon.c:3741
msgid "MHD_add_connection() has been called with incorrect 'addrlen' value.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3704 src/microhttpd/daemon.c:3730
+#: src/microhttpd/daemon.c:3726 src/microhttpd/daemon.c:3752
msgid ""
"MHD_add_connection() has been called with non-zero value of 'sa_len' member "
"of 'struct sockaddr' which does not match 'sa_family'.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3750
+#: src/microhttpd/daemon.c:3772
#, c-format
msgid "Failed to set nonblocking mode on new client socket: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:3770
+#: src/microhttpd/daemon.c:3792
#, c-format
msgid "Failed to suppress SIGPIPE on new client socket: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:3794
+#: src/microhttpd/daemon.c:3816
msgid "Failed to set noninheritable mode on new client socket.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3956
+#: src/microhttpd/daemon.c:3978
#, c-format
msgid "Error accepting connection: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:3969
+#: src/microhttpd/daemon.c:3991
msgid ""
"Hit process or system resource limit at FIRST connection. This is really bad "
"as there is no sane way to proceed. Will try busy waiting for system "
"resources to become magically available.\n"
msgstr ""
-#: src/microhttpd/daemon.c:3986
+#: src/microhttpd/daemon.c:4008
#, c-format
msgid ""
"Hit process or system resource limit at %u connections, temporarily "
"suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4002
+#: src/microhttpd/daemon.c:4024
msgid ""
"Accepted socket has zero-length address. Processing the new socket as a "
"socket with unknown type.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4015
+#: src/microhttpd/daemon.c:4037
msgid ""
"Accepted socket address is larger than expected by system headers. "
"Processing the new socket as a socket with unknown type.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4027
+#: src/microhttpd/daemon.c:4049
#, c-format
msgid "Failed to set nonblocking mode on incoming connection socket: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:4041
+#: src/microhttpd/daemon.c:4063
msgid "Failed to set noninheritable mode on incoming connection socket.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4053
+#: src/microhttpd/daemon.c:4075
#, c-format
msgid "Failed to suppress SIGPIPE on incoming connection socket: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:4075
+#: src/microhttpd/daemon.c:4097
#, c-format
msgid "Accepted connection on socket %d\n"
msgstr ""
-#: src/microhttpd/daemon.c:4121 src/microhttpd/daemon.c:9306
-#: src/microhttpd/daemon.c:9338 src/microhttpd/daemon.c:9371
-#: src/microhttpd/daemon.c:9485
+#: src/microhttpd/daemon.c:4143 src/microhttpd/daemon.c:9335
+#: src/microhttpd/daemon.c:9367 src/microhttpd/daemon.c:9400
+#: src/microhttpd/daemon.c:9514
msgid "Failed to join a thread.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4301
+#: src/microhttpd/daemon.c:4323
msgid "Illegal call to MHD_get_timeout.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4739
+#: src/microhttpd/daemon.c:4761
msgid ""
"MHD_run_from_select() called with except_fd_set set to NULL. Such behavior "
"is deprecated.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4909
+#: src/microhttpd/daemon.c:4931
msgid "Could not obtain daemon fdsets.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4928
+#: src/microhttpd/daemon.c:4950
msgid "Could not add control inter-thread communication channel FD to fdset.\n"
msgstr ""
-#: src/microhttpd/daemon.c:4954
+#: src/microhttpd/daemon.c:4976
msgid "Could not add listen socket to fdset.\n"
msgstr ""
-#: src/microhttpd/daemon.c:5022
+#: src/microhttpd/daemon.c:5044
#, c-format
msgid "select failed: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:5171 src/microhttpd/daemon.c:5328
+#: src/microhttpd/daemon.c:5193 src/microhttpd/daemon.c:5350
#, c-format
msgid "poll failed: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:5470 src/microhttpd/daemon.c:5720
+#: src/microhttpd/daemon.c:5492 src/microhttpd/daemon.c:5742
#, c-format
msgid "Call to epoll_wait failed: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:5681 src/microhttpd/daemon.c:6284
+#: src/microhttpd/daemon.c:5703 src/microhttpd/daemon.c:6306
msgid "Failed to remove listen FD from epoll set.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6003
+#: src/microhttpd/daemon.c:6025
#, c-format
msgid ""
"MHD_run()/MHD_run_wait() called for daemon started with "
@@ -878,456 +882,456 @@ msgid ""
"MHD_OPTION_APP_FD_SETSIZE option.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6104
+#: src/microhttpd/daemon.c:6126
#, c-format
msgid "Failed to block SIGPIPE on daemon thread: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:6167
+#: src/microhttpd/daemon.c:6189
msgid "The URL encoding is broken.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6256
+#: src/microhttpd/daemon.c:6278
msgid "Using MHD_quiesce_daemon in this mode requires MHD_USE_ITC.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6292
+#: src/microhttpd/daemon.c:6314
msgid "Failed to signal quiesce via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6322
+#: src/microhttpd/daemon.c:6344
msgid "failed to signal quiesce via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6486
+#: src/microhttpd/daemon.c:6508
msgid ""
"GnuTLS priorities have been initialised with @LIBMICROHTTPD application-"
"specific system-wide configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6492
+#: src/microhttpd/daemon.c:6514
msgid ""
"GnuTLS priorities have been initialised with @SYSTEM system-wide "
"configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6498
+#: src/microhttpd/daemon.c:6520
msgid ""
"GnuTLS priorities have been initialised with GnuTLS default configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6504
+#: src/microhttpd/daemon.c:6526
msgid "GnuTLS priorities have been initialised with NORMAL configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6517
+#: src/microhttpd/daemon.c:6539
#, c-format
msgid "Failed to set GnuTLS priorities. Last error: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:6595
+#: src/microhttpd/daemon.c:6617
msgid ""
"GnuTLS priorities have been initialised with priorities specified by "
"application appended to @LIBMICROHTTPD application-specific system-wide "
"configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6602
+#: src/microhttpd/daemon.c:6624
msgid ""
"GnuTLS priorities have been initialised with priorities specified by "
"application appended to @SYSTEM system-wide configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6609
+#: src/microhttpd/daemon.c:6631
msgid ""
"GnuTLS priorities have been initialised with priorities specified by "
"application appended to GnuTLS default configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6616
+#: src/microhttpd/daemon.c:6638
msgid ""
"GnuTLS priorities have been initialised with priorities specified by "
"application appended to NORMAL configuration.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6630
+#: src/microhttpd/daemon.c:6652
#, c-format
msgid ""
"Failed to set GnuTLS priorities. Last error: %s. The problematic part starts "
"at: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:6746
+#: src/microhttpd/daemon.c:6768
msgid ""
"Warning: specified MHD_OPTION_CONNECTION_MEMORY_LIMIT value is too small and "
"rounded up to 64.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6772
+#: src/microhttpd/daemon.c:6794
msgid ""
"Warning: specified MHD_OPTION_CONNECTION_MEMORY_INCREMENT value is too large "
"and rounded down to 1/4 of MHD_OPTION_CONNECTION_MEMORY_LIMIT.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6858
+#: src/microhttpd/daemon.c:6880
msgid ""
"Warning: value \"1\", specified as the thread pool size, is ignored. Thread "
"pool is not used.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6872
+#: src/microhttpd/daemon.c:6894
#, c-format
msgid "Specified thread pool size (%u) too big.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6884
+#: src/microhttpd/daemon.c:6906
msgid ""
"MHD_OPTION_THREAD_POOL_SIZE option is specified but "
"MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6893
+#: src/microhttpd/daemon.c:6915
msgid ""
"Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION "
"flag are specified.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6910 src/microhttpd/daemon.c:6923
-#: src/microhttpd/daemon.c:6936 src/microhttpd/daemon.c:6949
-#: src/microhttpd/daemon.c:7001 src/microhttpd/daemon.c:7047
-#: src/microhttpd/daemon.c:7068 src/microhttpd/daemon.c:7090
-#: src/microhttpd/daemon.c:7426
+#: src/microhttpd/daemon.c:6932 src/microhttpd/daemon.c:6945
+#: src/microhttpd/daemon.c:6958 src/microhttpd/daemon.c:6971
+#: src/microhttpd/daemon.c:7023 src/microhttpd/daemon.c:7069
+#: src/microhttpd/daemon.c:7090 src/microhttpd/daemon.c:7112
+#: src/microhttpd/daemon.c:7448
#, c-format
msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6970
+#: src/microhttpd/daemon.c:6992
msgid "Error initializing DH parameters.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6980
+#: src/microhttpd/daemon.c:7002
msgid "Diffie-Hellman parameters string too long.\n"
msgstr ""
-#: src/microhttpd/daemon.c:6991
+#: src/microhttpd/daemon.c:7013
msgid "Bad Diffie-Hellman parameters format.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7026
+#: src/microhttpd/daemon.c:7048
#, c-format
msgid ""
"Setting priorities to '%s' failed: %s The problematic part starts at: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:7056
+#: src/microhttpd/daemon.c:7078
msgid ""
"MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7078
+#: src/microhttpd/daemon.c:7100
msgid ""
"MHD_OPTION_HTTPS_CERT_CALLBACK2 requires building MHD with GnuTLS >= 3.6.3.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7149
+#: src/microhttpd/daemon.c:7171
msgid "Digest Auth is disabled for this build of GNU libmicrohttpd.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7167
+#: src/microhttpd/daemon.c:7189
msgid ""
"MHD_OPTION_EXTERNAL_LOGGER is not the first option specified for the daemon. "
"Some messages may be printed by the standard MHD logger.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7192
+#: src/microhttpd/daemon.c:7214
msgid "TCP fastopen is not supported on this platform.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7216
+#: src/microhttpd/daemon.c:7238
msgid ""
"Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behaviour is "
"specified by MHD_OPTION_STRICT_CLIENT.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7229
+#: src/microhttpd/daemon.c:7251
msgid ""
"Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behaviour is "
"specified by MHD_OPTION_CLIENT_DISCIPLINE_LVL.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7400
+#: src/microhttpd/daemon.c:7422
#, c-format
msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7450
+#: src/microhttpd/daemon.c:7472
#, c-format
msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7460
+#: src/microhttpd/daemon.c:7482
#, c-format
msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?).\n"
msgstr ""
-#: src/microhttpd/daemon.c:7490
+#: src/microhttpd/daemon.c:7512
#, c-format
msgid "Call to epoll_create1 failed: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:7500
+#: src/microhttpd/daemon.c:7522
msgid "Failed to set noninheritable mode on epoll FD.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7542
+#: src/microhttpd/daemon.c:7564
msgid "The epoll FD is too large to be used with fd_set.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7624
+#: src/microhttpd/daemon.c:7646
#, c-format
msgid "MHD_OPTION_APP_FD_SETSIZE value (%d) is not positive.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7633
+#: src/microhttpd/daemon.c:7655
msgid ""
"MHD_OPTION_APP_FD_SETSIZE is ignored for daemon started with "
"MHD_USE_INTERNAL_POLLING_THREAD.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7642
+#: src/microhttpd/daemon.c:7664
msgid ""
"MHD_OPTION_APP_FD_SETSIZE is ignored for daemon started with MHD_USE_POLL.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7654
+#: src/microhttpd/daemon.c:7676
#, c-format
msgid ""
"MHD_OPTION_APP_FD_SETSIZE value (%d) does not match the platform FD_SETSIZE "
"value (%d) and this platform does not support overriding of FD_SETSIZE.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7679
+#: src/microhttpd/daemon.c:7701
msgid "The value provided for MHD_OPTION_LISTEN_SOCKET is invalid.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7689
+#: src/microhttpd/daemon.c:7711
msgid ""
"MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET "
"flag set.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7719
+#: src/microhttpd/daemon.c:7741
msgid ""
"MHD_OPTION_LISTEN_SOCKET cannot be used together with "
"MHD_OPTION_SOCK_ADDR_LEN or MHD_OPTION_SOCK_ADDR.\n"
msgstr ""
-#: src/microhttpd/daemon.c:7728
+#: src/microhttpd/daemon.c:7750
msgid ""
"MHD_OPTION_SOCK_ADDR_LEN or MHD_OPTION_SOCK_ADDR specified for daemon with "
"MHD_USE_NO_LISTEN_SOCKET flag set.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8010
+#: src/microhttpd/daemon.c:8032
msgid "Failed to initialise GnuTLS priorities.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8023
+#: src/microhttpd/daemon.c:8045
msgid ""
"Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with "
"MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was "
"added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8039
+#: src/microhttpd/daemon.c:8061
msgid "Using debug build of libmicrohttpd.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8053
+#: src/microhttpd/daemon.c:8075
#, c-format
msgid "Failed to create inter-thread communication channel: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8068
+#: src/microhttpd/daemon.c:8090
msgid ""
"file descriptor for inter-thread communication channel exceeds maximum "
"value.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8107
+#: src/microhttpd/daemon.c:8129
msgid "Specified value for NC_SIZE too large.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8123
+#: src/microhttpd/daemon.c:8145
#, c-format
msgid "Failed to allocate memory for nonce-nc map: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8141
+#: src/microhttpd/daemon.c:8163
msgid "MHD failed to initialize nonce-nc mutex.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8162
+#: src/microhttpd/daemon.c:8184
msgid "MHD thread polling only works with MHD_USE_INTERNAL_POLLING_THREAD.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8192
+#: src/microhttpd/daemon.c:8214
msgid ""
"MHD_USE_IPv6 is enabled, but 'struct sockaddr *' specified for "
"MHD_OPTION_SOCK_ADDR_LEN or MHD_OPTION_SOCK_ADDR is not IPv6 address.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8211 src/microhttpd/daemon.c:8256
+#: src/microhttpd/daemon.c:8233 src/microhttpd/daemon.c:8278
msgid "The size specified for MHD_OPTION_SOCK_ADDR_LEN option is wrong.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8223 src/microhttpd/daemon.c:8268
+#: src/microhttpd/daemon.c:8245 src/microhttpd/daemon.c:8290
msgid ""
"The value of 'struct sockaddr.sa_len' provided via MHD_OPTION_SOCK_ADDR_LEN "
"option is not zero and does not match 'sa_family' value of the same "
"structure.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8306
+#: src/microhttpd/daemon.c:8328
msgid ""
"The 'sa_family' of the 'struct sockaddr' provided via MHD_OPTION_SOCK_ADDR "
"option is not supported.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8383
+#: src/microhttpd/daemon.c:8405
#, c-format
msgid "Failed to create socket for listening: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8394 src/microhttpd/daemon.c:8587
+#: src/microhttpd/daemon.c:8416 src/microhttpd/daemon.c:8609
#, c-format
msgid ""
"Listen socket descriptor (%d) is not less than daemon FD_SETSIZE value "
"(%d).\n"
msgstr ""
-#: src/microhttpd/daemon.c:8417 src/microhttpd/daemon.c:8436
-#: src/microhttpd/daemon.c:8459 src/microhttpd/daemon.c:8497
-#: src/microhttpd/daemon.c:8530 src/microhttpd/daemon.c:8562
+#: src/microhttpd/daemon.c:8439 src/microhttpd/daemon.c:8458
+#: src/microhttpd/daemon.c:8481 src/microhttpd/daemon.c:8519
+#: src/microhttpd/daemon.c:8552 src/microhttpd/daemon.c:8584
#, c-format
msgid "setsockopt failed: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8469
+#: src/microhttpd/daemon.c:8491
msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8505
+#: src/microhttpd/daemon.c:8527
msgid ""
"Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8543
+#: src/microhttpd/daemon.c:8565
#, c-format
msgid "Failed to bind to port %u: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8573
+#: src/microhttpd/daemon.c:8595
#, c-format
msgid "Failed to listen for connections: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8674
+#: src/microhttpd/daemon.c:8696
#, c-format
msgid "Failed to get listen port number: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8684
+#: src/microhttpd/daemon.c:8706
msgid ""
"Failed to get listen port number (`struct sockaddr_storage` too small!?).\n"
msgstr ""
-#: src/microhttpd/daemon.c:8731
+#: src/microhttpd/daemon.c:8753
msgid "Listen socket has unknown address family!\n"
msgstr ""
-#: src/microhttpd/daemon.c:8748
+#: src/microhttpd/daemon.c:8770
#, c-format
msgid "Failed to set nonblocking mode on listening socket: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8784
+#: src/microhttpd/daemon.c:8806
msgid ""
"Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8799
+#: src/microhttpd/daemon.c:8821
msgid "MHD failed to initialize IP connection limit mutex.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8812
+#: src/microhttpd/daemon.c:8834
msgid "Failed to initialize TLS support.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8842 src/microhttpd/daemon.c:8931
-#: src/microhttpd/daemon.c:9065
+#: src/microhttpd/daemon.c:8864 src/microhttpd/daemon.c:8953
+#: src/microhttpd/daemon.c:9087
msgid "Failed to initialise internal lists mutex.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8851 src/microhttpd/daemon.c:8861
-#: src/microhttpd/daemon.c:8939 src/microhttpd/daemon.c:8948
-#: src/microhttpd/daemon.c:9074 src/microhttpd/daemon.c:9084
+#: src/microhttpd/daemon.c:8873 src/microhttpd/daemon.c:8883
+#: src/microhttpd/daemon.c:8961 src/microhttpd/daemon.c:8970
+#: src/microhttpd/daemon.c:9096 src/microhttpd/daemon.c:9106
msgid "Failed to initialise mutex.\n"
msgstr ""
-#: src/microhttpd/daemon.c:8885
+#: src/microhttpd/daemon.c:8907
#, c-format
msgid "Failed to create listen thread: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8961
+#: src/microhttpd/daemon.c:8983
#, c-format
msgid "Failed to create worker inter-thread communication channel: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:8975
+#: src/microhttpd/daemon.c:8997
msgid ""
"File descriptor for worker inter-thread communication channel exceeds "
"maximum value.\n"
msgstr ""
-#: src/microhttpd/daemon.c:9038
+#: src/microhttpd/daemon.c:9060
msgid ""
"Failed to create a new pool thread because it would have exceeded the system "
"limit on the number of threads or no system resources available.\n"
msgstr ""
-#: src/microhttpd/daemon.c:9044
+#: src/microhttpd/daemon.c:9066
#, c-format
msgid "Failed to create pool thread: %s\n"
msgstr ""
-#: src/microhttpd/daemon.c:9250 src/microhttpd/daemon.c:9283
+#: src/microhttpd/daemon.c:9279 src/microhttpd/daemon.c:9312
msgid "MHD_stop_daemon() called while we have suspended connections.\n"
msgstr ""
-#: src/microhttpd/daemon.c:9322 src/microhttpd/daemon.c:9428
-#: src/microhttpd/daemon.c:9466
+#: src/microhttpd/daemon.c:9351 src/microhttpd/daemon.c:9457
+#: src/microhttpd/daemon.c:9495
msgid "Failed to signal shutdown via inter-thread communication channel.\n"
msgstr ""
-#: src/microhttpd/daemon.c:9396
+#: src/microhttpd/daemon.c:9425
msgid "MHD_stop_daemon() was called twice."
msgstr ""
-#: src/microhttpd/daemon.c:9986
+#: src/microhttpd/daemon.c:10015
msgid "Failed to initialize winsock.\n"
msgstr ""
-#: src/microhttpd/daemon.c:9988
+#: src/microhttpd/daemon.c:10017
msgid "Winsock version 2.2 is not available.\n"
msgstr ""
-#: src/microhttpd/daemon.c:9997 src/microhttpd/daemon.c:10001
+#: src/microhttpd/daemon.c:10026 src/microhttpd/daemon.c:10030
msgid "Failed to initialise multithreading in libgcrypt.\n"
msgstr ""
-#: src/microhttpd/daemon.c:10007
+#: src/microhttpd/daemon.c:10036
msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer.\n"
msgstr ""
diff --git a/src/fuzz/corpus/known-findings/K15-fuzz_eventloop-stop-with-queued-connection.bin b/src/fuzz/corpus/known-findings/K15-stop-with-queued.bin
Binary files differ.
diff --git a/src/fuzz/corpus/known-findings/K9-fuzz_postprocessor-nested-boundary-leak.bin b/src/fuzz/corpus/known-findings/K9-pp-nested-boundary-leak.bin
Binary files differ.
diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h
@@ -101,7 +101,7 @@ MHD_C_DECLRATIONS_START_HERE_
* they are parsed as decimal numbers.
* Example: 0x01093001 = 1.9.30-1.
*/
-#define MHD_VERSION 0x01000800
+#define MHD_VERSION 0x01000900
/* If generic headers don't work on your platform, include headers
which define 'va_list', 'size_t', 'ssize_t', 'intptr_t', 'off_t',