5
0
mirror of git://git.proxmox.com/git/pve-qemu.git synced 2025-01-19 14:04:11 +03:00

fix #4726: avoid superfluous check in vma code

The 'status' pointer is dereferenced regardless of the NULL check,
i.e. 'status->closed' is accessed after the branch with the check.
Since all callers pass in the address of a struct on the stack, the
pointer can never be NULL. Remove the superfluous check and add an
assert instead.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fiona Ebner 2024-06-14 13:00:42 +02:00
parent 5bdf1bebba
commit c2abb73df7

View File

@ -16,10 +16,10 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
block/meson.build | 2 + block/meson.build | 2 +
meson.build | 5 + meson.build | 5 +
vma-reader.c | 870 ++++++++++++++++++++++++++++++++++++++++++++ vma-reader.c | 870 ++++++++++++++++++++++++++++++++++++++++++++
vma-writer.c | 818 +++++++++++++++++++++++++++++++++++++++++ vma-writer.c | 817 +++++++++++++++++++++++++++++++++++++++++
vma.c | 901 ++++++++++++++++++++++++++++++++++++++++++++++ vma.c | 901 ++++++++++++++++++++++++++++++++++++++++++++++
vma.h | 150 ++++++++ vma.h | 150 ++++++++
6 files changed, 2746 insertions(+) 6 files changed, 2745 insertions(+)
create mode 100644 vma-reader.c create mode 100644 vma-reader.c
create mode 100644 vma-writer.c create mode 100644 vma-writer.c
create mode 100644 vma.c create mode 100644 vma.c
@ -939,10 +939,10 @@ index 0000000000..d0b6721812
+ +
diff --git a/vma-writer.c b/vma-writer.c diff --git a/vma-writer.c b/vma-writer.c
new file mode 100644 new file mode 100644
index 0000000000..126b296647 index 0000000000..a466652a5d
--- /dev/null --- /dev/null
+++ b/vma-writer.c +++ b/vma-writer.c
@@ -0,0 +1,818 @@ @@ -0,0 +1,817 @@
+/* +/*
+ * VMA: Virtual Machine Archive + * VMA: Virtual Machine Archive
+ * + *
@ -1517,17 +1517,16 @@ index 0000000000..126b296647
+ int i; + int i;
+ +
+ g_assert(vmaw != NULL); + g_assert(vmaw != NULL);
+ g_assert(status != NULL);
+ +
+ if (status) { + status->status = vmaw->status;
+ status->status = vmaw->status; + g_strlcpy(status->errmsg, vmaw->errmsg, sizeof(status->errmsg));
+ g_strlcpy(status->errmsg, vmaw->errmsg, sizeof(status->errmsg)); + for (i = 0; i <= 255; i++) {
+ for (i = 0; i <= 255; i++) { + status->stream_info[i] = vmaw->stream_info[i];
+ status->stream_info[i] = vmaw->stream_info[i];
+ }
+
+ uuid_unparse_lower(vmaw->uuid, status->uuid_str);
+ } + }
+ +
+ uuid_unparse_lower(vmaw->uuid, status->uuid_str);
+
+ status->closed = vmaw->closed; + status->closed = vmaw->closed;
+ +
+ return vmaw->status; + return vmaw->status;