From 78ad970a2cbe47b343146915d91408a276fd5c04 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 26 Jan 2016 22:08:49 +0000 Subject: MDB_VL32 Fix d2a5f72f73e0e4030b521086b13b8c8efaf9ca9e VirtualAlloc is not for MDB_VL32 --- external/db_drivers/liblmdb/mdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'external') diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 4c9e22388..5efd74091 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -2428,7 +2428,7 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp) rc = MDB_MAP_FULL; goto fail; } -#ifdef _WIN32 +#if defined(_WIN32) && !defined(MDB_VL32) if (!(env->me_flags & MDB_RDONLY)) { void *p; p = (MDB_page *)(env->me_map + env->me_psize * pgno); -- cgit v1.2.3 From 3ca6e853f6206c851485f2d44bc68694d13a8b60 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 27 Jan 2016 01:53:29 +0000 Subject: Tweak mdb_strerror msg buffer --- external/db_drivers/liblmdb/mdb.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'external') diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 5efd74091..2ce2614f6 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -1572,8 +1572,9 @@ mdb_strerror(int err) * This works as long as no function between the call to mdb_strerror * and the actual use of the message uses more than 4K of stack. */ - char pad[4096]; - char buf[1024], *ptr = buf; +#define MSGSIZE 1024 +#define PADSIZE 4096 + char buf[MSGSIZE+PADSIZE], *ptr = buf; #endif int i; if (!err) @@ -1605,7 +1606,7 @@ mdb_strerror(int err) buf[0] = 0; FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, err, 0, ptr, sizeof(buf), (va_list *)pad); + NULL, err, 0, ptr, MSGSIZE, (va_list *)buf+MSGSIZE); return ptr; #else return strerror(err); -- cgit v1.2.3 From 222e30ec976440d04d4280bc4f4a1105bf11b807 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 27 Jan 2016 11:46:13 +0000 Subject: MDB_VL32 Fix another 32bit overflow --- external/db_drivers/liblmdb/mdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'external') diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 2ce2614f6..d524d3523 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -4273,7 +4273,7 @@ mdb_env_set_mapsize(MDB_env *env, mdb_size_t size) size = meta->mm_mapsize; { /* Silently round up to minimum if the size is too small */ - size_t minsize = (meta->mm_last_pg + 1) * env->me_psize; + mdb_size_t minsize = (meta->mm_last_pg + 1) * env->me_psize; if (size < minsize) size = minsize; } -- cgit v1.2.3 From 7e65cc0abac60177b3e873808510e87ec5a273d1 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 28 Jan 2016 04:15:45 +0000 Subject: MDB_VL32 Fix off-by-one in mdb_midl_shrink --- external/db_drivers/liblmdb/midl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'external') diff --git a/external/db_drivers/liblmdb/midl.c b/external/db_drivers/liblmdb/midl.c index e2005d16c..152a1ec0d 100644 --- a/external/db_drivers/liblmdb/midl.c +++ b/external/db_drivers/liblmdb/midl.c @@ -120,7 +120,7 @@ void mdb_midl_shrink( MDB_IDL *idp ) { MDB_IDL ids = *idp; if (*(--ids) > MDB_IDL_UM_MAX && - (ids = realloc(ids, (MDB_IDL_UM_MAX+1) * sizeof(MDB_ID)))) + (ids = realloc(ids, (MDB_IDL_UM_MAX+2) * sizeof(MDB_ID)))) { *ids++ = MDB_IDL_UM_MAX; *idp = ids; -- cgit v1.2.3