diff options
author | TheJackiMonster <thejackimonster@gmail.com> | 2022-05-05 15:00:12 +0200 |
---|---|---|
committer | TheJackiMonster <thejackimonster@gmail.com> | 2022-05-05 15:00:12 +0200 |
commit | 2bee6f88f4754bc9317ff12334220e2bc6cfe5a2 (patch) | |
tree | 4842c9bb6e7005ae631d0e7dacdc7371447d5e39 | |
parent | dee7a241cc51d04702acab1bc2c28c43d809d729 (diff) | |
download | gnunet-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.c | 20 |
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 | ||
212 | void | 216 | void |
@@ -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 | ||
228 | static void | 235 | static 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 | ||
351 | static void | 361 | static void |