From: Gerd Hoffmann Date: Wed, 19 Mar 2025 14:11:55 +0000 (+0100) Subject: hw/uefi: fix error handling in uefi_vars_json_load X-Git-Tag: v10.0.0-rc1~4^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=761d0b5fb7e0f0a6a36c5fc449c6feda2b78af79;p=thirdparty%2Fqemu.git hw/uefi: fix error handling in uefi_vars_json_load Catch lseek errors. Return on read errors. Fixes: CID 1593154 Fixes: CID 1593157 Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Gerd Hoffmann Message-ID: <20250319141159.1461621-4-kraxel@redhat.com> --- diff --git a/hw/uefi/var-service-json.c b/hw/uefi/var-service-json.c index f1c20a6b8c..ad3462cd15 100644 --- a/hw/uefi/var-service-json.c +++ b/hw/uefi/var-service-json.c @@ -214,7 +214,7 @@ void uefi_vars_json_load(uefi_vars_state *uv, Error **errp) QObject *qobj; Visitor *v; char *str; - size_t len; + ssize_t len; int rc; if (uv->jsonfd == -1) { @@ -222,7 +222,12 @@ void uefi_vars_json_load(uefi_vars_state *uv, Error **errp) } len = lseek(uv->jsonfd, 0, SEEK_END); + if (len < 0) { + warn_report("%s: lseek error", __func__); + return; + } if (len == 0) { + /* empty file */ return; } @@ -231,6 +236,8 @@ void uefi_vars_json_load(uefi_vars_state *uv, Error **errp) rc = read(uv->jsonfd, str, len); if (rc != len) { warn_report("%s: read error", __func__); + g_free(str); + return; } str[len] = 0;