1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-17 06:04:07 +03:00

journal-remote: set upper length bound when parsing incoming headers

CID#1529420
This commit is contained in:
Luca Boccassi 2023-12-09 12:09:42 +00:00
parent 9614dd542b
commit 5572e9d82f
3 changed files with 10 additions and 1 deletions

View File

@ -22,6 +22,7 @@
#include "fileio.h"
#include "glob-util.h"
#include "hostname-util.h"
#include "journal-remote.h"
#include "log.h"
#include "logs-show.h"
#include "main-func.h"
@ -431,6 +432,11 @@ static int request_parse_range(
if (!range)
return 0;
/* Safety upper bound to make Coverity happy. Apache2 has a default limit of 8KB:
* https://httpd.apache.org/docs/2.2/mod/core.html#limitrequestfieldsize */
if (strlen(range) > JOURNAL_SERVER_MEMORY_MAX)
return -EINVAL;
m->n_skip = 0;
range_after_eq = startswith(range, "entries=");
if (range_after_eq) {

View File

@ -374,7 +374,7 @@ static int setup_microhttpd_server(RemoteServer *s,
{ MHD_OPTION_EXTERNAL_LOGGER, (intptr_t) microhttpd_logger},
{ MHD_OPTION_NOTIFY_COMPLETED, (intptr_t) request_meta_free},
{ MHD_OPTION_LISTEN_SOCKET, fd},
{ MHD_OPTION_CONNECTION_MEMORY_LIMIT, 128*1024},
{ MHD_OPTION_CONNECTION_MEMORY_LIMIT, JOURNAL_SERVER_MEMORY_MAX},
{ MHD_OPTION_END},
{ MHD_OPTION_END},
{ MHD_OPTION_END},

View File

@ -48,6 +48,9 @@ struct RemoteServer {
};
extern RemoteServer *journal_remote_server_global;
/* Used for MHD_OPTION_CONNECTION_MEMORY_LIMIT and header parsing cap */
#define JOURNAL_SERVER_MEMORY_MAX 128U * 1024U
int journal_remote_server_init(
RemoteServer *s,
const char *output,