From 7184dd482eb903fd3256efb387934f94c93d9059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Thu, 4 Jul 2019 12:18:54 +0200 Subject: [PATCH] helpers: Report internal error for failing buffer allocation --- include/evmc/helpers.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/include/evmc/helpers.h b/include/evmc/helpers.h index bee2e7ece..1c3d5c57d 100644 --- a/include/evmc/helpers.h +++ b/include/evmc/helpers.h @@ -135,16 +135,25 @@ static inline struct evmc_result evmc_make_result(enum evmc_status_code status_c { struct evmc_result result; memset(&result, 0, sizeof(result)); - result.status_code = status_code; - result.gas_left = gas_left; - result.output_size = output_size; + if (output_size != 0) { uint8_t* buffer = (uint8_t*)malloc(output_size); + + if (!buffer) + { + result.status_code = EVMC_OUT_OF_MEMORY; + return result; + } + memcpy(buffer, output_data, output_size); result.output_data = buffer; + result.output_size = output_size; result.release = evmc_free_result_memory; } + + result.status_code = status_code; + result.gas_left = gas_left; return result; }