|
10 | 10 | #include "liblmdb/lmdb.h" |
11 | 11 | #include "mylog.h" |
12 | 12 |
|
| 13 | +#define SUBDB_NAME_SZ 64 |
| 14 | + |
13 | 15 | #define CHECK(expr, label) \ |
14 | 16 | if (MDB_SUCCESS != (ret = (expr))) { \ |
15 | 17 | ERR_LOG("CHECK(\"%s\") failed \"%s(%d)\" at %s:%d in %s()\n", \ |
@@ -132,7 +134,7 @@ static void unload(ErlNifEnv* env, void* priv_data) { |
132 | 134 | } |
133 | 135 |
|
134 | 136 | static ERL_NIF_TERM elmdb_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { |
135 | | - char dirname[128]; |
| 137 | + char dirname[128] = {0}; |
136 | 138 | if (!enif_get_string(env, argv[0], dirname, sizeof(dirname), ERL_NIF_LATIN1)) { |
137 | 139 | return enif_make_badarg(env); |
138 | 140 | } |
@@ -230,7 +232,7 @@ static ERL_NIF_TERM elmdb_drop(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv |
230 | 232 | if (!enif_inspect_iolist_as_binary(env, argv[1], &layBin)) { |
231 | 233 | return enif_make_badarg(env); |
232 | 234 | } |
233 | | - char dbname[128] = {0}; |
| 235 | + char dbname[SUBDB_NAME_SZ] = {0}; |
234 | 236 | memcpy(dbname, layBin.data, layBin.size); |
235 | 237 |
|
236 | 238 | enif_rwlock_rlock(handle->layers_rwlock); |
@@ -292,7 +294,7 @@ static ERL_NIF_TERM elmdb_put(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[ |
292 | 294 | CHECK(mdb_txn_begin(handle->env, NULL, 0, &txn), err1); |
293 | 295 |
|
294 | 296 | MDB_dbi dbi; |
295 | | - char dbname[128] = {0}; |
| 297 | + char dbname[SUBDB_NAME_SZ] = {0}; |
296 | 298 | memcpy(dbname, layBin.data, layBin.size); |
297 | 299 |
|
298 | 300 | enif_rwlock_rwlock(handle->layers_rwlock); |
@@ -347,7 +349,7 @@ static ERL_NIF_TERM elmdb_get(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[ |
347 | 349 | return enif_make_badarg(env); |
348 | 350 | } |
349 | 351 |
|
350 | | - char dbname[128] = {0}; |
| 352 | + char dbname[SUBDB_NAME_SZ] = {0}; |
351 | 353 | memcpy(dbname, layBin.data, layBin.size); |
352 | 354 | enif_rwlock_rlock(handle->layers_rwlock); |
353 | 355 | bool exist = (kh_get(layer,handle->layers, dbname) != kh_end(handle->layers)); |
@@ -403,7 +405,7 @@ static ERL_NIF_TERM elmdb_del(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[ |
403 | 405 | return enif_make_badarg(env); |
404 | 406 | } |
405 | 407 |
|
406 | | - char dbname[128] = {0}; |
| 408 | + char dbname[SUBDB_NAME_SZ] = {0}; |
407 | 409 | memcpy(dbname, layBin.data, layBin.size); |
408 | 410 | enif_rwlock_rlock(handle->layers_rwlock); |
409 | 411 | bool exist = (kh_get(layer,handle->layers, dbname) != kh_end(handle->layers)); |
@@ -466,7 +468,7 @@ static ERL_NIF_TERM elmdb_to_map(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar |
466 | 468 | if (!enif_inspect_iolist_as_binary(env, argv[1], &layBin)) { |
467 | 469 | return enif_make_badarg(env); |
468 | 470 | } |
469 | | - char dbname[128] = {0}; |
| 471 | + char dbname[SUBDB_NAME_SZ] = {0}; |
470 | 472 | memcpy(dbname, layBin.data, layBin.size); |
471 | 473 |
|
472 | 474 | enif_rwlock_rlock(handle->layers_rwlock); |
|
0 commit comments