fixed use after free and several printf warnings
authorCarlo von lynX <lynX@time.to.get.psyced.org>
Thu, 28 Jul 2016 23:36:38 +0000 (23:36 +0000)
committerCarlo von lynX <lynX@time.to.get.psyced.org>
Thu, 28 Jul 2016 23:36:38 +0000 (23:36 +0000)
src/multicast/multicast_api.c
src/psyc/gnunet-service-psyc.c
src/psyc/test_psyc.c
src/psycstore/test_psycstore.c

index 75b2d885208c1cc0695a2d627c5ac99e371d5ebc..f5c8c3d34b13c85402ce65c3ab0f9641d255525b 100644 (file)
@@ -1124,7 +1124,8 @@ GNUNET_MULTICAST_member_replay_fragment (struct GNUNET_MULTICAST_Member *mem,
                                          uint64_t flags)
 {
   member_replay_request (mem, fragment_id, 0, 0, flags);
-  // FIXME: return
+  // FIXME: return something useful
+  return NULL;
 }
 
 
@@ -1153,7 +1154,8 @@ GNUNET_MULTICAST_member_replay_message (struct GNUNET_MULTICAST_Member *mem,
                                         uint64_t flags)
 {
   member_replay_request (mem, 0, message_id, fragment_offset, flags);
-  // FIXME: return
+  // FIXME: return something useful
+  return NULL;
 }
 
 
index 792164b95e3dbc6088a95ae46ae3147e372220d4..9106e87313739ad26f59a900fc5204604b9531ea 100644 (file)
@@ -856,18 +856,23 @@ store_recv_fragment_replay_result (void *cls, int64_t result,
   case GNUNET_NO:
     GNUNET_MULTICAST_replay_response (rh, NULL,
                                       GNUNET_MULTICAST_REC_NOT_FOUND);
-    break;
+    return;
 
   case GNUNET_PSYCSTORE_MEMBERSHIP_TEST_FAILED:
     GNUNET_MULTICAST_replay_response (rh, NULL,
                                       GNUNET_MULTICAST_REC_ACCESS_DENIED);
-    break;
+    return;
 
   case GNUNET_SYSERR:
     GNUNET_MULTICAST_replay_response (rh, NULL,
                                       GNUNET_MULTICAST_REC_INTERNAL_ERROR);
     return;
   }
+  /* GNUNET_MULTICAST_replay_response frees 'rh' when passed
+   * an error code, so it must be ensured no further processing
+   * is attempted on 'rh'. Maybe this should be refactored as
+   * it doesn't look very intuitive.   --lynX
+   */
   GNUNET_MULTICAST_replay_response_end (rh);
 }
 
@@ -2269,6 +2274,9 @@ client_recv_psyc_message (void *cls, struct GNUNET_SERVER_Client *client,
   uint16_t size = ntohs (msg->size);
   if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < size - sizeof (*msg))
   {
+    /* Coverity says this printf has incompatible args
+     * but I don't see anything wrong with it.. FIXME
+     */
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "%p Message payload too large: %u < %u.\n",
                 chn,
index 9797a96b5a4aac10100c7b3ba3688da503d876c3..329ad5b25f1484899939d5f8d9d8392d8908ec97 100644 (file)
@@ -350,7 +350,7 @@ slave_state_get_prefix_result (void *cls, int64_t result,
                                const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_state_get_prefix:\t%" PRId64 " (%.s)\n",
+              "slave_state_get_prefix:\t%" PRId64 " (%.*s)\n",
               result,
               (int) err_msg_size,
               (const char *) err_msg);
@@ -376,7 +376,7 @@ master_state_get_prefix_result (void *cls, int64_t result,
                                 const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "master_state_get_prefix:\t%" PRId64 " (%s)\n", result, err_msg);
+              "master_state_get_prefix:\t%" PRId64 " (%s)\n", result, (char *) err_msg);
   // FIXME: GNUNET_assert (2 == result);
   slave_state_get_prefix ();
 }
@@ -400,7 +400,7 @@ slave_state_get_result (void *cls, int64_t result,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "slave_state_get:\t%" PRId64 " (%.*s)\n",
-              result, err_msg_size, err_msg);
+              result, err_msg_size, (char *) err_msg);
   // FIXME: GNUNET_assert (2 == result);
   master_state_get_prefix ();
 }
@@ -424,7 +424,7 @@ master_state_get_result (void *cls, int64_t result,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "master_state_get:\t%" PRId64 " (%.*s)\n",
-              result, err_msg_size, err_msg);
+              result, err_msg_size, (char *) err_msg);
   // FIXME: GNUNET_assert (1 == result);
   slave_state_get ();
 }
@@ -538,7 +538,7 @@ master_history_replay_latest_result (void *cls, int64_t result,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "master_history_replay_latest:\t%" PRId64 " (%.*s)\n",
-              result, err_msg_size, err_msg);
+              result, err_msg_size, (char *) err_msg);
   GNUNET_assert (9 == result);
 
   slave_history_replay_latest ();
