aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2022-05-05 15:00:12 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2022-05-05 15:00:12 +0200
commit2bee6f88f4754bc9317ff12334220e2bc6cfe5a2 (patch)
tree4842c9bb6e7005ae631d0e7dacdc7371447d5e39
parentdee7a241cc51d04702acab1bc2c28c43d809d729 (diff)
downloadgnunet-2bee6f88f4754bc9317ff12334220e2bc6cfe5a2.tar.gz
gnunet-2bee6f88f4754bc9317ff12334220e2bc6cfe5a2.zip
-fix unchecked remove calls in messenger ego store
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-rw-r--r--src/messenger/gnunet-service-messenger_ego_store.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/messenger/gnunet-service-messenger_ego_store.c b/src/messenger/gnunet-service-messenger_ego_store.c
index 8f40a924b..60a4d7bfc 100644
--- a/src/messenger/gnunet-service-messenger_ego_store.c
+++ b/src/messenger/gnunet-service-messenger_ego_store.c
@@ -200,13 +200,17 @@ bind_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
200{ 200{
201 GNUNET_assert ((store) && (identifier) && (handle)); 201 GNUNET_assert ((store) && (identifier) && (handle));
202 202
203 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store bind ego: %s\n", identifier);
204
203 struct GNUNET_HashCode hash; 205 struct GNUNET_HashCode hash;
204 GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash); 206 GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
205 207
206 if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_contains_value(store->handles, &hash, handle)) 208 if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_contains_value(store->handles, &hash, handle))
207 return; 209 return;
208 210
209 GNUNET_CONTAINER_multihashmap_put(store->handles, &hash, handle, GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 211 if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put(store->handles, &hash, handle,
212 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE))
213 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Putting handle binding to ego store failed!\n");
210} 214}
211 215
212void 216void
@@ -216,13 +220,16 @@ unbind_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
216{ 220{
217 GNUNET_assert ((store) && (identifier) && (handle)); 221 GNUNET_assert ((store) && (identifier) && (handle));
218 222
223 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store unbind ego: %s\n", identifier);
224
219 struct GNUNET_HashCode hash; 225 struct GNUNET_HashCode hash;
220 GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash); 226 GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
221 227
222 if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_contains_value(store->handles, &hash, handle)) 228 if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_contains_value(store->handles, &hash, handle))
223 return; 229 return;
224 230
225 GNUNET_CONTAINER_multihashmap_remove(store->handles, &hash, handle); 231 if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove(store->handles, &hash, handle))
232 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Removing handle binding from ego store failed!\n");
226} 233}
227 234
228static void 235static void
@@ -342,10 +349,13 @@ delete_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
342 return; 349 return;
343 } 350 }
344 351
345 GNUNET_CONTAINER_multihashmap_remove (store->egos, &hash, ego); 352 if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (store->egos, &hash, ego))
346 GNUNET_free(ego); 353 {
347 354 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Removing ego from store failed!\n");
355 return;
356 }
348 357
358 GNUNET_free(ego);
349} 359}
350 360
351static void 361static void