From 3a0f519f542b4fab1fdfeb93bc5cf871dddc7ef5 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 23 Jan 2019 11:37:42 -0800 Subject: [PATCH] Fixed bug, where if Duktape_GetContextGuidHex() returned non-NULL, an attempt to modify immutable memory was attempted --- microscript/ILibDuktape_SimpleDataStore.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/microscript/ILibDuktape_SimpleDataStore.c b/microscript/ILibDuktape_SimpleDataStore.c index 5c95a99..42d7ab8 100644 --- a/microscript/ILibDuktape_SimpleDataStore.c +++ b/microscript/ILibDuktape_SimpleDataStore.c @@ -167,8 +167,11 @@ duk_ret_t ILibDuktape_SimpleDataStore_Keys(duk_context *ctx) if (enumerator.GuidHex != NULL) { enumerator.GuidHexLen = 1 + (int)strnlen_s(enumerator.GuidHex, sizeof(ILibScratchPad)); - enumerator.GuidHex[enumerator.GuidHexLen - 1] = '/'; - enumerator.GuidHex[enumerator.GuidHexLen] = 0; + char *tmp = Duktape_PushBuffer(ctx, enumerator.GuidHexLen + 1); + memcpy_s(tmp, ILibMemory_Size(tmp), enumerator.GuidHex, enumerator.GuidHexLen - 1); + tmp[enumerator.GuidHexLen - 1] = '/'; + tmp[enumerator.GuidHexLen] = 0; + enumerator.GuidHex = tmp; } duk_push_array(ctx); // [DataStore][ptr][retVal]