From 1246dde58e8a84644ad46679b8767f8643818e31 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Wed, 24 Feb 2016 21:00:04 +0100 Subject: [PATCH] CryptoPkg: RuntimeCryptLib: support free(NULL) The ISO C standard says about free(), If ptr is a null pointer, no action occurs. This is not true of the RuntimeFreeMem() internal function. Therefore we must not forward the argument of free() to RuntimeFreeMem() without checking. Cc: David Woodhouse Cc: Qin Long Cc: Ting Ye Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Qin Long --- .../Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c b/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c index 616ee7717e..45ef9ff5f2 100644 --- a/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c +++ b/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c @@ -434,5 +434,11 @@ void *realloc (void *ptr, size_t size) /* Deallocates or frees a memory block */ void free (void *ptr) { - RuntimeFreeMem (ptr); + // + // In Standard C, free() handles a null pointer argument transparently. This + // is not true of RuntimeFreeMem() below, so protect it. + // + if (ptr != NULL) { + RuntimeFreeMem (ptr); + } } -- 2.39.2