The return value check after the tg_hash_new call must actually check the return value and not some other datastructure.
Fixes: a7bc3d9a2b3f ("alfred: Cache the global translation table entries") Signed-off-by: Sven Eckelmann sven@narfation.org --- server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server.c b/server.c index 1e358cf..9774281 100644 --- a/server.c +++ b/server.c @@ -232,7 +232,7 @@ static void update_server_info(struct globals *globals)
if (strcmp(globals->mesh_iface, "none") != 0) { tg_hash = tg_hash_new(globals->mesh_iface); - if (!globals->data_hash) { + if (!tg_hash) { fprintf(stderr, "Failed to create translation hash\n"); return; }
The initialization of the cache can be disabled when mesh interface is "none". We must therefore make sure that the remaining code is not accessing the uninitialized pointer to the originator cache.
Fixes: e50d18c39f92 ("alfred: Cache the TQ values for each originator") Signed-off-by: Sven Eckelmann sven@narfation.org --- server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server.c b/server.c index 9774281..e7f691c 100644 --- a/server.c +++ b/server.c @@ -224,7 +224,7 @@ static void update_server_info(struct globals *globals) struct interface *interface; struct ether_addr *macaddr; struct hashtable_t *tg_hash; - struct hashtable_t *orig_hash; + struct hashtable_t *orig_hash = NULL;
/* TQ is not used for master sync mode */ if (globals->opmode == OPMODE_MASTER)
The initialization of the cache can be disabled when mesh interface is "none". We must therefore make sure that the remaining code is not accessing the uninitialized pointer to the translation cache.
Fixes: a7bc3d9a2b3f ("alfred: Cache the global translation table entries") Signed-off-by: Sven Eckelmann sven@narfation.org --- server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server.c b/server.c index e7f691c..b6f0812 100644 --- a/server.c +++ b/server.c @@ -223,7 +223,7 @@ static void update_server_info(struct globals *globals) struct hash_it_t *hashit = NULL; struct interface *interface; struct ether_addr *macaddr; - struct hashtable_t *tg_hash; + struct hashtable_t *tg_hash = NULL; struct hashtable_t *orig_hash = NULL;
/* TQ is not used for master sync mode */
Thanks a lot for fixing that thing I missed and the initialization problems. I guess this also takes of the covery splats. I've picked all patches as they are.
Thanks, Simon
On Thursday, June 1, 2017 8:26:30 AM CEST Sven Eckelmann wrote:
The return value check after the tg_hash_new call must actually check the return value and not some other datastructure.
Fixes: a7bc3d9a2b3f ("alfred: Cache the global translation table entries") Signed-off-by: Sven Eckelmann sven@narfation.org
server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server.c b/server.c index 1e358cf..9774281 100644 --- a/server.c +++ b/server.c @@ -232,7 +232,7 @@ static void update_server_info(struct globals *globals)
if (strcmp(globals->mesh_iface, "none") != 0) { tg_hash = tg_hash_new(globals->mesh_iface);
if (!globals->data_hash) {
}if (!tg_hash) { fprintf(stderr, "Failed to create translation hash\n"); return;
b.a.t.m.a.n@lists.open-mesh.org