From 62767bfaf7f7fb988b826da797463545db14b3b5 Mon Sep 17 00:00:00 2001
From: MikalaiR <nikolay.romanovich@narod.ru>
Date: Sun, 31 Jan 2016 10:20:43 +0000
Subject: MirLua: fix memory corruptions

git-svn-id: http://svn.miranda-ng.org/main/trunk@16201 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 plugins/MirLua/src/m_database.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/plugins/MirLua/src/m_database.cpp b/plugins/MirLua/src/m_database.cpp
index de1d0e1006..a8cb78f435 100644
--- a/plugins/MirLua/src/m_database.cpp
+++ b/plugins/MirLua/src/m_database.cpp
@@ -183,7 +183,7 @@ static int array__call(lua_State *L)
 	BLOB *blob = (BLOB*)lua_newuserdata(L, sizeof(BLOB));
 	blob->cbSize = size;
 	blob->pBlobData = (BYTE*)mir_alloc(sizeof(BYTE) * blob->cbSize);
-	memcpy(blob->pBlobData, udata, sizeof(BYTE));
+	memcpy(blob->pBlobData, udata, sizeof(BYTE)* blob->cbSize);
 	luaL_setmetatable(L, MT_BLOB);
 
 	return 1;
@@ -194,7 +194,7 @@ static int array__index(lua_State *L)
 	BLOB *blob = (BLOB*)luaL_checkudata(L, 1, MT_BLOB);
 	int idx = luaL_checkinteger(L, 2);
 
-	lua_pushinteger(L, (char)&blob->pBlobData[idx - 1]);
+	lua_pushinteger(L, (uint8_t)blob->pBlobData[idx - 1]);
 
 	return 1;
 }
@@ -203,7 +203,7 @@ static int array__newindex(lua_State *L)
 {
 	BLOB *blob = (BLOB*)luaL_checkudata(L, 1, MT_BLOB);
 	int idx = luaL_checkinteger(L, 2);
-	char val = (char)luaL_checkinteger(L, 3);
+	uint8_t val = (uint8_t)luaL_checkinteger(L, 3);
 
 	blob->pBlobData[idx - 1] = val;
 
@@ -223,7 +223,7 @@ static int array__tostring(lua_State *L)
 {
 	BLOB *blob = (BLOB*)luaL_checkudata(L, 1, MT_BLOB);
 
-	ptrA res((char*)mir_alloc(blob->cbSize * 2 + 1));
+	char *res = (char*)alloca(blob->cbSize * 2 + 1);
 	bin2hex(blob->pBlobData, blob->cbSize, res);
 
 	lua_pushstring(L, res);
@@ -292,7 +292,7 @@ static int lua_GetSetting(lua_State *L)
 			BLOB *blob = (BLOB*)lua_newuserdata(L, sizeof(BLOB));
 			blob->cbSize = dbv.cpbVal;
 			blob->pBlobData = (BYTE*)mir_alloc(sizeof(BYTE) * blob->cbSize);
-			memcpy(blob->pBlobData, dbv.pbVal, sizeof(BYTE));
+			memcpy(blob->pBlobData, dbv.pbVal, sizeof(BYTE) * blob->cbSize);
 			luaL_setmetatable(L, MT_BLOB);
 		}
 		break;
@@ -543,7 +543,7 @@ static int dbcw__index(lua_State *L)
 			BLOB *blob = (BLOB*)lua_newuserdata(L, sizeof(BLOB));
 			blob->cbSize = dbcw->value.cpbVal;
 			blob->pBlobData = (BYTE*)mir_alloc(sizeof(BYTE) * blob->cbSize);
-			memcpy(blob->pBlobData, dbcw->value.pbVal, sizeof(BYTE));
+			memcpy(blob->pBlobData, dbcw->value.pbVal, sizeof(BYTE) * blob->cbSize);
 			luaL_setmetatable(L, MT_BLOB);
 		}
 			break;
-- 
cgit v1.2.3