summaryrefslogtreecommitdiffstats
path: root/CryptoPkg/Library
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2016-02-24 21:00:04 +0100
committerLaszlo Ersek <lersek@redhat.com>2016-02-25 11:04:28 +0100
commit1246dde58e8a84644ad46679b8767f8643818e31 (patch)
tree36fe382b3ae0d3f10a7cbcff0a244c17057b980e /CryptoPkg/Library
parent211372d63a82861e52250c0f7a5ee78d9dc417ae (diff)
downloadedk2-1246dde58e8a84644ad46679b8767f8643818e31.tar.gz
edk2-1246dde58e8a84644ad46679b8767f8643818e31.tar.bz2
edk2-1246dde58e8a84644ad46679b8767f8643818e31.zip
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 <dwmw2@infradead.org> Cc: Qin Long <qin.long@intel.com> Cc: Ting Ye <ting.ye@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Qin Long <qin.long@intel.com>
Diffstat (limited to 'CryptoPkg/Library')
-rw-r--r--CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c8
1 files changed, 7 insertions, 1 deletions
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);
+ }
}