aboutsummaryrefslogtreecommitdiff
path: root/src/psyc
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-07-08 17:20:23 +0000
committerChristian Grothoff <christian@grothoff.org>2016-07-08 17:20:23 +0000
commitd8c53b12a818ff7cf82d06a1a69c395bdef85ee6 (patch)
tree0ebb0db416c157fcfde51a941185819dd12d51fd /src/psyc
parent5184c17d32a39c928c2a0fec3ee1ad098bbaa562 (diff)
downloadgnunet-d8c53b12a818ff7cf82d06a1a69c395bdef85ee6.tar.gz
gnunet-d8c53b12a818ff7cf82d06a1a69c395bdef85ee6.zip
-avoid calling memcpy() with NULL argument, even if len is 0
Diffstat (limited to 'src/psyc')
-rw-r--r--src/psyc/gnunet-service-psyc.c28
-rw-r--r--src/psyc/psyc_api.c12
-rw-r--r--src/psyc/test_psyc.c8
3 files changed, 24 insertions, 24 deletions
diff --git a/src/psyc/gnunet-service-psyc.c b/src/psyc/gnunet-service-psyc.c
index 8fd2fbf35..792164b95 100644
--- a/src/psyc/gnunet-service-psyc.c
+++ b/src/psyc/gnunet-service-psyc.c
@@ -677,7 +677,7 @@ client_send_result (struct GNUNET_SERVER_Client *client, uint64_t op_id,
677 res->result_code = GNUNET_htonll (result_code); 677 res->result_code = GNUNET_htonll (result_code);
678 res->op_id = op_id; 678 res->op_id = op_id;
679 if (0 < data_size) 679 if (0 < data_size)
680 memcpy (&res[1], data, data_size); 680 GNUNET_memcpy (&res[1], data, data_size);
681 681
682 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 682 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
683 "%p Sending result to client for operation #%" PRIu64 ": " 683 "%p Sending result to client for operation #%" PRIu64 ": "
@@ -771,7 +771,7 @@ mcast_recv_join_request (void *cls,
771 req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST); 771 req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST);
772 req->slave_pub_key = *slave_pub_key; 772 req->slave_pub_key = *slave_pub_key;
773 if (0 < join_msg_size) 773 if (0 < join_msg_size)
774 memcpy (&req[1], join_msg, join_msg_size); 774 GNUNET_memcpy (&req[1], join_msg, join_msg_size);
775 775
776 struct JoinMemTestClosure *jcls = GNUNET_malloc (sizeof (*jcls)); 776 struct JoinMemTestClosure *jcls = GNUNET_malloc (sizeof (*jcls));
777 jcls->slave_pub_key = *slave_pub_key; 777 jcls->slave_pub_key = *slave_pub_key;
@@ -812,7 +812,7 @@ mcast_recv_join_decision (void *cls, int is_admitted,
812 dcsn->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION); 812 dcsn->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION);
813 dcsn->is_admitted = htonl (is_admitted); 813 dcsn->is_admitted = htonl (is_admitted);
814 if (0 < join_resp_size) 814 if (0 < join_resp_size)
815 memcpy (&dcsn[1], join_resp, join_resp_size); 815 GNUNET_memcpy (&dcsn[1], join_resp, join_resp_size);
816 816
817 client_send_msg (chn, &dcsn->header); 817 client_send_msg (chn, &dcsn->header);
818 818
@@ -962,7 +962,7 @@ psyc_msg_init (struct GNUNET_PSYC_MessageHeader *pmsg,
962 pmsg->fragment_offset = mmsg->fragment_offset; 962 pmsg->fragment_offset = mmsg->fragment_offset;
963 pmsg->flags = htonl (flags); 963 pmsg->flags = htonl (flags);
964 964
965 memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg)); 965 GNUNET_memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg));
966} 966}
967 967
968 968
@@ -1029,7 +1029,7 @@ client_send_mcast_req (struct Master *mst,
1029 pmsg->fragment_offset = req->fragment_offset; 1029 pmsg->fragment_offset = req->fragment_offset;
1030 pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST); 1030 pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST);
1031 pmsg->slave_pub_key = req->member_pub_key; 1031 pmsg->slave_pub_key = req->member_pub_key;
1032 memcpy (&pmsg[1], &req[1], size - sizeof (*req)); 1032 GNUNET_memcpy (&pmsg[1], &req[1], size - sizeof (*req));
1033 1033
1034 client_send_msg (chn, &pmsg->header); 1034 client_send_msg (chn, &pmsg->header);
1035 1035
@@ -1100,7 +1100,7 @@ fragment_queue_insert (struct Channel *chn,
1100 cache_entry = GNUNET_new (struct RecvCacheEntry); 1100 cache_entry = GNUNET_new (struct RecvCacheEntry);
1101 cache_entry->ref_count = 1; 1101 cache_entry->ref_count = 1;
1102 cache_entry->mmsg = GNUNET_malloc (size); 1102 cache_entry->mmsg = GNUNET_malloc (size);
1103 memcpy (cache_entry->mmsg, mmsg, size); 1103 GNUNET_memcpy (cache_entry->mmsg, mmsg, size);
1104 GNUNET_CONTAINER_multihashmap_put (chan_msgs, &frag_id_hash, cache_entry, 1104 GNUNET_CONTAINER_multihashmap_put (chan_msgs, &frag_id_hash, cache_entry,
1105 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 1105 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1106 } 1106 }
@@ -1784,7 +1784,7 @@ client_recv_slave_join (void *cls, struct GNUNET_SERVER_Client *client,
1784 join_msg = (struct GNUNET_PSYC_Message *) (((char *) &req[1]) + relay_size); 1784 join_msg = (struct GNUNET_PSYC_Message *) (((char *) &req[1]) + relay_size);
1785 join_msg_size = ntohs (join_msg->header.size); 1785 join_msg_size = ntohs (join_msg->header.size);
1786 slv->join_msg = GNUNET_malloc (join_msg_size); 1786 slv->join_msg = GNUNET_malloc (join_msg_size);
1787 memcpy (slv->join_msg, join_msg, join_msg_size); 1787 GNUNET_memcpy (slv->join_msg, join_msg, join_msg_size);
1788 } 1788 }
1789 if (sizeof (*req) + relay_size + join_msg_size != req_size) 1789 if (sizeof (*req) + relay_size + join_msg_size != req_size)
1790 { 1790 {
@@ -1802,7 +1802,7 @@ client_recv_slave_join (void *cls, struct GNUNET_SERVER_Client *client,
1802 if (0 < slv->relay_count) 1802 if (0 < slv->relay_count)
1803 { 1803 {
1804 slv->relays = GNUNET_malloc (relay_size); 1804 slv->relays = GNUNET_malloc (relay_size);
1805 memcpy (slv->relays, &req[1], relay_size); 1805 GNUNET_memcpy (slv->relays, &req[1], relay_size);
1806 } 1806 }
1807 1807
1808 chn = &slv->chn; 1808 chn = &slv->chn;
@@ -1994,7 +1994,7 @@ transmit_notify (void *cls, size_t *data_size, void *data)
1994 "%p transmit_notify: sending %u bytes.\n", chn, tmit_msg->size); 1994 "%p transmit_notify: sending %u bytes.\n", chn, tmit_msg->size);
1995 1995
1996 *data_size = tmit_msg->size; 1996 *data_size = tmit_msg->size;
1997 memcpy (data, &tmit_msg[1], *data_size); 1997 GNUNET_memcpy (data, &tmit_msg[1], *data_size);
1998 1998
1999 int ret 1999 int ret
2000 = (tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END) 2000 = (tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END)
@@ -2203,7 +2203,7 @@ queue_message (struct Channel *chn,
2203{ 2203{
2204 struct TransmitMessage * 2204 struct TransmitMessage *
2205 tmit_msg = GNUNET_malloc (sizeof (*tmit_msg) + data_size); 2205 tmit_msg = GNUNET_malloc (sizeof (*tmit_msg) + data_size);
2206 memcpy (&tmit_msg[1], data, data_size); 2206 GNUNET_memcpy (&tmit_msg[1], data, data_size);
2207 tmit_msg->client = client; 2207 tmit_msg->client = client;
2208 tmit_msg->size = data_size; 2208 tmit_msg->size = data_size;
2209 tmit_msg->first_ptype = first_ptype; 2209 tmit_msg->first_ptype = first_ptype;
@@ -2390,7 +2390,7 @@ store_recv_fragment_history (void *cls,
2390 2390
2391 pmsg = (struct GNUNET_PSYC_MessageHeader *) &res[1]; 2391 pmsg = (struct GNUNET_PSYC_MessageHeader *) &res[1];
2392 GNUNET_PSYC_message_header_init (pmsg, mmsg, flags | GNUNET_PSYC_MESSAGE_HISTORIC); 2392 GNUNET_PSYC_message_header_init (pmsg, mmsg, flags | GNUNET_PSYC_MESSAGE_HISTORIC);
2393 memcpy (&res[1], pmsg, psize); 2393 GNUNET_memcpy (&res[1], pmsg, psize);
2394 2394
2395 /** @todo FIXME: send only to requesting client */ 2395 /** @todo FIXME: send only to requesting client */
2396 client_send_msg (chn, &res->header); 2396 client_send_msg (chn, &res->header);
@@ -2510,8 +2510,8 @@ store_recv_state_var (void *cls, const char *name,
2510 mod->name_size = htons (name_size); 2510 mod->name_size = htons (name_size);
2511 mod->value_size = htonl (value_size); 2511 mod->value_size = htonl (value_size);
2512 mod->oper = htons (GNUNET_PSYC_OP_ASSIGN); 2512 mod->oper = htons (GNUNET_PSYC_OP_ASSIGN);
2513 memcpy (&mod[1], name, name_size); 2513 GNUNET_memcpy (&mod[1], name, name_size);
2514 memcpy (((char *) &mod[1]) + name_size, value, value_size); 2514 GNUNET_memcpy (((char *) &mod[1]) + name_size, value, value_size);
2515 } 2515 }
2516 else /* Continuation */ 2516 else /* Continuation */
2517 { 2517 {
@@ -2524,7 +2524,7 @@ store_recv_state_var (void *cls, const char *name,
2524 mod = (struct GNUNET_MessageHeader *) &res[1]; 2524 mod = (struct GNUNET_MessageHeader *) &res[1];
2525 mod->size = htons (sizeof (*mod) + value_size); 2525 mod->size = htons (sizeof (*mod) + value_size);
2526 mod->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT); 2526 mod->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT);
2527 memcpy (&mod[1], value, value_size); 2527 GNUNET_memcpy (&mod[1], value, value_size);
2528 } 2528 }
2529 2529
2530 // FIXME: client might have been disconnected 2530 // FIXME: client might have been disconnected
diff --git a/src/psyc/psyc_api.c b/src/psyc/psyc_api.c
index 441c74a08..515a2731a 100644
--- a/src/psyc/psyc_api.c
+++ b/src/psyc/psyc_api.c
@@ -224,7 +224,7 @@ channel_send_connect_msg (struct GNUNET_PSYC_Channel *chn)
224{ 224{
225 uint16_t cmsg_size = ntohs (chn->connect_msg->size); 225 uint16_t cmsg_size = ntohs (chn->connect_msg->size);
226 struct GNUNET_MessageHeader *cmsg = GNUNET_malloc (cmsg_size); 226 struct GNUNET_MessageHeader *cmsg = GNUNET_malloc (cmsg_size);
227 memcpy (cmsg, chn->connect_msg, cmsg_size); 227 GNUNET_memcpy (cmsg, chn->connect_msg, cmsg_size);
228 GNUNET_CLIENT_MANAGER_transmit_now (chn->client, cmsg); 228 GNUNET_CLIENT_MANAGER_transmit_now (chn->client, cmsg);
229 GNUNET_free (cmsg); 229 GNUNET_free (cmsg);
230} 230}
@@ -760,7 +760,7 @@ GNUNET_PSYC_join_decision (struct GNUNET_PSYC_JoinHandle *jh,
760 dcsn->slave_pub_key = jh->slave_pub_key; 760 dcsn->slave_pub_key = jh->slave_pub_key;
761 761
762 if (0 < join_resp_size) 762 if (0 < join_resp_size)
763 memcpy (&dcsn[1], join_resp, join_resp_size); 763 GNUNET_memcpy (&dcsn[1], join_resp, join_resp_size);
764 764
765 GNUNET_CLIENT_MANAGER_transmit (chn->client, &dcsn->header); 765 GNUNET_CLIENT_MANAGER_transmit (chn->client, &dcsn->header);
766 GNUNET_free (dcsn); 766 GNUNET_free (dcsn);
@@ -908,10 +908,10 @@ GNUNET_PSYC_slave_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
908 req->flags = htonl (flags); 908 req->flags = htonl (flags);
909 909
910 if (0 < relay_size) 910 if (0 < relay_size)
911 memcpy (&req[1], relays, relay_size); 911 GNUNET_memcpy (&req[1], relays, relay_size);
912 912
913 if (NULL != join_msg) 913 if (NULL != join_msg)
914 memcpy ((char *) &req[1] + relay_size, join_msg, join_msg_size); 914 GNUNET_memcpy ((char *) &req[1] + relay_size, join_msg, join_msg_size);
915 915
916 chn->connect_msg = &req->header; 916 chn->connect_msg = &req->header;
917 chn->cfg = cfg; 917 chn->cfg = cfg;
@@ -1170,7 +1170,7 @@ channel_history_replay (struct GNUNET_PSYC_Channel *chn,
1170 req->message_limit = GNUNET_htonll (message_limit); 1170 req->message_limit = GNUNET_htonll (message_limit);
1171 req->flags = htonl (flags); 1171 req->flags = htonl (flags);
1172 req->op_id = GNUNET_htonll (hist->op_id); 1172 req->op_id = GNUNET_htonll (hist->op_id);
1173 memcpy (&req[1], method_prefix, method_size); 1173 GNUNET_memcpy (&req[1], method_prefix, method_size);
1174 1174
1175 GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header); 1175 GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header);
1176 GNUNET_free (req); 1176 GNUNET_free (req);
@@ -1311,7 +1311,7 @@ channel_state_get (struct GNUNET_PSYC_Channel *chn,
1311 req->header.type = htons (type); 1311 req->header.type = htons (type);
1312 req->header.size = htons (sizeof (*req) + name_size); 1312 req->header.size = htons (sizeof (*req) + name_size);
1313 req->op_id = GNUNET_htonll (sr->op_id); 1313 req->op_id = GNUNET_htonll (sr->op_id);
1314 memcpy (&req[1], name, name_size); 1314 GNUNET_memcpy (&req[1], name, name_size);
1315 1315
1316 GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header); 1316 GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header);
1317 GNUNET_free (req); 1317 GNUNET_free (req);
diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c
index 402b17b96..9797a96b5 100644
--- a/src/psyc/test_psyc.c
+++ b/src/psyc/test_psyc.c
@@ -607,7 +607,7 @@ tmit_notify_data (void *cls, uint16_t *data_size, void *data)
607 tmit->paused = GNUNET_NO; 607 tmit->paused = GNUNET_NO;
608 608
609 *data_size = size; 609 *data_size = size;
610 memcpy (data, tmit->data[tmit->n], size); 610 GNUNET_memcpy (data, tmit->data[tmit->n], size);
611 611
612 return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES; 612 return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES;
613} 613}
@@ -653,9 +653,9 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
653 tmit->mod_value = tmit->mod->value + value_size; 653 tmit->mod_value = tmit->mod->value + value_size;
654 } 654 }
655 655
656 memcpy (data, tmit->mod->name, name_size); 656 GNUNET_memcpy (data, tmit->mod->name, name_size);
657 ((char *)data)[name_size] = '\0'; 657 ((char *)data)[name_size] = '\0';
658 memcpy ((char *)data + name_size + 1, tmit->mod->value, value_size); 658 GNUNET_memcpy ((char *)data + name_size + 1, tmit->mod->value, value_size);
659 } 659 }
660 else if (NULL != tmit->mod_value && 0 < tmit->mod_value_size) 660 else if (NULL != tmit->mod_value && 0 < tmit->mod_value_size)
661 { /* Modifier continuation */ 661 { /* Modifier continuation */
@@ -682,7 +682,7 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
682 } 682 }
683 683
684 *data_size = value_size; 684 *data_size = value_size;
685 memcpy (data, value, value_size); 685 GNUNET_memcpy (data, value, value_size);
686 } 686 }
687 687
688 return GNUNET_NO; 688 return GNUNET_NO;