Check for NULL pointer returned from igvm_get_buffer().
Documentation for that function calls for that unconditionally.

Signed-off-by: Oliver Steffen <[email protected]>
---
 backends/igvm.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/backends/igvm.c b/backends/igvm.c
index a350c890cc..dc1fd026cb 100644
--- a/backends/igvm.c
+++ b/backends/igvm.c
@@ -170,9 +170,16 @@ static int qigvm_handler(QIgvm *ctx, uint32_t type, Error 
**errp)
                 (int)header_handle);
             return -1;
         }
-        header_data = igvm_get_buffer(ctx->file, header_handle) +
-                      sizeof(IGVM_VHS_VARIABLE_HEADER);
-        result = handlers[handler].handler(ctx, header_data, errp);
+        header_data = igvm_get_buffer(ctx->file, header_handle);
+        if (header_data == NULL) {
+            error_setg(
+                errp,
+                "IGVM: Failed to get directive header data (code: %d)",
+                (int)header_handle);
+            result = -1;
+        } else {
+            result = handlers[handler].handler(ctx, header_data + 
sizeof(IGVM_VHS_VARIABLE_HEADER), errp);
+        }
         igvm_free_buffer(ctx->file, header_handle);
         return result;
     }
-- 
2.52.0


Reply via email to