diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-06-28 21:55:56 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-06-28 21:55:56 +0200 |
commit | a110ae6276660bee3caab30e9ff3f12f85cf3241 (patch) | |
tree | cc959ef6b757b336978802f18b4cf420563a4a48 | |
parent | 0d771f770e6c444cfee7f4f588620e9c8b934d97 (diff) | |
download | libmicrohttpd-a110ae6276660bee3caab30e9ff3f12f85cf3241.tar.gz libmicrohttpd-a110ae6276660bee3caab30e9ff3f12f85cf3241.zip |
fix buffer overflow and add testv0.9.71
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | po/libmicrohttpd.pot | 432 | ||||
-rw-r--r-- | src/microhttpd/postprocessor.c | 18 | ||||
-rw-r--r-- | src/microhttpd/test_postprocessor.c | 66 |
5 files changed, 305 insertions, 221 deletions
@@ -1,3 +1,7 @@ | |||
1 | Sun 28 Jun 2020 09:36:01 PM CEST | ||
2 | Fix buffer overflow issue in URL parser. | ||
3 | Releasing libmicrohttpd 0.9.71. -CG | ||
4 | |||
1 | Tue 16 Jun 2020 08:44:22 PM CEST | 5 | Tue 16 Jun 2020 08:44:22 PM CEST |
2 | Add logic to try again if GNUtls uncork() fails. -CG | 6 | Add logic to try again if GNUtls uncork() fails. -CG |
3 | 7 | ||
diff --git a/configure.ac b/configure.ac index ae85dc0c..dc9e560f 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -22,15 +22,15 @@ | |||
22 | # | 22 | # |
23 | AC_PREREQ([2.64]) | 23 | AC_PREREQ([2.64]) |
24 | LT_PREREQ([2.4.0]) | 24 | LT_PREREQ([2.4.0]) |
25 | AC_INIT([GNU Libmicrohttpd],[0.9.70],[libmicrohttpd@gnu.org]) | 25 | AC_INIT([GNU Libmicrohttpd],[0.9.71],[libmicrohttpd@gnu.org]) |
26 | AC_CONFIG_AUX_DIR([build-aux]) | 26 | AC_CONFIG_AUX_DIR([build-aux]) |
27 | AM_INIT_AUTOMAKE([silent-rules] [subdir-objects]) | 27 | AM_INIT_AUTOMAKE([silent-rules] [subdir-objects]) |
28 | AC_CONFIG_HEADERS([MHD_config.h]) | 28 | AC_CONFIG_HEADERS([MHD_config.h]) |
29 | AC_CONFIG_MACRO_DIR([m4]) | 29 | AC_CONFIG_MACRO_DIR([m4]) |
30 | 30 | ||
31 | LIB_VERSION_CURRENT=67 | 31 | LIB_VERSION_CURRENT=68 |
32 | LIB_VERSION_REVISION=0 | 32 | LIB_VERSION_REVISION=0 |
33 | LIB_VERSION_AGE=55 | 33 | LIB_VERSION_AGE=56 |
34 | AC_SUBST(LIB_VERSION_CURRENT) | 34 | AC_SUBST(LIB_VERSION_CURRENT) |
35 | AC_SUBST(LIB_VERSION_REVISION) | 35 | AC_SUBST(LIB_VERSION_REVISION) |
36 | AC_SUBST(LIB_VERSION_AGE) | 36 | AC_SUBST(LIB_VERSION_AGE) |
diff --git a/po/libmicrohttpd.pot b/po/libmicrohttpd.pot index e36cd81e..c0cc9f2b 100644 --- a/po/libmicrohttpd.pot +++ b/po/libmicrohttpd.pot | |||
@@ -6,9 +6,9 @@ | |||
6 | #, fuzzy | 6 | #, fuzzy |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: GNU libmicrohttpd 0.9.70\n" | 9 | "Project-Id-Version: GNU libmicrohttpd 0.9.71\n" |
10 | "Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n" | 10 | "Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n" |
11 | "POT-Creation-Date: 2020-02-08 21:57+0100\n" | 11 | "POT-Creation-Date: 2020-06-28 21:53+0200\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -17,8 +17,8 @@ msgstr "" | |||
17 | "Content-Type: text/plain; charset=CHARSET\n" | 17 | "Content-Type: text/plain; charset=CHARSET\n" |
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | 19 | ||
20 | #: src/microhttpd/connection_https.c:175 | 20 | #: src/microhttpd/connection_https.c:129 |
21 | msgid "Error: received handshake message out of context\n" | 21 | msgid "Error: received handshake message out of context.\n" |
22 | msgstr "" | 22 | msgstr "" |
23 | 23 | ||
24 | #: src/microhttpd/mhd_locks.h:123 | 24 | #: src/microhttpd/mhd_locks.h:123 |
@@ -44,7 +44,7 @@ msgid "" | |||
44 | msgstr "" | 44 | msgstr "" |
45 | 45 | ||
46 | #: src/microhttpd/digestauth.c:807 | 46 | #: src/microhttpd/digestauth.c:807 |
47 | msgid "Failed to allocate memory for copy of URI arguments\n" | 47 | msgid "Failed to allocate memory for copy of URI arguments.\n" |
48 | msgstr "" | 48 | msgstr "" |
49 | 49 | ||
50 | #: src/microhttpd/digestauth.c:949 | 50 | #: src/microhttpd/digestauth.c:949 |
@@ -60,7 +60,7 @@ msgid "Authentication failed, invalid nc format.\n" | |||
60 | msgstr "" | 60 | msgstr "" |
61 | 61 | ||
62 | #: src/microhttpd/digestauth.c:1044 | 62 | #: src/microhttpd/digestauth.c:1044 |
63 | msgid "Failed to allocate memory for auth header processing\n" | 63 | msgid "Failed to allocate memory for auth header processing.\n" |
64 | msgstr "" | 64 | msgstr "" |
65 | 65 | ||
66 | #: src/microhttpd/digestauth.c:1104 | 66 | #: src/microhttpd/digestauth.c:1104 |
@@ -72,7 +72,7 @@ msgid "Authentication failed, arguments do not match.\n" | |||
72 | msgstr "" | 72 | msgstr "" |
73 | 73 | ||
74 | #: src/microhttpd/digestauth.c:1281 | 74 | #: src/microhttpd/digestauth.c:1281 |
75 | msgid "digest size mismatch" | 75 | msgid "Digest size mismatch.\n" |
76 | msgstr "" | 76 | msgstr "" |
77 | 77 | ||
78 | #: src/microhttpd/digestauth.c:1374 | 78 | #: src/microhttpd/digestauth.c:1374 |
@@ -80,11 +80,11 @@ msgid "Could not register nonce (is the nonce array size zero?).\n" | |||
80 | msgstr "" | 80 | msgstr "" |
81 | 81 | ||
82 | #: src/microhttpd/digestauth.c:1399 | 82 | #: src/microhttpd/digestauth.c:1399 |
83 | msgid "Failed to allocate memory for auth response header\n" | 83 | msgid "Failed to allocate memory for auth response header.\n" |
84 | msgstr "" | 84 | msgstr "" |
85 | 85 | ||
86 | #: src/microhttpd/digestauth.c:1441 | 86 | #: src/microhttpd/digestauth.c:1441 |
87 | msgid "Failed to add Digest auth header\n" | 87 | msgid "Failed to add Digest auth header.\n" |
88 | msgstr "" | 88 | msgstr "" |
89 | 89 | ||
90 | #: src/microhttpd/daemon.c:140 | 90 | #: src/microhttpd/daemon.c:140 |
@@ -93,21 +93,21 @@ msgid "Fatal error in GNU libmicrohttpd %s:%u: %s\n" | |||
93 | msgstr "" | 93 | msgstr "" |
94 | 94 | ||
95 | #: src/microhttpd/daemon.c:451 | 95 | #: src/microhttpd/daemon.c:451 |
96 | msgid "Failed to add IP connection count node\n" | 96 | msgid "Failed to add IP connection count node.\n" |
97 | msgstr "" | 97 | msgstr "" |
98 | 98 | ||
99 | #: src/microhttpd/daemon.c:509 | 99 | #: src/microhttpd/daemon.c:509 |
100 | msgid "Failed to find previously-added IP address\n" | 100 | msgid "Failed to find previously-added IP address.\n" |
101 | msgstr "" | 101 | msgstr "" |
102 | 102 | ||
103 | #: src/microhttpd/daemon.c:515 | 103 | #: src/microhttpd/daemon.c:515 |
104 | msgid "Previously-added IP address had counter of zero\n" | 104 | msgid "Previously-added IP address had counter of zero.\n" |
105 | msgstr "" | 105 | msgstr "" |
106 | 106 | ||
107 | #: src/microhttpd/daemon.c:625 | 107 | #: src/microhttpd/daemon.c:625 |
108 | msgid "" | 108 | msgid "" |
109 | "Failed to setup x509 certificate/key: pre 3.X.X version of GnuTLS does not " | 109 | "Failed to setup x509 certificate/key: pre 3.X.X version of GnuTLS does not " |
110 | "support setting key password" | 110 | "support setting key password.\n" |
111 | msgstr "" | 111 | msgstr "" |
112 | 112 | ||
113 | #: src/microhttpd/daemon.c:684 | 113 | #: src/microhttpd/daemon.c:684 |
@@ -126,7 +126,7 @@ msgid "" | |||
126 | "unsupported.\n" | 126 | "unsupported.\n" |
127 | msgstr "" | 127 | msgstr "" |
128 | 128 | ||
129 | #: src/microhttpd/daemon.c:1356 src/microhttpd/daemon.c:6729 | 129 | #: src/microhttpd/daemon.c:1356 src/microhttpd/daemon.c:6725 |
130 | msgid "" | 130 | msgid "" |
131 | "Initiated daemon shutdown while \"upgraded\" connection was not closed.\n" | 131 | "Initiated daemon shutdown while \"upgraded\" connection was not closed.\n" |
132 | msgstr "" | 132 | msgstr "" |
@@ -140,7 +140,7 @@ msgid "Failed to forward to remote client " | |||
140 | msgstr "" | 140 | msgstr "" |
141 | 141 | ||
142 | #: src/microhttpd/daemon.c:1730 | 142 | #: src/microhttpd/daemon.c:1730 |
143 | msgid "Error preparing select\n" | 143 | msgid "Error preparing select.\n" |
144 | msgstr "" | 144 | msgstr "" |
145 | 145 | ||
146 | #: src/microhttpd/daemon.c:1764 src/microhttpd/daemon.c:1918 | 146 | #: src/microhttpd/daemon.c:1764 src/microhttpd/daemon.c:1918 |
@@ -156,16 +156,16 @@ msgid "Error during poll: `%s'\n" | |||
156 | msgstr "" | 156 | msgstr "" |
157 | 157 | ||
158 | #: src/microhttpd/daemon.c:1902 src/microhttpd/daemon.c:2044 | 158 | #: src/microhttpd/daemon.c:1902 src/microhttpd/daemon.c:2044 |
159 | msgid "Failed to add FD to fd_set\n" | 159 | msgid "Failed to add FD to fd_set.\n" |
160 | msgstr "" | 160 | msgstr "" |
161 | 161 | ||
162 | #: src/microhttpd/daemon.c:2184 | 162 | #: src/microhttpd/daemon.c:2184 |
163 | msgid "Processing thread terminating. Closing connection\n" | 163 | msgid "Processing thread terminating. Closing connection.\n" |
164 | msgstr "" | 164 | msgstr "" |
165 | 165 | ||
166 | #: src/microhttpd/daemon.c:2214 | 166 | #: src/microhttpd/daemon.c:2214 |
167 | msgid "" | 167 | msgid "" |
168 | "Failed to signal thread termination via inter-thread communication channel." | 168 | "Failed to signal thread termination via inter-thread communication channel.\n" |
169 | msgstr "" | 169 | msgstr "" |
170 | 170 | ||
171 | #: src/microhttpd/daemon.c:2289 | 171 | #: src/microhttpd/daemon.c:2289 |
@@ -177,14 +177,14 @@ msgid "PSK not supported by this server.\n" | |||
177 | msgstr "" | 177 | msgstr "" |
178 | 178 | ||
179 | #: src/microhttpd/daemon.c:2314 | 179 | #: src/microhttpd/daemon.c:2314 |
180 | msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n" | 180 | msgid "PSK authentication failed: gnutls_malloc failed to allocate memory.\n" |
181 | msgstr "" | 181 | msgstr "" |
182 | 182 | ||
183 | #: src/microhttpd/daemon.c:2323 | 183 | #: src/microhttpd/daemon.c:2323 |
184 | msgid "PSK authentication failed: PSK too long\n" | 184 | msgid "PSK authentication failed: PSK too long.\n" |
185 | msgstr "" | 185 | msgstr "" |
186 | 186 | ||
187 | #: src/microhttpd/daemon.c:2421 src/microhttpd/daemon.c:6366 | 187 | #: src/microhttpd/daemon.c:2421 src/microhttpd/daemon.c:6367 |
188 | #, c-format | 188 | #, c-format |
189 | msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n" | 189 | msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n" |
190 | msgstr "" | 190 | msgstr "" |
@@ -194,12 +194,12 @@ msgstr "" | |||
194 | msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n" | 194 | msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n" |
195 | msgstr "" | 195 | msgstr "" |
196 | 196 | ||
197 | #: src/microhttpd/daemon.c:2454 src/microhttpd/daemon.c:3314 | 197 | #: src/microhttpd/daemon.c:2454 |
198 | #, c-format | 198 | #, c-format |
199 | msgid "Accepted connection on socket %d\n" | 199 | msgid "Accepted connection on socket %d.\n" |
200 | msgstr "" | 200 | msgstr "" |
201 | 201 | ||
202 | #: src/microhttpd/daemon.c:2467 src/microhttpd/daemon.c:2664 | 202 | #: src/microhttpd/daemon.c:2467 src/microhttpd/daemon.c:2665 |
203 | msgid "Server reached connection limit. Closing inbound connection.\n" | 203 | msgid "Server reached connection limit. Closing inbound connection.\n" |
204 | msgstr "" | 204 | msgstr "" |
205 | 205 | ||
@@ -207,559 +207,563 @@ msgstr "" | |||
207 | msgid "Connection rejected by application. Closing connection.\n" | 207 | msgid "Connection rejected by application. Closing connection.\n" |
208 | msgstr "" | 208 | msgstr "" |
209 | 209 | ||
210 | #: src/microhttpd/daemon.c:2518 src/microhttpd/daemon.c:2538 | 210 | #: src/microhttpd/daemon.c:2519 src/microhttpd/daemon.c:2539 |
211 | #: src/microhttpd/daemon.c:3902 | 211 | #: src/microhttpd/daemon.c:3903 |
212 | #, c-format | 212 | #, c-format |
213 | msgid "Error allocating memory: %s\n" | 213 | msgid "Error allocating memory: %s\n" |
214 | msgstr "" | 214 | msgstr "" |
215 | 215 | ||
216 | #: src/microhttpd/daemon.c:2616 | 216 | #: src/microhttpd/daemon.c:2617 |
217 | #, c-format | 217 | #, c-format |
218 | msgid "Failed to setup TLS credentials: unknown credential type %d\n" | 218 | msgid "Failed to setup TLS credentials: unknown credential type %d.\n" |
219 | msgstr "" | 219 | msgstr "" |
220 | 220 | ||
221 | #: src/microhttpd/daemon.c:2625 | 221 | #: src/microhttpd/daemon.c:2626 |
222 | msgid "Unknown credential type" | 222 | msgid "Unknown credential type.\n" |
223 | msgstr "" | 223 | msgstr "" |
224 | 224 | ||
225 | #: src/microhttpd/daemon.c:2728 src/microhttpd/daemon.c:4398 | 225 | #: src/microhttpd/daemon.c:2729 src/microhttpd/daemon.c:4399 |
226 | #: src/microhttpd/daemon.c:4431 src/microhttpd/daemon.c:5645 | 226 | #: src/microhttpd/daemon.c:4432 src/microhttpd/daemon.c:5646 |
227 | #: src/microhttpd/daemon.c:5662 src/microhttpd/connection.c:3792 | 227 | #: src/microhttpd/daemon.c:5663 src/microhttpd/connection.c:3738 |
228 | #: src/microhttpd/response.c:1053 src/microhttpd/response.c:1079 | 228 | #: src/microhttpd/response.c:1053 src/microhttpd/response.c:1079 |
229 | #, c-format | 229 | #, c-format |
230 | msgid "Call to epoll_ctl failed: %s\n" | 230 | msgid "Call to epoll_ctl failed: %s\n" |
231 | msgstr "" | 231 | msgstr "" |
232 | 232 | ||
233 | #: src/microhttpd/daemon.c:2755 | 233 | #: src/microhttpd/daemon.c:2756 |
234 | msgid "Failed to signal new connection via inter-thread communication channel." | 234 | msgid "" |
235 | "Failed to signal new connection via inter-thread communication channel.\n" | ||
235 | msgstr "" | 236 | msgstr "" |
236 | 237 | ||
237 | #: src/microhttpd/daemon.c:2860 src/microhttpd/daemon.c:3397 | 238 | #: src/microhttpd/daemon.c:2861 src/microhttpd/daemon.c:3398 |
238 | #: src/microhttpd/daemon.c:6616 src/microhttpd/connection.c:801 | 239 | #: src/microhttpd/daemon.c:6612 src/microhttpd/connection.c:747 |
239 | #: src/microhttpd/connection.c:820 | 240 | #: src/microhttpd/connection.c:766 |
240 | msgid "Failed to remove FD from epoll set\n" | 241 | msgid "Failed to remove FD from epoll set.\n" |
241 | msgstr "" | 242 | msgstr "" |
242 | 243 | ||
243 | #: src/microhttpd/daemon.c:2910 | 244 | #: src/microhttpd/daemon.c:2911 |
244 | msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" | 245 | msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" |
245 | msgstr "" | 246 | msgstr "" |
246 | 247 | ||
247 | #: src/microhttpd/daemon.c:2917 | 248 | #: src/microhttpd/daemon.c:2918 |
248 | msgid "Error: connection scheduled for \"upgrade\" cannot be suspended" | 249 | msgid "Error: connection scheduled for \"upgrade\" cannot be suspended.\n" |
249 | msgstr "" | 250 | msgstr "" |
250 | 251 | ||
251 | #: src/microhttpd/daemon.c:2941 | 252 | #: src/microhttpd/daemon.c:2942 |
252 | msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" | 253 | msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" |
253 | msgstr "" | 254 | msgstr "" |
254 | 255 | ||
255 | #: src/microhttpd/daemon.c:2956 | 256 | #: src/microhttpd/daemon.c:2957 |
256 | msgid "Failed to signal resume via inter-thread communication channel." | 257 | msgid "Failed to signal resume via inter-thread communication channel.\n" |
257 | msgstr "" | 258 | msgstr "" |
258 | 259 | ||
259 | #: src/microhttpd/daemon.c:3091 | 260 | #: src/microhttpd/daemon.c:3092 |
260 | msgid "" | 261 | msgid "" |
261 | "Failed to signal resume of connection via inter-thread communication channel." | 262 | "Failed to signal resume of connection via inter-thread communication " |
263 | "channel.\n" | ||
262 | msgstr "" | 264 | msgstr "" |
263 | 265 | ||
264 | #: src/microhttpd/daemon.c:3139 | 266 | #: src/microhttpd/daemon.c:3140 |
265 | #, c-format | 267 | #, c-format |
266 | msgid "Failed to set nonblocking mode on new client socket: %s\n" | 268 | msgid "Failed to set nonblocking mode on new client socket: %s\n" |
267 | msgstr "" | 269 | msgstr "" |
268 | 270 | ||
269 | #: src/microhttpd/daemon.c:3152 | 271 | #: src/microhttpd/daemon.c:3153 |
270 | msgid "Failed to set noninheritable mode on new client socket.\n" | 272 | msgid "Failed to set noninheritable mode on new client socket.\n" |
271 | msgstr "" | 273 | msgstr "" |
272 | 274 | ||
273 | #: src/microhttpd/daemon.c:3161 | 275 | #: src/microhttpd/daemon.c:3162 |
274 | msgid "Failed to reset buffering mode on new client socket.\n" | 276 | msgid "Failed to reset buffering mode on new client socket.\n" |
275 | msgstr "" | 277 | msgstr "" |
276 | 278 | ||
277 | #: src/microhttpd/daemon.c:3234 | 279 | #: src/microhttpd/daemon.c:3235 |
278 | #, c-format | 280 | #, c-format |
279 | msgid "Error accepting connection: %s\n" | 281 | msgid "Error accepting connection: %s\n" |
280 | msgstr "" | 282 | msgstr "" |
281 | 283 | ||
282 | #: src/microhttpd/daemon.c:3252 | 284 | #: src/microhttpd/daemon.c:3253 |
283 | msgid "" | 285 | msgid "" |
284 | "Hit process or system resource limit at FIRST connection. This is really bad " | 286 | "Hit process or system resource limit at FIRST connection. This is really bad " |
285 | "as there is no sane way to proceed. Will try busy waiting for system " | 287 | "as there is no sane way to proceed. Will try busy waiting for system " |
286 | "resources to become magically available.\n" | 288 | "resources to become magically available.\n" |
287 | msgstr "" | 289 | msgstr "" |
288 | 290 | ||
289 | #: src/microhttpd/daemon.c:3267 | 291 | #: src/microhttpd/daemon.c:3268 |
290 | #, c-format | 292 | #, c-format |
291 | msgid "" | 293 | msgid "" |
292 | "Hit process or system resource limit at %u connections, temporarily " | 294 | "Hit process or system resource limit at %u connections, temporarily " |
293 | "suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n" | 295 | "suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n" |
294 | msgstr "" | 296 | msgstr "" |
295 | 297 | ||
296 | #: src/microhttpd/daemon.c:3283 | 298 | #: src/microhttpd/daemon.c:3284 |
297 | #, c-format | 299 | #, c-format |
298 | msgid "Failed to disable TCP Nagle on socket: %s\n" | 300 | msgid "Failed to disable TCP Nagle on socket: %s\n" |
299 | msgstr "" | 301 | msgstr "" |
300 | 302 | ||
301 | #: src/microhttpd/daemon.c:3294 | 303 | #: src/microhttpd/daemon.c:3295 |
302 | #, c-format | 304 | #, c-format |
303 | msgid "Failed to set nonblocking mode on incoming connection socket: %s\n" | 305 | msgid "Failed to set nonblocking mode on incoming connection socket: %s\n" |
304 | msgstr "" | 306 | msgstr "" |
305 | 307 | ||
306 | #: src/microhttpd/daemon.c:3307 | 308 | #: src/microhttpd/daemon.c:3308 |
307 | msgid "Failed to set noninheritable mode on incoming connection socket.\n" | 309 | msgid "Failed to set noninheritable mode on incoming connection socket.\n" |
308 | msgstr "" | 310 | msgstr "" |
309 | 311 | ||
310 | #: src/microhttpd/daemon.c:3355 src/microhttpd/daemon.c:6773 | 312 | #: src/microhttpd/daemon.c:3315 |
311 | #: src/microhttpd/daemon.c:6805 src/microhttpd/daemon.c:6907 | 313 | #, c-format |
312 | msgid "Failed to join a thread\n" | 314 | msgid "Accepted connection on socket %d\n" |
315 | msgstr "" | ||
316 | |||
317 | #: src/microhttpd/daemon.c:3356 src/microhttpd/daemon.c:6769 | ||
318 | #: src/microhttpd/daemon.c:6801 src/microhttpd/daemon.c:6903 | ||
319 | msgid "Failed to join a thread.\n" | ||
313 | msgstr "" | 320 | msgstr "" |
314 | 321 | ||
315 | #: src/microhttpd/daemon.c:3458 | 322 | #: src/microhttpd/daemon.c:3459 |
316 | msgid "Illegal call to MHD_get_timeout\n" | 323 | msgid "Illegal call to MHD_get_timeout.\n" |
317 | msgstr "" | 324 | msgstr "" |
318 | 325 | ||
319 | #: src/microhttpd/daemon.c:3655 | 326 | #: src/microhttpd/daemon.c:3656 |
320 | msgid "" | 327 | msgid "" |
321 | "MHD_run_from_select() called with except_fd_set set to NULL. Such behavior " | 328 | "MHD_run_from_select() called with except_fd_set set to NULL. Such behavior " |
322 | "is deprecated.\n" | 329 | "is deprecated.\n" |
323 | msgstr "" | 330 | msgstr "" |
324 | 331 | ||
325 | #: src/microhttpd/daemon.c:3735 | 332 | #: src/microhttpd/daemon.c:3736 |
326 | msgid "Could not obtain daemon fdsets" | 333 | msgid "Could not obtain daemon fdsets.\n" |
327 | msgstr "" | 334 | msgstr "" |
328 | 335 | ||
329 | #: src/microhttpd/daemon.c:3752 | 336 | #: src/microhttpd/daemon.c:3753 |
330 | msgid "Could not add listen socket to fdset" | 337 | msgid "Could not add listen socket to fdset.\n" |
331 | msgstr "" | 338 | msgstr "" |
332 | 339 | ||
333 | #: src/microhttpd/daemon.c:3781 | 340 | #: src/microhttpd/daemon.c:3782 |
334 | msgid "Could not add control inter-thread communication channel FD to fdset" | 341 | msgid "Could not add control inter-thread communication channel FD to fdset.\n" |
335 | msgstr "" | 342 | msgstr "" |
336 | 343 | ||
337 | #: src/microhttpd/daemon.c:3839 | 344 | #: src/microhttpd/daemon.c:3840 |
338 | #, c-format | 345 | #, c-format |
339 | msgid "select failed: %s\n" | 346 | msgid "select failed: %s\n" |
340 | msgstr "" | 347 | msgstr "" |
341 | 348 | ||
342 | #: src/microhttpd/daemon.c:3984 src/microhttpd/daemon.c:4132 | 349 | #: src/microhttpd/daemon.c:3985 src/microhttpd/daemon.c:4133 |
343 | #, c-format | 350 | #, c-format |
344 | msgid "poll failed: %s\n" | 351 | msgid "poll failed: %s\n" |
345 | msgstr "" | 352 | msgstr "" |
346 | 353 | ||
347 | #: src/microhttpd/daemon.c:4265 src/microhttpd/daemon.c:4498 | 354 | #: src/microhttpd/daemon.c:4266 src/microhttpd/daemon.c:4499 |
348 | #, c-format | 355 | #, c-format |
349 | msgid "Call to epoll_wait failed: %s\n" | 356 | msgid "Call to epoll_wait failed: %s\n" |
350 | msgstr "" | 357 | msgstr "" |
351 | 358 | ||
352 | #: src/microhttpd/daemon.c:4450 src/microhttpd/daemon.c:4911 | 359 | #: src/microhttpd/daemon.c:4451 src/microhttpd/daemon.c:4912 |
353 | msgid "Failed to remove listen FD from epoll set\n" | 360 | msgid "Failed to remove listen FD from epoll set.\n" |
354 | msgstr "" | 361 | msgstr "" |
355 | 362 | ||
356 | #: src/microhttpd/daemon.c:4920 | 363 | #: src/microhttpd/daemon.c:4921 |
357 | msgid "Failed to signal quiesce via inter-thread communication channel" | 364 | msgid "Failed to signal quiesce via inter-thread communication channel.\n" |
358 | msgstr "" | 365 | msgstr "" |
359 | 366 | ||
360 | #: src/microhttpd/daemon.c:4943 | 367 | #: src/microhttpd/daemon.c:4944 |
361 | msgid "failed to signal quiesce via inter-thread communication channel" | 368 | msgid "failed to signal quiesce via inter-thread communication channel.\n" |
362 | msgstr "" | 369 | msgstr "" |
363 | 370 | ||
364 | #: src/microhttpd/daemon.c:5057 | 371 | #: src/microhttpd/daemon.c:5058 |
365 | msgid "Warning: Too large timeout value, ignored.\n" | 372 | msgid "Warning: Too large timeout value, ignored.\n" |
366 | msgstr "" | 373 | msgstr "" |
367 | 374 | ||
368 | #: src/microhttpd/daemon.c:5102 | 375 | #: src/microhttpd/daemon.c:5103 |
369 | msgid "" | 376 | msgid "" |
370 | "Warning: Zero size, specified for thread pool size, is ignored. Thread pool " | 377 | "Warning: Zero size, specified for thread pool size, is ignored. Thread pool " |
371 | "is not used.\n" | 378 | "is not used.\n" |
372 | msgstr "" | 379 | msgstr "" |
373 | 380 | ||
374 | #: src/microhttpd/daemon.c:5111 | 381 | #: src/microhttpd/daemon.c:5112 |
375 | msgid "" | 382 | msgid "" |
376 | "Warning: \"1\", specified for thread pool size, is ignored. Thread pool is " | 383 | "Warning: \"1\", specified for thread pool size, is ignored. Thread pool is " |
377 | "not used.\n" | 384 | "not used.\n" |
378 | msgstr "" | 385 | msgstr "" |
379 | 386 | ||
380 | #: src/microhttpd/daemon.c:5124 | 387 | #: src/microhttpd/daemon.c:5125 |
381 | #, c-format | 388 | #, c-format |
382 | msgid "Specified thread pool size (%u) too big\n" | 389 | msgid "Specified thread pool size (%u) too big.\n" |
383 | msgstr "" | 390 | msgstr "" |
384 | 391 | ||
385 | #: src/microhttpd/daemon.c:5135 | 392 | #: src/microhttpd/daemon.c:5136 |
386 | msgid "" | 393 | msgid "" |
387 | "MHD_OPTION_THREAD_POOL_SIZE option is specified but " | 394 | "MHD_OPTION_THREAD_POOL_SIZE option is specified but " |
388 | "MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n" | 395 | "MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n" |
389 | msgstr "" | 396 | msgstr "" |
390 | 397 | ||
391 | #: src/microhttpd/daemon.c:5144 | 398 | #: src/microhttpd/daemon.c:5145 |
392 | msgid "" | 399 | msgid "" |
393 | "Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION " | 400 | "Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION " |
394 | "flag are specified.\n" | 401 | "flag are specified.\n" |
395 | msgstr "" | 402 | msgstr "" |
396 | 403 | ||
397 | #: src/microhttpd/daemon.c:5162 src/microhttpd/daemon.c:5175 | 404 | #: src/microhttpd/daemon.c:5163 src/microhttpd/daemon.c:5176 |
398 | #: src/microhttpd/daemon.c:5188 src/microhttpd/daemon.c:5201 | 405 | #: src/microhttpd/daemon.c:5189 src/microhttpd/daemon.c:5202 |
399 | #: src/microhttpd/daemon.c:5253 src/microhttpd/daemon.c:5282 | 406 | #: src/microhttpd/daemon.c:5254 src/microhttpd/daemon.c:5283 |
400 | #: src/microhttpd/daemon.c:5303 src/microhttpd/daemon.c:5325 | 407 | #: src/microhttpd/daemon.c:5304 src/microhttpd/daemon.c:5326 |
401 | #, c-format | 408 | #, c-format |
402 | msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n" | 409 | msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set.\n" |
403 | msgstr "" | 410 | msgstr "" |
404 | 411 | ||
405 | #: src/microhttpd/daemon.c:5221 | 412 | #: src/microhttpd/daemon.c:5222 |
406 | msgid "Error initializing DH parameters\n" | 413 | msgid "Error initializing DH parameters.\n" |
407 | msgstr "" | 414 | msgstr "" |
408 | 415 | ||
409 | #: src/microhttpd/daemon.c:5231 | 416 | #: src/microhttpd/daemon.c:5232 |
410 | msgid "Diffie-Hellman parameters string too long\n" | 417 | msgid "Diffie-Hellman parameters string too long.\n" |
411 | msgstr "" | 418 | msgstr "" |
412 | 419 | ||
413 | #: src/microhttpd/daemon.c:5242 | 420 | #: src/microhttpd/daemon.c:5243 |
414 | msgid "Bad Diffie-Hellman parameters format\n" | 421 | msgid "Bad Diffie-Hellman parameters format.\n" |
415 | msgstr "" | 422 | msgstr "" |
416 | 423 | ||
417 | #: src/microhttpd/daemon.c:5270 | 424 | #: src/microhttpd/daemon.c:5271 |
418 | #, c-format | 425 | #, c-format |
419 | msgid "Setting priorities to `%s' failed: %s\n" | 426 | msgid "Setting priorities to `%s' failed: %s\n" |
420 | msgstr "" | 427 | msgstr "" |
421 | 428 | ||
422 | #: src/microhttpd/daemon.c:5291 | 429 | #: src/microhttpd/daemon.c:5292 |
423 | msgid "" | 430 | msgid "" |
424 | "MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0\n" | 431 | "MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0.\n" |
425 | msgstr "" | 432 | msgstr "" |
426 | 433 | ||
427 | #: src/microhttpd/daemon.c:5313 | 434 | #: src/microhttpd/daemon.c:5314 |
428 | msgid "" | 435 | msgid "" |
429 | "MHD_OPTION_HTTPS_CERT_CALLBACK2 requires building MHD with GnuTLS >= 3.6.3\n" | 436 | "MHD_OPTION_HTTPS_CERT_CALLBACK2 requires building MHD with GnuTLS >= 3.6.3.\n" |
430 | msgstr "" | 437 | msgstr "" |
431 | 438 | ||
432 | #: src/microhttpd/daemon.c:5348 | 439 | #: src/microhttpd/daemon.c:5349 |
433 | msgid "" | 440 | msgid "" |
434 | "MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET " | 441 | "MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET " |
435 | "flag set.\n" | 442 | "flag set.\n" |
436 | msgstr "" | 443 | msgstr "" |
437 | 444 | ||
438 | #: src/microhttpd/daemon.c:5384 | 445 | #: src/microhttpd/daemon.c:5385 |
439 | msgid "TCP fastopen is not supported on this platform\n" | 446 | msgid "TCP fastopen is not supported on this platform.\n" |
440 | msgstr "" | 447 | msgstr "" |
441 | 448 | ||
442 | #: src/microhttpd/daemon.c:5403 | 449 | #: src/microhttpd/daemon.c:5404 |
443 | msgid "" | 450 | msgid "" |
444 | "Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behavior is " | 451 | "Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behavior is " |
445 | "specified by MHD_OPTION_STRICT_CLIENT.\n" | 452 | "specified by MHD_OPTION_STRICT_CLIENT.\n" |
446 | msgstr "" | 453 | msgstr "" |
447 | 454 | ||
448 | #: src/microhttpd/daemon.c:5538 | 455 | #: src/microhttpd/daemon.c:5539 |
449 | #, c-format | 456 | #, c-format |
450 | msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n" | 457 | msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3.\n" |
451 | msgstr "" | 458 | msgstr "" |
452 | 459 | ||
453 | #: src/microhttpd/daemon.c:5552 | 460 | #: src/microhttpd/daemon.c:5553 |
454 | #, c-format | 461 | #, c-format |
455 | msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n" | 462 | msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support.\n" |
456 | msgstr "" | 463 | msgstr "" |
457 | 464 | ||
458 | #: src/microhttpd/daemon.c:5559 | 465 | #: src/microhttpd/daemon.c:5560 |
459 | #, c-format | 466 | #, c-format |
460 | msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n" | 467 | msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?).\n" |
461 | msgstr "" | 468 | msgstr "" |
462 | 469 | ||
463 | #: src/microhttpd/daemon.c:5589 | 470 | #: src/microhttpd/daemon.c:5590 |
464 | #, c-format | 471 | #, c-format |
465 | msgid "Call to epoll_create1 failed: %s\n" | 472 | msgid "Call to epoll_create1 failed: %s\n" |
466 | msgstr "" | 473 | msgstr "" |
467 | 474 | ||
468 | #: src/microhttpd/daemon.c:5599 | 475 | #: src/microhttpd/daemon.c:5600 |
469 | msgid "Failed to set noninheritable mode on epoll FD.\n" | 476 | msgid "Failed to set noninheritable mode on epoll FD.\n" |
470 | msgstr "" | 477 | msgstr "" |
471 | 478 | ||
472 | #: src/microhttpd/daemon.c:5851 | 479 | #: src/microhttpd/daemon.c:5852 |
473 | msgid "" | 480 | msgid "" |
474 | "Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with " | 481 | "Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with " |
475 | "MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was " | 482 | "MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was " |
476 | "added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n" | 483 | "added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n" |
477 | msgstr "" | 484 | msgstr "" |
478 | 485 | ||
479 | #: src/microhttpd/daemon.c:5899 | 486 | #: src/microhttpd/daemon.c:5900 |
480 | msgid "Using debug build of libmicrohttpd.\n" | 487 | msgid "Using debug build of libmicrohttpd.\n" |
481 | msgstr "" | 488 | msgstr "" |
482 | 489 | ||
483 | #: src/microhttpd/daemon.c:5913 | 490 | #: src/microhttpd/daemon.c:5914 |
484 | #, c-format | 491 | #, c-format |
485 | msgid "Failed to create inter-thread communication channel: %s\n" | 492 | msgid "Failed to create inter-thread communication channel: %s\n" |
486 | msgstr "" | 493 | msgstr "" |
487 | 494 | ||
488 | #: src/microhttpd/daemon.c:5930 | 495 | #: src/microhttpd/daemon.c:5931 |
489 | msgid "" | 496 | msgid "" |
490 | "file descriptor for inter-thread communication channel exceeds maximum " | 497 | "file descriptor for inter-thread communication channel exceeds maximum " |
491 | "value\n" | 498 | "value.\n" |
492 | msgstr "" | 499 | msgstr "" |
493 | 500 | ||
494 | #: src/microhttpd/daemon.c:5950 | 501 | #: src/microhttpd/daemon.c:5951 |
495 | msgid "Specified value for NC_SIZE too large\n" | 502 | msgid "Specified value for NC_SIZE too large.\n" |
496 | msgstr "" | 503 | msgstr "" |
497 | 504 | ||
498 | #: src/microhttpd/daemon.c:5964 | 505 | #: src/microhttpd/daemon.c:5965 |
499 | #, c-format | 506 | #, c-format |
500 | msgid "Failed to allocate memory for nonce-nc map: %s\n" | 507 | msgid "Failed to allocate memory for nonce-nc map: %s\n" |
501 | msgstr "" | 508 | msgstr "" |
502 | 509 | ||
503 | #: src/microhttpd/daemon.c:5981 | 510 | #: src/microhttpd/daemon.c:5982 |
504 | msgid "MHD failed to initialize nonce-nc mutex\n" | 511 | msgid "MHD failed to initialize nonce-nc mutex.\n" |
505 | msgstr "" | 512 | msgstr "" |
506 | 513 | ||
507 | #: src/microhttpd/daemon.c:6002 | 514 | #: src/microhttpd/daemon.c:6003 |
508 | msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n" | 515 | msgid "MHD thread polling only works with MHD_USE_INTERNAL_POLLING_THREAD.\n" |
509 | msgstr "" | 516 | msgstr "" |
510 | 517 | ||
511 | #: src/microhttpd/daemon.c:6026 | 518 | #: src/microhttpd/daemon.c:6027 |
512 | #, c-format | 519 | #, c-format |
513 | msgid "Failed to create socket for listening: %s\n" | 520 | msgid "Failed to create socket for listening: %s\n" |
514 | msgstr "" | 521 | msgstr "" |
515 | 522 | ||
516 | #: src/microhttpd/daemon.c:6047 src/microhttpd/daemon.c:6066 | 523 | #: src/microhttpd/daemon.c:6048 src/microhttpd/daemon.c:6067 |
517 | #: src/microhttpd/daemon.c:6089 src/microhttpd/daemon.c:6127 | 524 | #: src/microhttpd/daemon.c:6090 src/microhttpd/daemon.c:6128 |
518 | #: src/microhttpd/daemon.c:6205 src/microhttpd/daemon.c:6236 | 525 | #: src/microhttpd/daemon.c:6206 src/microhttpd/daemon.c:6237 |
519 | #, c-format | 526 | #, c-format |
520 | msgid "setsockopt failed: %s\n" | 527 | msgid "setsockopt failed: %s\n" |
521 | msgstr "" | 528 | msgstr "" |
522 | 529 | ||
523 | #: src/microhttpd/daemon.c:6100 | 530 | #: src/microhttpd/daemon.c:6101 |
524 | msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n" | 531 | msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined.\n" |
525 | msgstr "" | 532 | msgstr "" |
526 | 533 | ||
527 | #: src/microhttpd/daemon.c:6136 | 534 | #: src/microhttpd/daemon.c:6137 |
528 | msgid "" | 535 | msgid "" |
529 | "Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n" | 536 | "Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined.\n" |
530 | msgstr "" | 537 | msgstr "" |
531 | 538 | ||
532 | #: src/microhttpd/daemon.c:6216 | 539 | #: src/microhttpd/daemon.c:6217 |
533 | #, c-format | 540 | #, c-format |
534 | msgid "Failed to bind to port %u: %s\n" | 541 | msgid "Failed to bind to port %u: %s\n" |
535 | msgstr "" | 542 | msgstr "" |
536 | 543 | ||
537 | #: src/microhttpd/daemon.c:6247 | 544 | #: src/microhttpd/daemon.c:6248 |
538 | #, c-format | 545 | #, c-format |
539 | msgid "Failed to listen for connections: %s\n" | 546 | msgid "Failed to listen for connections: %s\n" |
540 | msgstr "" | 547 | msgstr "" |
541 | 548 | ||
542 | #: src/microhttpd/daemon.c:6278 | 549 | #: src/microhttpd/daemon.c:6279 |
543 | #, c-format | 550 | #, c-format |
544 | msgid "Failed to get listen port number: %s\n" | 551 | msgid "Failed to get listen port number: %s\n" |
545 | msgstr "" | 552 | msgstr "" |
546 | 553 | ||
547 | #: src/microhttpd/daemon.c:6289 | 554 | #: src/microhttpd/daemon.c:6290 |
548 | msgid "" | 555 | msgid "" |
549 | "Failed to get listen port number (`struct sockaddr_storage` too small!?)\n" | 556 | "Failed to get listen port number (`struct sockaddr_storage` too small!?).\n" |
550 | msgstr "" | 557 | msgstr "" |
551 | 558 | ||
552 | #: src/microhttpd/daemon.c:6330 | 559 | #: src/microhttpd/daemon.c:6331 |
553 | msgid "Unknown address family!\n" | 560 | msgid "Unknown address family!\n" |
554 | msgstr "" | 561 | msgstr "" |
555 | 562 | ||
556 | #: src/microhttpd/daemon.c:6343 | 563 | #: src/microhttpd/daemon.c:6344 |
557 | #, c-format | 564 | #, c-format |
558 | msgid "Failed to set nonblocking mode on listening socket: %s\n" | 565 | msgid "Failed to set nonblocking mode on listening socket: %s\n" |
559 | msgstr "" | 566 | msgstr "" |
560 | 567 | ||
561 | #: src/microhttpd/daemon.c:6386 | 568 | #: src/microhttpd/daemon.c:6387 |
562 | msgid "" | 569 | msgid "" |
563 | "Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n" | 570 | "Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n" |
564 | msgstr "" | 571 | msgstr "" |
565 | 572 | ||
566 | #: src/microhttpd/daemon.c:6400 src/microhttpd/daemon.c:6413 | 573 | #: src/microhttpd/daemon.c:6401 src/microhttpd/daemon.c:6411 |
567 | msgid "MHD failed to initialize IP connection limit mutex\n" | 574 | msgid "MHD failed to initialize IP connection limit mutex.\n" |
568 | msgstr "" | 575 | msgstr "" |
569 | 576 | ||
570 | #: src/microhttpd/daemon.c:6432 | 577 | #: src/microhttpd/daemon.c:6429 |
571 | msgid "Failed to initialize TLS support\n" | 578 | msgid "Failed to initialize TLS support.\n" |
572 | msgstr "" | 579 | msgstr "" |
573 | 580 | ||
574 | #: src/microhttpd/daemon.c:6460 | 581 | #: src/microhttpd/daemon.c:6456 |
575 | #, c-format | 582 | #, c-format |
576 | msgid "Failed to create listen thread: %s\n" | 583 | msgid "Failed to create listen thread: %s\n" |
577 | msgstr "" | 584 | msgstr "" |
578 | 585 | ||
579 | #: src/microhttpd/daemon.c:6509 | 586 | #: src/microhttpd/daemon.c:6505 |
580 | #, c-format | 587 | #, c-format |
581 | msgid "Failed to create worker inter-thread communication channel: %s\n" | 588 | msgid "Failed to create worker inter-thread communication channel: %s\n" |
582 | msgstr "" | 589 | msgstr "" |
583 | 590 | ||
584 | #: src/microhttpd/daemon.c:6521 | 591 | #: src/microhttpd/daemon.c:6517 |
585 | msgid "" | 592 | msgid "" |
586 | "File descriptor for worker inter-thread communication channel exceeds " | 593 | "File descriptor for worker inter-thread communication channel exceeds " |
587 | "maximum value\n" | 594 | "maximum value.\n" |
588 | msgstr "" | 595 | msgstr "" |
589 | 596 | ||
590 | #: src/microhttpd/daemon.c:6546 | 597 | #: src/microhttpd/daemon.c:6542 |
591 | msgid "MHD failed to initialize cleanup connection mutex\n" | 598 | msgid "MHD failed to initialize cleanup connection mutex.\n" |
592 | msgstr "" | 599 | msgstr "" |
593 | 600 | ||
594 | #: src/microhttpd/daemon.c:6560 | 601 | #: src/microhttpd/daemon.c:6556 |
595 | #, c-format | 602 | #, c-format |
596 | msgid "Failed to create pool thread: %s\n" | 603 | msgid "Failed to create pool thread: %s\n" |
597 | msgstr "" | 604 | msgstr "" |
598 | 605 | ||
599 | #: src/microhttpd/daemon.c:6715 src/microhttpd/daemon.c:6748 | 606 | #: src/microhttpd/daemon.c:6711 src/microhttpd/daemon.c:6744 |
600 | msgid "MHD_stop_daemon() called while we have suspended connections.\n" | 607 | msgid "MHD_stop_daemon() called while we have suspended connections.\n" |
601 | msgstr "" | 608 | msgstr "" |
602 | 609 | ||
603 | #: src/microhttpd/daemon.c:6758 src/microhttpd/daemon.c:6889 | 610 | #: src/microhttpd/daemon.c:6754 src/microhttpd/daemon.c:6847 |
604 | msgid "Failed to signal shutdown via inter-thread communication channel" | 611 | #: src/microhttpd/daemon.c:6885 |
605 | msgstr "" | 612 | msgid "Failed to signal shutdown via inter-thread communication channel.\n" |
606 | |||
607 | #: src/microhttpd/daemon.c:6851 | ||
608 | msgid "Failed to signal shutdown via inter-thread communication channel." | ||
609 | msgstr "" | 613 | msgstr "" |
610 | 614 | ||
611 | #: src/microhttpd/daemon.c:7327 | 615 | #: src/microhttpd/daemon.c:7323 |
612 | msgid "Failed to initialize winsock\n" | 616 | msgid "Failed to initialize winsock.\n" |
613 | msgstr "" | 617 | msgstr "" |
614 | 618 | ||
615 | #: src/microhttpd/daemon.c:7330 | 619 | #: src/microhttpd/daemon.c:7326 |
616 | msgid "Winsock version 2.2 is not available\n" | 620 | msgid "Winsock version 2.2 is not available.\n" |
617 | msgstr "" | 621 | msgstr "" |
618 | 622 | ||
619 | #: src/microhttpd/daemon.c:7338 src/microhttpd/daemon.c:7342 | 623 | #: src/microhttpd/daemon.c:7334 src/microhttpd/daemon.c:7338 |
620 | msgid "Failed to initialise multithreading in libgcrypt\n" | 624 | msgid "Failed to initialise multithreading in libgcrypt.\n" |
621 | msgstr "" | 625 | msgstr "" |
622 | 626 | ||
623 | #: src/microhttpd/daemon.c:7348 | 627 | #: src/microhttpd/daemon.c:7344 |
624 | msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n" | 628 | msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer.\n" |
625 | msgstr "" | 629 | msgstr "" |
626 | 630 | ||
627 | #: src/microhttpd/mhd_sockets.h:270 | 631 | #: src/microhttpd/mhd_sockets.h:274 |
628 | msgid "Close socket failed.\n" | 632 | msgid "Close socket failed.\n" |
629 | msgstr "" | 633 | msgstr "" |
630 | 634 | ||
631 | #: src/microhttpd/connection.c:928 | 635 | #: src/microhttpd/connection.c:874 |
632 | msgid "Closing connection (application reported error generating data)\n" | 636 | msgid "Closing connection (application reported error generating data).\n" |
633 | msgstr "" | 637 | msgstr "" |
634 | 638 | ||
635 | #: src/microhttpd/connection.c:977 | 639 | #: src/microhttpd/connection.c:923 |
636 | msgid "Closing connection (out of memory)\n" | 640 | msgid "Closing connection (out of memory).\n" |
637 | msgstr "" | 641 | msgstr "" |
638 | 642 | ||
639 | #: src/microhttpd/connection.c:1025 | 643 | #: src/microhttpd/connection.c:971 |
640 | msgid "Closing connection (application error generating response)\n" | 644 | msgid "Closing connection (application error generating response).\n" |
641 | msgstr "" | 645 | msgstr "" |
642 | 646 | ||
643 | #: src/microhttpd/connection.c:1653 | 647 | #: src/microhttpd/connection.c:1599 |
644 | #, c-format | 648 | #, c-format |
645 | msgid "" | 649 | msgid "" |
646 | "Error processing request (HTTP response code is %u (`%s')). Closing " | 650 | "Error processing request (HTTP response code is %u (`%s')). Closing " |
647 | "connection.\n" | 651 | "connection.\n" |
648 | msgstr "" | 652 | msgstr "" |
649 | 653 | ||
650 | #: src/microhttpd/connection.c:1680 src/microhttpd/connection.c:2715 | 654 | #: src/microhttpd/connection.c:1626 src/microhttpd/connection.c:2661 |
651 | msgid "Closing connection (failed to queue response)\n" | 655 | msgid "Closing connection (failed to queue response).\n" |
652 | msgstr "" | 656 | msgstr "" |
653 | 657 | ||
654 | #: src/microhttpd/connection.c:1691 src/microhttpd/connection.c:3523 | 658 | #: src/microhttpd/connection.c:1637 src/microhttpd/connection.c:3469 |
655 | #: src/microhttpd/connection.c:3632 | 659 | #: src/microhttpd/connection.c:3578 |
656 | msgid "Closing connection (failed to create response header)\n" | 660 | msgid "Closing connection (failed to create response header).\n" |
657 | msgstr "" | 661 | msgstr "" |
658 | 662 | ||
659 | #: src/microhttpd/connection.c:1737 src/microhttpd/connection.c:2875 | 663 | #: src/microhttpd/connection.c:1683 src/microhttpd/connection.c:2821 |
660 | #: src/microhttpd/connection.c:2943 src/microhttpd/connection.c:3296 | 664 | #: src/microhttpd/connection.c:2889 src/microhttpd/connection.c:3242 |
661 | #, c-format | 665 | #, c-format |
662 | msgid "In function %s handling connection at state: %s\n" | 666 | msgid "In function %s handling connection at state: %s\n" |
663 | msgstr "" | 667 | msgstr "" |
664 | 668 | ||
665 | #: src/microhttpd/connection.c:1954 | 669 | #: src/microhttpd/connection.c:1900 |
666 | msgid "Not enough memory in pool to allocate header record!\n" | 670 | msgid "Not enough memory in pool to allocate header record!\n" |
667 | msgstr "" | 671 | msgstr "" |
668 | 672 | ||
669 | #: src/microhttpd/connection.c:2001 | 673 | #: src/microhttpd/connection.c:1947 |
670 | msgid "Not enough memory in pool to parse cookies!\n" | 674 | msgid "Not enough memory in pool to parse cookies!\n" |
671 | msgstr "" | 675 | msgstr "" |
672 | 676 | ||
673 | #: src/microhttpd/connection.c:2232 src/microhttpd/connection.c:2434 | 677 | #: src/microhttpd/connection.c:2178 src/microhttpd/connection.c:2380 |
674 | msgid "Application reported internal error, closing connection.\n" | 678 | msgid "Application reported internal error, closing connection.\n" |
675 | msgstr "" | 679 | msgstr "" |
676 | 680 | ||
677 | #: src/microhttpd/connection.c:2299 src/microhttpd/connection.c:2378 | 681 | #: src/microhttpd/connection.c:2245 src/microhttpd/connection.c:2324 |
678 | msgid "" | 682 | msgid "" |
679 | "Received malformed HTTP request (bad chunked encoding). Closing connection.\n" | 683 | "Received malformed HTTP request (bad chunked encoding). Closing connection.\n" |
680 | msgstr "" | 684 | msgstr "" |
681 | 685 | ||
682 | #: src/microhttpd/connection.c:2442 | 686 | #: src/microhttpd/connection.c:2388 |
683 | msgid "libmicrohttpd API violation" | 687 | msgid "libmicrohttpd API violation.\n" |
684 | msgstr "" | 688 | msgstr "" |
685 | 689 | ||
686 | #: src/microhttpd/connection.c:2458 | 690 | #: src/microhttpd/connection.c:2404 |
687 | msgid "" | 691 | msgid "" |
688 | "WARNING: incomplete upload processing and connection not suspended may " | 692 | "WARNING: incomplete upload processing and connection not suspended may " |
689 | "result in hung connection.\n" | 693 | "result in hung connection.\n" |
690 | msgstr "" | 694 | msgstr "" |
691 | 695 | ||
692 | #: src/microhttpd/connection.c:2530 | 696 | #: src/microhttpd/connection.c:2476 |
693 | msgid "Received malformed line (no colon). Closing connection.\n" | 697 | msgid "Received malformed line (no colon). Closing connection.\n" |
694 | msgstr "" | 698 | msgstr "" |
695 | 699 | ||
696 | #: src/microhttpd/connection.c:2691 | 700 | #: src/microhttpd/connection.c:2637 |
697 | msgid "Received HTTP 1.1 request without `Host' header.\n" | 701 | msgid "Received HTTP 1.1 request without `Host' header.\n" |
698 | msgstr "" | 702 | msgstr "" |
699 | 703 | ||
700 | #: src/microhttpd/connection.c:2703 | 704 | #: src/microhttpd/connection.c:2649 |
701 | msgid "Closing connection (failed to create response)\n" | 705 | msgid "Closing connection (failed to create response).\n" |
702 | msgstr "" | 706 | msgstr "" |
703 | 707 | ||
704 | #: src/microhttpd/connection.c:2853 | 708 | #: src/microhttpd/connection.c:2799 |
705 | msgid "Socket disconnected while reading request.\n" | 709 | msgid "Socket disconnected while reading request.\n" |
706 | msgstr "" | 710 | msgstr "" |
707 | 711 | ||
708 | #: src/microhttpd/connection.c:2860 | 712 | #: src/microhttpd/connection.c:2806 |
709 | msgid "Connection socket is closed due to error when reading request.\n" | 713 | msgid "Connection socket is closed due to error when reading request.\n" |
710 | msgstr "" | 714 | msgstr "" |
711 | 715 | ||
712 | #: src/microhttpd/connection.c:2970 | 716 | #: src/microhttpd/connection.c:2916 |
713 | #, c-format | 717 | #, c-format |
714 | msgid "Failed to send data in request for %s.\n" | 718 | msgid "Failed to send data in request for %s.\n" |
715 | msgstr "" | 719 | msgstr "" |
716 | 720 | ||
717 | #: src/microhttpd/connection.c:2979 | 721 | #: src/microhttpd/connection.c:2925 |
718 | #, c-format | 722 | #, c-format |
719 | msgid "Sent 100 continue response: `%.*s'\n" | 723 | msgid "Sent 100 continue response: `%.*s'\n" |
720 | msgstr "" | 724 | msgstr "" |
721 | 725 | ||
722 | #: src/microhttpd/connection.c:3022 | 726 | #: src/microhttpd/connection.c:2968 |
723 | msgid "Connection was closed while sending response headers.\n" | 727 | msgid "Connection was closed while sending response headers.\n" |
724 | msgstr "" | 728 | msgstr "" |
725 | 729 | ||
726 | #: src/microhttpd/connection.c:3074 | 730 | #: src/microhttpd/connection.c:3020 |
727 | msgid "Data offset exceeds limit" | 731 | msgid "Data offset exceeds limit.\n" |
728 | msgstr "" | 732 | msgstr "" |
729 | 733 | ||
730 | #: src/microhttpd/connection.c:3084 | 734 | #: src/microhttpd/connection.c:3030 |
731 | #, c-format | 735 | #, c-format |
732 | msgid "Sent %d-byte DATA response: `%.*s'\n" | 736 | msgid "Sent %d-byte DATA response: `%.*s'\n" |
733 | msgstr "" | 737 | msgstr "" |
734 | 738 | ||
735 | #: src/microhttpd/connection.c:3101 | 739 | #: src/microhttpd/connection.c:3047 |
736 | #, c-format | 740 | #, c-format |
737 | msgid "Failed to send data in request for `%s'.\n" | 741 | msgid "Failed to send data in request for `%s'.\n" |
738 | msgstr "" | 742 | msgstr "" |
739 | 743 | ||
740 | #: src/microhttpd/connection.c:3131 src/microhttpd/connection.c:3161 | 744 | #: src/microhttpd/connection.c:3077 src/microhttpd/connection.c:3107 |
741 | msgid "Connection was closed while sending response body.\n" | 745 | msgid "Connection was closed while sending response body.\n" |
742 | msgstr "" | 746 | msgstr "" |
743 | 747 | ||
744 | #: src/microhttpd/connection.c:3184 | 748 | #: src/microhttpd/connection.c:3130 |
745 | msgid "Internal error\n" | 749 | msgid "Internal error.\n" |
746 | msgstr "" | 750 | msgstr "" |
747 | 751 | ||
748 | #: src/microhttpd/connection.c:3258 | 752 | #: src/microhttpd/connection.c:3204 |
749 | msgid "" | 753 | msgid "" |
750 | "Failed to signal end of connection via inter-thread communication channel" | 754 | "Failed to signal end of connection via inter-thread communication channel.\n" |
751 | msgstr "" | 755 | msgstr "" |
752 | 756 | ||
753 | #: src/microhttpd/connection.c:3983 | 757 | #: src/microhttpd/connection.c:3928 |
754 | msgid "Attempted to queue response on wrong thread!\n" | 758 | msgid "Attempted to queue response on wrong thread!\n" |
755 | msgstr "" | 759 | msgstr "" |
756 | 760 | ||
757 | #: src/microhttpd/connection.c:3995 | 761 | #: src/microhttpd/connection.c:3940 |
758 | msgid "" | 762 | msgid "" |
759 | "Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n" | 763 | "Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n" |
760 | msgstr "" | 764 | msgstr "" |
761 | 765 | ||
762 | #: src/microhttpd/connection.c:4005 | 766 | #: src/microhttpd/connection.c:3950 |
763 | msgid "Application used invalid status code for 'upgrade' response!\n" | 767 | msgid "Application used invalid status code for 'upgrade' response!\n" |
764 | msgstr "" | 768 | msgstr "" |
765 | 769 | ||
@@ -783,7 +787,7 @@ msgid "Socketpair descriptor larger than FD_SETSIZE: %d > %d\n" | |||
783 | msgstr "" | 787 | msgstr "" |
784 | 788 | ||
785 | #: src/microhttpd/response.c:1076 | 789 | #: src/microhttpd/response.c:1076 |
786 | msgid "Error cleaning up while handling epoll error" | 790 | msgid "Error cleaning up while handling epoll error.\n" |
787 | msgstr "" | 791 | msgstr "" |
788 | 792 | ||
789 | #: src/microhttpd/mhd_itc.h:355 | 793 | #: src/microhttpd/mhd_itc.h:355 |
@@ -791,17 +795,17 @@ msgid "Failed to destroy ITC.\n" | |||
791 | msgstr "" | 795 | msgstr "" |
792 | 796 | ||
793 | #: src/microhttpd/basicauth.c:71 | 797 | #: src/microhttpd/basicauth.c:71 |
794 | msgid "Error decoding basic authentication\n" | 798 | msgid "Error decoding basic authentication.\n" |
795 | msgstr "" | 799 | msgstr "" |
796 | 800 | ||
797 | #: src/microhttpd/basicauth.c:81 | 801 | #: src/microhttpd/basicauth.c:81 |
798 | msgid "Basic authentication doesn't contain ':' separator\n" | 802 | msgid "Basic authentication doesn't contain ':' separator.\n" |
799 | msgstr "" | 803 | msgstr "" |
800 | 804 | ||
801 | #: src/microhttpd/basicauth.c:99 | 805 | #: src/microhttpd/basicauth.c:99 |
802 | msgid "Failed to allocate memory for password\n" | 806 | msgid "Failed to allocate memory for password.\n" |
803 | msgstr "" | 807 | msgstr "" |
804 | 808 | ||
805 | #: src/microhttpd/basicauth.c:164 | 809 | #: src/microhttpd/basicauth.c:164 |
806 | msgid "Failed to add Basic auth header\n" | 810 | msgid "Failed to add Basic auth header.\n" |
807 | msgstr "" | 811 | msgstr "" |
diff --git a/src/microhttpd/postprocessor.c b/src/microhttpd/postprocessor.c index 8848b306..1eb33ed6 100644 --- a/src/microhttpd/postprocessor.c +++ b/src/microhttpd/postprocessor.c | |||
@@ -137,8 +137,7 @@ struct MHD_PostProcessor | |||
137 | void *cls; | 137 | void *cls; |
138 | 138 | ||
139 | /** | 139 | /** |
140 | * Encoding as given by the headers of the | 140 | * Encoding as given by the headers of the connection. |
141 | * connection. | ||
142 | */ | 141 | */ |
143 | const char *encoding; | 142 | const char *encoding; |
144 | 143 | ||
@@ -590,7 +589,7 @@ post_process_urlencoded (struct MHD_PostProcessor *pp, | |||
590 | pp->state = PP_Error; | 589 | pp->state = PP_Error; |
591 | break; | 590 | break; |
592 | case PP_Callback: | 591 | case PP_Callback: |
593 | if ( (pp->buffer_pos + (end_key - start_key) > | 592 | if ( (pp->buffer_pos + (end_key - start_key) >= |
594 | pp->buffer_size) || | 593 | pp->buffer_size) || |
595 | (pp->buffer_pos + (end_key - start_key) < | 594 | (pp->buffer_pos + (end_key - start_key) < |
596 | pp->buffer_pos) ) | 595 | pp->buffer_pos) ) |
@@ -640,6 +639,11 @@ post_process_urlencoded (struct MHD_PostProcessor *pp, | |||
640 | { | 639 | { |
641 | if (NULL == end_key) | 640 | if (NULL == end_key) |
642 | end_key = &post_data[poff]; | 641 | end_key = &post_data[poff]; |
642 | if (pp->buffer_pos + (end_key - start_key) >= pp->buffer_size) | ||
643 | { | ||
644 | pp->state = PP_Error; | ||
645 | return MHD_NO; | ||
646 | } | ||
643 | memcpy (&kbuf[pp->buffer_pos], | 647 | memcpy (&kbuf[pp->buffer_pos], |
644 | start_key, | 648 | start_key, |
645 | end_key - start_key); | 649 | end_key - start_key); |
@@ -667,6 +671,11 @@ post_process_urlencoded (struct MHD_PostProcessor *pp, | |||
667 | last_escape); | 671 | last_escape); |
668 | pp->must_ikvi = false; | 672 | pp->must_ikvi = false; |
669 | } | 673 | } |
674 | if (PP_Error == pp->state) | ||
675 | { | ||
676 | /* State in error, returning failure */ | ||
677 | return MHD_NO; | ||
678 | } | ||
670 | return MHD_YES; | 679 | return MHD_YES; |
671 | } | 680 | } |
672 | 681 | ||
@@ -1428,7 +1437,8 @@ MHD_destroy_post_processor (struct MHD_PostProcessor *pp) | |||
1428 | the post-processing may have been interrupted | 1437 | the post-processing may have been interrupted |
1429 | at any stage */ | 1438 | at any stage */ |
1430 | if ( (pp->xbuf_pos > 0) || | 1439 | if ( (pp->xbuf_pos > 0) || |
1431 | (pp->state != PP_Done) ) | 1440 | ( (pp->state != PP_Done) && |
1441 | (pp->state != PP_Init) ) ) | ||
1432 | ret = MHD_NO; | 1442 | ret = MHD_NO; |
1433 | else | 1443 | else |
1434 | ret = MHD_YES; | 1444 | ret = MHD_YES; |
diff --git a/src/microhttpd/test_postprocessor.c b/src/microhttpd/test_postprocessor.c index e70171cc..b62e7ff9 100644 --- a/src/microhttpd/test_postprocessor.c +++ b/src/microhttpd/test_postprocessor.c | |||
@@ -451,6 +451,71 @@ test_empty_value (void) | |||
451 | } | 451 | } |
452 | 452 | ||
453 | 453 | ||
454 | static enum MHD_Result | ||
455 | value_checker2 (void *cls, | ||
456 | enum MHD_ValueKind kind, | ||
457 | const char *key, | ||
458 | const char *filename, | ||
459 | const char *content_type, | ||
460 | const char *transfer_encoding, | ||
461 | const char *data, | ||
462 | uint64_t off, | ||
463 | size_t size) | ||
464 | { | ||
465 | return MHD_YES; | ||
466 | } | ||
467 | |||
468 | |||
469 | static int | ||
470 | test_overflow () | ||
471 | { | ||
472 | struct MHD_Connection connection; | ||
473 | struct MHD_HTTP_Header header; | ||
474 | struct MHD_PostProcessor *pp; | ||
475 | size_t i; | ||
476 | size_t j; | ||
477 | size_t delta; | ||
478 | char *buf; | ||
479 | |||
480 | memset (&connection, 0, sizeof (struct MHD_Connection)); | ||
481 | memset (&header, 0, sizeof (struct MHD_HTTP_Header)); | ||
482 | connection.headers_received = &header; | ||
483 | header.header = MHD_HTTP_HEADER_CONTENT_TYPE; | ||
484 | header.value = MHD_HTTP_POST_ENCODING_FORM_URLENCODED; | ||
485 | header.header_size = strlen (header.header); | ||
486 | header.value_size = strlen (header.value); | ||
487 | header.kind = MHD_HEADER_KIND; | ||
488 | for (i = 128; i < 1024 * 1024; i += 1024) | ||
489 | { | ||
490 | pp = MHD_create_post_processor (&connection, | ||
491 | 1024, | ||
492 | &value_checker2, | ||
493 | NULL); | ||
494 | buf = malloc (i); | ||
495 | if (NULL == buf) | ||
496 | return 1; | ||
497 | memset (buf, 'A', i); | ||
498 | buf[i / 2] = '='; | ||
499 | delta = 1 + (MHD_random_ () % (i - 1)); | ||
500 | j = 0; | ||
501 | while (j < i) | ||
502 | { | ||
503 | if (j + delta > i) | ||
504 | delta = i - j; | ||
505 | if (MHD_NO == | ||
506 | MHD_post_process (pp, | ||
507 | &buf[j], | ||
508 | delta)) | ||
509 | break; | ||
510 | j += delta; | ||
511 | } | ||
512 | free (buf); | ||
513 | MHD_destroy_post_processor (pp); | ||
514 | } | ||
515 | return 0; | ||
516 | } | ||
517 | |||
518 | |||
454 | int | 519 | int |
455 | main (int argc, char *const *argv) | 520 | main (int argc, char *const *argv) |
456 | { | 521 | { |
@@ -463,6 +528,7 @@ main (int argc, char *const *argv) | |||
463 | errorCount += test_multipart (); | 528 | errorCount += test_multipart (); |
464 | errorCount += test_nested_multipart (); | 529 | errorCount += test_nested_multipart (); |
465 | errorCount += test_empty_value (); | 530 | errorCount += test_empty_value (); |
531 | errorCount += test_overflow (); | ||
466 | if (errorCount != 0) | 532 | if (errorCount != 0) |
467 | fprintf (stderr, "Error (code: %u)\n", errorCount); | 533 | fprintf (stderr, "Error (code: %u)\n", errorCount); |
468 | return errorCount != 0; /* 0 == pass */ | 534 | return errorCount != 0; /* 0 == pass */ |