Skip to content

Commit 761d0b5

Browse files
committed
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é <[email protected]> Signed-off-by: Gerd Hoffmann <[email protected]> Message-ID: <[email protected]>
1 parent ae24cf1 commit 761d0b5

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

hw/uefi/var-service-json.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,15 +214,20 @@ void uefi_vars_json_load(uefi_vars_state *uv, Error **errp)
214214
QObject *qobj;
215215
Visitor *v;
216216
char *str;
217-
size_t len;
217+
ssize_t len;
218218
int rc;
219219

220220
if (uv->jsonfd == -1) {
221221
return;
222222
}
223223

224224
len = lseek(uv->jsonfd, 0, SEEK_END);
225+
if (len < 0) {
226+
warn_report("%s: lseek error", __func__);
227+
return;
228+
}
225229
if (len == 0) {
230+
/* empty file */
226231
return;
227232
}
228233

@@ -231,6 +236,8 @@ void uefi_vars_json_load(uefi_vars_state *uv, Error **errp)
231236
rc = read(uv->jsonfd, str, len);
232237
if (rc != len) {
233238
warn_report("%s: read error", __func__);
239+
g_free(str);
240+
return;
234241
}
235242
str[len] = 0;
236243

0 commit comments

Comments
 (0)