@@ -619,7 +619,7 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
 {
   struct TransmitClosure *tmit = cls;
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Test #%d: Transmit notify modifier: %lu bytes available, "
+              "Test #%d: Transmit notify modifier: %u bytes available, "
               "%u modifiers left to process.\n",
               test, *data_size, GNUNET_PSYC_env_get_count (tmit->env));
 
@@ -723,7 +723,7 @@ slave_remove_cb (void *cls, int64_t result,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "slave_remove:\t%" PRId64 " (%.*s)\n",
-              result, err_msg_size, err_msg);
+              result, err_msg_size, (char *) err_msg);
 
   slave_transmit ();
 }
@@ -745,7 +745,7 @@ slave_add_cb (void *cls, int64_t result,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "slave_add:\t%" PRId64 " (%.*s)\n",
-              result, err_msg_size, err_msg);
+              result, err_msg_size, (char *) err_msg);
   slave_remove ();
 }
 
@@ -837,7 +837,7 @@ static void
 slave_join (int t)
 {
   test = t;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test #%d: Joining slave.\n");
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test #%d: Joining slave.\n", t);
 
   struct GNUNET_PeerIdentity origin = this_peer;
   struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
index f9a7ce9cac88dd68de1bf402e14e8ab651f5d285..6741858ee833ac60f3a82753f719c64c1956d518 100644 (file)
@@ -195,7 +195,7 @@ state_result (void *cls,
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "  variable %s differs\nReceived: %.*s\nExpected: %.*s\n",
-                name, value_size, value, val_size, val);
+                name, value_size, (char*) value, val_size, (char*) val);
     GNUNET_assert (0);
     return GNUNET_SYSERR;
   }
@@ -208,7 +208,7 @@ state_get_prefix_result (void *cls, int64_t result,
 {
   struct StateClosure *scls = cls;
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_prefix_result:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_prefix_result:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result && 2 == scls->n);
 
   op = GNUNET_PSYCSTORE_state_reset (h, &channel_pub_key,
@@ -221,7 +221,7 @@ state_get_result (void *cls, int64_t result,
                   const char *err_msg, uint16_t err_msg_size)
 {
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_result:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_result:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result);
 
   scls.n = 0;
@@ -274,7 +274,7 @@ state_modify_result (void *cls, int64_t result,
                      const char *err_msg, uint16_t err_msg_size)
 {
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_modify_result:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_modify_result:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result);
 
   op = GNUNET_PSYCSTORE_counters_get (h, &channel_pub_key,
@@ -288,7 +288,7 @@ state_sync_result (void *cls, int64_t result,
 {
   struct FragmentClosure *fcls = cls;
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_sync_result:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_sync_result:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result);
 
   op = GNUNET_PSYCSTORE_state_modify (h, &channel_pub_key,
@@ -332,7 +332,7 @@ message_get_latest_result (void *cls, int64_t result,
 {
   struct FragmentClosure *fcls = cls;
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_latest:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_latest:\t%ld\n", (long int) result);
   GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
 
   modifiers[0] = (struct GNUNET_PSYC_Modifier) {
@@ -361,7 +361,7 @@ message_get_result (void *cls, int64_t result,
 {
   struct FragmentClosure *fcls = cls;
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get:\t%ld\n", (long int) result);
   GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
 
   fcls->n = 0;
@@ -378,7 +378,7 @@ message_get_fragment_result (void *cls, int64_t result,
 {
   struct FragmentClosure *fcls = cls;
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_fragment:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_fragment:\t%ld\n", (long int) result);
   GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
 
   fcls->n = 0;
@@ -397,7 +397,7 @@ fragment_get_latest_result (void *cls, int64_t result,
 {
   struct FragmentClosure *fcls = cls;
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_get_latest:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_get_latest:\t%ld\n", (long int) result);
   GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
 
   fcls->n = 1;
@@ -435,7 +435,7 @@ fragment_store_result (void *cls, int64_t result,
                        const char *err_msg, uint16_t err_msg_size)
 {
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_store:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_store:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result);
 
   if ((intptr_t) cls == GNUNET_YES)
@@ -507,7 +507,7 @@ membership_test_result (void *cls, int64_t result,
                         const char *err_msg, uint16_t err_msg_size)
 {
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_test:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_test:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result);
 
   fragment_store ();
@@ -519,7 +519,7 @@ membership_store_result (void *cls, int64_t result,
                          const char *err_msg, uint16_t err_msg_size)
 {
   op = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_store:\t%d\n", result);
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_store:\t%ld\n", (long int) result);
   GNUNET_assert (GNUNET_OK == result);
 
   op = GNUNET_PSYCSTORE_membership_test (h, &channel_pub_key, &slave_pub_key,