(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) {
+ header_data += sizeof(IGVM_VHS_VARIABLE_HEADER);
+ result = handlers[handler].handler(ctx, header_data, errp);
+ } else {
+ error_setg(errp,
+ "IGVM: No buffer for handle %d: "
+ "(type 0x%X)",
+ header_handle, type);
+ result = -1;
+ }
igvm_free_buffer(ctx->file, header_handle);
return result;
}
return -1;
}
data = igvm_get_buffer(ctx->file, data_handle);
+ if (data == NULL) {
+ error_setg(errp, "IGVM: No buffer for handle %d", data_handle);
+ igvm_free_buffer(ctx->file, data_handle);
+ return -1;
+ }
memcpy(®ion[page_index * page_size], data, data_size);
igvm_free_buffer(ctx->file, data_handle);
}
}
data = (uint8_t *)igvm_get_buffer(ctx->file, data_handle);
+ if (data == NULL) {
+ error_setg(errp, "IGVM: No buffer for handle %d", data_handle);
+ result = -1;
+ goto exit;
+ }
if (ctx->machine_state->cgs) {
result = ctx->cgsc->set_guest_state(
result = -1;
}
+exit:
igvm_free_buffer(ctx->file, data_handle);
if (result < 0) {
return result;
}
platform =
(IGVM_VHS_SUPPORTED_PLATFORM *)(igvm_get_buffer(ctx->file,
- header_handle) +
- sizeof(
- IGVM_VHS_VARIABLE_HEADER));
+ header_handle));
+ if (platform == NULL) {
+ error_setg(errp, "IGVM: No buffer for handle %d", header_handle);
+ igvm_free_buffer(ctx->file, header_handle);
+ return -1;
+ }
+
+ platform = (IGVM_VHS_SUPPORTED_PLATFORM *)((void *)platform
+ + sizeof(IGVM_VHS_VARIABLE_HEADER));
if ((platform->platform_type == IGVM_PLATFORM_TYPE_SEV_ES) &&
ctx->machine_state->cgs) {
if (ctx->cgsc->check_support(