From: Karl Fleischmann Date: Thu, 24 Nov 2022 15:33:27 +0000 (+0100) Subject: doveadm/client-connection-http: Validate request boolean values X-Git-Tag: 2.4.0~3322 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70715d72fb741be51b6e03e958a54f88fc349636;p=thirdparty%2Fdovecot%2Fcore.git doveadm/client-connection-http: Validate request boolean values Only accept "true" and "false" as boolean payload values. --- diff --git a/src/doveadm/client-connection-http.c b/src/doveadm/client-connection-http.c index 06e93be598..ba00c014ef 100644 --- a/src/doveadm/client-connection-http.c +++ b/src/doveadm/client-connection-http.c @@ -513,7 +513,17 @@ request_json_parse_param_value(struct client_request_http *req) req->cmd_param->value_set = TRUE; switch(req->cmd_param->type) { case CMD_PARAM_BOOL: - req->cmd_param->value.v_bool = (strcmp(value, "true") == 0); + if (strcmp(value, "true") == 0) { + req->cmd_param->value.v_bool = TRUE; + } else if (strcmp(value, "false") == 0) { + req->cmd_param->value.v_bool = FALSE; + } else { + http_server_request_fail_text(http_sreq, + 400, "Bad Request", + "Parameter `%s' must be `true' or `false', not `%s'", + req->cmd_param->name, value); + return -1; + } break; case CMD_PARAM_INT64: if (str_to_int64(value, &req->cmd_param->value.v_int64) != 0) {