--- /dev/null
+/** @file\r
+\r
+ Module to rewrite stdlib references within Oniguruma\r
+\r
+ (C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP<BR>\r
+ Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>\r
+\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+**/\r
+#include "OnigurumaUefiPort.h"\r
+\r
+#define ONIGMEM_HEAD_SIGNATURE SIGNATURE_32('o','m','h','d')\r
+\r
+typedef struct {\r
+ UINT32 Signature;\r
+ UINTN Size;\r
+} ONIGMEM_HEAD;\r
+\r
+#define ONIGMEM_OVERHEAD sizeof(ONIGMEM_HEAD)\r
+\r
+int EFIAPI sprintf_s(char *str, size_t sizeOfBuffer, char const *fmt, ...)\r
+{\r
+ VA_LIST Marker;\r
+ int NumberOfPrinted;\r
+\r
+ VA_START (Marker, fmt);\r
+ NumberOfPrinted = (int)AsciiVSPrint (str, sizeOfBuffer, fmt, Marker);\r
+ VA_END (Marker);\r
+\r
+ return NumberOfPrinted;\r
+}\r
+\r
+int OnigStrCmp (const char* Str1, const char* Str2)\r
+{\r
+ return (int)AsciiStrCmp (Str1, Str2);\r
+}\r
+\r
+int strlen(const char* str)\r
+{\r
+ return strlen_s(str, MAX_STRING_SIZE);\r
+}\r
+\r
+void * malloc (size_t size)\r
+{\r
+ ONIGMEM_HEAD *PoolHdr;\r
+ UINTN NewSize;\r
+ VOID *Data;\r
+\r
+ NewSize = (UINTN)(size) + ONIGMEM_OVERHEAD;\r
+\r
+ Data = AllocatePool (NewSize);\r
+ if (Data != NULL) {\r
+ PoolHdr = (ONIGMEM_HEAD *)Data;\r
+ PoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;\r
+ PoolHdr->Size = size;\r
+\r
+ return (VOID *)(PoolHdr + 1);\r
+ }\r
+ return NULL;\r
+}\r
+\r
+void * realloc (void *ptr, size_t size)\r
+{\r
+ ONIGMEM_HEAD *OldPoolHdr;\r
+ ONIGMEM_HEAD *NewPoolHdr;\r
+ UINTN OldSize;\r
+ UINTN NewSize;\r
+ VOID *Data;\r
+\r
+ NewSize = (UINTN)size + ONIGMEM_OVERHEAD;\r
+ Data = AllocatePool (NewSize);\r
+ if (Data != NULL) {\r
+ NewPoolHdr = (ONIGMEM_HEAD *)Data;\r
+ NewPoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;\r
+ NewPoolHdr->Size = size;\r
+ if (ptr != NULL) {\r
+ OldPoolHdr = (ONIGMEM_HEAD *)ptr - 1;\r
+ ASSERT (OldPoolHdr->Signature == ONIGMEM_HEAD_SIGNATURE);\r
+ OldSize = OldPoolHdr->Size;\r
+\r
+ CopyMem ((VOID *)(NewPoolHdr + 1), ptr, MIN (OldSize, size));\r
+ FreePool ((VOID *)OldPoolHdr);\r
+ }\r
+ return (VOID *)(NewPoolHdr + 1);\r
+ }\r
+ return NULL;\r
+}\r
+\r