mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
hw/uefi: fix error handling in uefi_vars_json_save
Catch lseek errors. Return on errors. Use autoptr for the GString to simplify cleanup. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-ID: <20250319141159.1461621-3-kraxel@redhat.com>
This commit is contained in:
parent
560429fd74
commit
ae24cf139b
1 changed files with 11 additions and 4 deletions
|
@ -178,7 +178,7 @@ void uefi_vars_json_init(uefi_vars_state *uv, Error **errp)
|
||||||
|
|
||||||
void uefi_vars_json_save(uefi_vars_state *uv)
|
void uefi_vars_json_save(uefi_vars_state *uv)
|
||||||
{
|
{
|
||||||
GString *gstr;
|
g_autoptr(GString) gstr = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (uv->jsonfd == -1) {
|
if (uv->jsonfd == -1) {
|
||||||
|
@ -187,18 +187,25 @@ void uefi_vars_json_save(uefi_vars_state *uv)
|
||||||
|
|
||||||
gstr = uefi_vars_to_json(uv);
|
gstr = uefi_vars_to_json(uv);
|
||||||
|
|
||||||
lseek(uv->jsonfd, 0, SEEK_SET);
|
rc = lseek(uv->jsonfd, 0, SEEK_SET);
|
||||||
|
if (rc < 0) {
|
||||||
|
warn_report("%s: lseek error", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rc = ftruncate(uv->jsonfd, 0);
|
rc = ftruncate(uv->jsonfd, 0);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
warn_report("%s: ftruncate error", __func__);
|
warn_report("%s: ftruncate error", __func__);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = write(uv->jsonfd, gstr->str, gstr->len);
|
rc = write(uv->jsonfd, gstr->str, gstr->len);
|
||||||
if (rc != gstr->len) {
|
if (rc != gstr->len) {
|
||||||
warn_report("%s: write error", __func__);
|
warn_report("%s: write error", __func__);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
fsync(uv->jsonfd);
|
|
||||||
|
|
||||||
g_string_free(gstr, true);
|
fsync(uv->jsonfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void uefi_vars_json_load(uefi_vars_state *uv, Error **errp)
|
void uefi_vars_json_load(uefi_vars_state *uv, Error **errp)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue