aboutsummaryrefslogtreecommitdiff
path: root/src/psycutil
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/psycutil
parent5184c17d32a39c928c2a0fec3ee1ad098bbaa562 (diff)
downloadgnunet-d8c53b12a818ff7cf82d06a1a69c395bdef85ee6.tar.gz
gnunet-d8c53b12a818ff7cf82d06a1a69c395bdef85ee6.zip
-avoid calling memcpy() with NULL argument, even if len is 0
Diffstat (limited to 'src/psycutil')
-rw-r--r--src/psycutil/psyc_message.c24
-rw-r--r--src/psycutil/psyc_slicer.c8
2 files changed, 16 insertions, 16 deletions
diff --git a/src/psycutil/psyc_message.c b/src/psycutil/psyc_message.c
index 9f0a0c7da..272b4bf4c 100644
--- a/src/psycutil/psyc_message.c
+++ b/src/psycutil/psyc_message.c
@@ -215,7 +215,7 @@ GNUNET_PSYC_message_create (const char *method_name,
215 pmeth = (struct GNUNET_PSYC_MessageMethod *) &msg[1]; 215 pmeth = (struct GNUNET_PSYC_MessageMethod *) &msg[1];
216 pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD); 216 pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD);
217 pmeth->header.size = htons (sizeof (*pmeth) + method_name_size); 217 pmeth->header.size = htons (sizeof (*pmeth) + method_name_size);
218 memcpy (&pmeth[1], method_name, method_name_size); 218 GNUNET_memcpy (&pmeth[1], method_name, method_name_size);
219 219
220 uint16_t p = sizeof (*msg) + sizeof (*pmeth) + method_name_size; 220 uint16_t p = sizeof (*msg) + sizeof (*pmeth) + method_name_size;
221 if (NULL != env) 221 if (NULL != env)
@@ -234,9 +234,9 @@ GNUNET_PSYC_message_create (const char *method_name,
234 pmod->name_size = htons (mod_name_size); 234 pmod->name_size = htons (mod_name_size);
235 pmod->value_size = htonl (mod->value_size); 235 pmod->value_size = htonl (mod->value_size);
236 236
237 memcpy (&pmod[1], mod->name, mod_name_size); 237 GNUNET_memcpy (&pmod[1], mod->name, mod_name_size);
238 if (0 < mod->value_size) 238 if (0 < mod->value_size)
239 memcpy ((char *) &pmod[1] + mod_name_size, mod->value, mod->value_size); 239 GNUNET_memcpy ((char *) &pmod[1] + mod_name_size, mod->value, mod->value_size);
240 240
241 mod = mod->next; 241 mod = mod->next;
242 } 242 }
@@ -249,7 +249,7 @@ GNUNET_PSYC_message_create (const char *method_name,
249 p += pmsg->size; 249 p += pmsg->size;
250 pmsg->size = htons (pmsg->size); 250 pmsg->size = htons (pmsg->size);
251 pmsg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA); 251 pmsg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA);
252 memcpy (&pmsg[1], data, data_size); 252 GNUNET_memcpy (&pmsg[1], data, data_size);
253 } 253 }
254 254
255 pmsg = (struct GNUNET_MessageHeader *) ((char *) msg + p); 255 pmsg = (struct GNUNET_MessageHeader *) ((char *) msg + p);
@@ -388,7 +388,7 @@ transmit_queue_insert (struct GNUNET_PSYC_TransmitHandle *tmit,
388 { 388 {
389 /* Message fits in current buffer, append */ 389 /* Message fits in current buffer, append */
390 tmit->msg = GNUNET_realloc (tmit->msg, tmit->msg->size + size); 390 tmit->msg = GNUNET_realloc (tmit->msg, tmit->msg->size + size);
391 memcpy ((char *) tmit->msg + tmit->msg->size, msg, size); 391 GNUNET_memcpy ((char *) tmit->msg + tmit->msg->size, msg, size);
392 tmit->msg->size += size; 392 tmit->msg->size += size;
393 } 393 }
394 } 394 }
@@ -398,7 +398,7 @@ transmit_queue_insert (struct GNUNET_PSYC_TransmitHandle *tmit,
398 /* Empty buffer, copy over message. */ 398 /* Empty buffer, copy over message. */
399 tmit->msg = GNUNET_malloc (sizeof (*tmit->msg) + size); 399 tmit->msg = GNUNET_malloc (sizeof (*tmit->msg) + size);
400 tmit->msg->size = sizeof (*tmit->msg) + size; 400 tmit->msg->size = sizeof (*tmit->msg) + size;
401 memcpy (&tmit->msg[1], msg, size); 401 GNUNET_memcpy (&tmit->msg[1], msg, size);
402 } 402 }
403 403
404 if (NULL != tmit->msg 404 if (NULL != tmit->msg
@@ -647,8 +647,8 @@ transmit_notify_env (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
647 tmit->mod_value = tmit->mod->value + value_size; 647 tmit->mod_value = tmit->mod->value + value_size;
648 } 648 }
649 649
650 memcpy (data, tmit->mod->name, name_size); 650 GNUNET_memcpy (data, tmit->mod->name, name_size);
651 memcpy ((char *)data + name_size, tmit->mod->value, value_size); 651 GNUNET_memcpy ((char *)data + name_size, tmit->mod->value, value_size);
652 return GNUNET_NO; 652 return GNUNET_NO;
653 } 653 }
654 else 654 else
@@ -676,7 +676,7 @@ transmit_notify_env (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
676 } 676 }
677 677
678 *data_size = value_size; 678 *data_size = value_size;
679 memcpy (data, value, value_size); 679 GNUNET_memcpy (data, value, value_size);
680 return (NULL == tmit->mod_value) ? GNUNET_YES : GNUNET_NO; 680 return (NULL == tmit->mod_value) ? GNUNET_YES : GNUNET_NO;
681 } 681 }
682} 682}
@@ -757,7 +757,7 @@ GNUNET_PSYC_transmit_message (struct GNUNET_PSYC_TransmitHandle *tmit,
757 pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD); 757 pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD);
758 pmeth->header.size = htons (sizeof (*pmeth) + size); 758 pmeth->header.size = htons (sizeof (*pmeth) + size);
759 pmeth->flags = htonl (flags); 759 pmeth->flags = htonl (flags);
760 memcpy (&pmeth[1], method_name, size); 760 GNUNET_memcpy (&pmeth[1], method_name, size);
761 761
762 tmit->state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER; 762 tmit->state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER;
763 tmit->notify_data = notify_data; 763 tmit->notify_data = notify_data;
@@ -1302,7 +1302,7 @@ GNUNET_PSYC_message_header_init (struct GNUNET_PSYC_MessageHeader *pmsg,
1302 pmsg->fragment_offset = mmsg->fragment_offset; 1302 pmsg->fragment_offset = mmsg->fragment_offset;
1303 pmsg->flags = htonl (flags); 1303 pmsg->flags = htonl (flags);
1304 1304
1305 memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg)); 1305 GNUNET_memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg));
1306} 1306}
1307 1307
1308 1308
@@ -1334,6 +1334,6 @@ GNUNET_PSYC_message_header_create_from_psyc (const struct GNUNET_PSYC_Message *m
1334 pmsg = GNUNET_malloc (sizeof (*pmsg) + msg_size - sizeof (*msg)); 1334 pmsg = GNUNET_malloc (sizeof (*pmsg) + msg_size - sizeof (*msg));
1335 pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE); 1335 pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
1336 pmsg->header.size = htons (sizeof (*pmsg) + msg_size - sizeof (*msg)); 1336 pmsg->header.size = htons (sizeof (*pmsg) + msg_size - sizeof (*msg));
1337 memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg)); 1337 GNUNET_memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg));
1338 return pmsg; 1338 return pmsg;
1339} 1339}
diff --git a/src/psycutil/psyc_slicer.c b/src/psycutil/psyc_slicer.c
index b641d9721..a32bbe484 100644
--- a/src/psycutil/psyc_slicer.c
+++ b/src/psycutil/psyc_slicer.c
@@ -309,7 +309,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer,
309 meth = (struct GNUNET_PSYC_MessageMethod *) pmsg; 309 meth = (struct GNUNET_PSYC_MessageMethod *) pmsg;
310 slicer->method_name_size = ntohs (meth->header.size) - sizeof (*meth); 310 slicer->method_name_size = ntohs (meth->header.size) - sizeof (*meth);
311 slicer->method_name = GNUNET_malloc (slicer->method_name_size); 311 slicer->method_name = GNUNET_malloc (slicer->method_name_size);
312 memcpy (slicer->method_name, &meth[1], slicer->method_name_size); 312 GNUNET_memcpy (slicer->method_name, &meth[1], slicer->method_name_size);
313 slicer->message_id = message_id; 313 slicer->message_id = message_id;
314 } 314 }
315 else 315 else
@@ -335,7 +335,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer,
335 slicer->mod_oper = mod->oper; 335 slicer->mod_oper = mod->oper;
336 slicer->mod_name_size = ntohs (mod->name_size); 336 slicer->mod_name_size = ntohs (mod->name_size);
337 slicer->mod_name = GNUNET_malloc (slicer->mod_name_size); 337 slicer->mod_name = GNUNET_malloc (slicer->mod_name_size);
338 memcpy (slicer->mod_name, &mod[1], slicer->mod_name_size); 338 GNUNET_memcpy (slicer->mod_name, &mod[1], slicer->mod_name_size);
339 slicer->mod_value = (char *) &mod[1] + slicer->mod_name_size; 339 slicer->mod_value = (char *) &mod[1] + slicer->mod_name_size;
340 slicer->mod_full_value_size = ntohs (mod->value_size); 340 slicer->mod_full_value_size = ntohs (mod->value_size);
341 slicer->mod_value_remaining = slicer->mod_full_value_size; 341 slicer->mod_value_remaining = slicer->mod_full_value_size;
@@ -351,7 +351,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer,
351 } 351 }
352 slicer->mod_value_remaining -= slicer->mod_value_size; 352 slicer->mod_value_remaining -= slicer->mod_value_size;
353 char *name = GNUNET_malloc (slicer->mod_name_size); 353 char *name = GNUNET_malloc (slicer->mod_name_size);
354 memcpy (name, slicer->mod_name, slicer->mod_name_size); 354 GNUNET_memcpy (name, slicer->mod_name, slicer->mod_name_size);
355 do 355 do
356 { 356 {
357 struct GNUNET_HashCode key; 357 struct GNUNET_HashCode key;
@@ -371,7 +371,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer,
371 /* try-and-slice method */ 371 /* try-and-slice method */
372 372
373 char *name = GNUNET_malloc (slicer->method_name_size); 373 char *name = GNUNET_malloc (slicer->method_name_size);
374 memcpy (name, slicer->method_name, slicer->method_name_size); 374 GNUNET_memcpy (name, slicer->method_name, slicer->method_name_size);
375 do 375 do
376 { 376 {
377 struct GNUNET_HashCode key; 377 struct GNUNET_HashCode key;