aboutsummaryrefslogtreecommitdiff
path: root/src/abd/gnunet-abd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/abd/gnunet-abd.c')
-rw-r--r--src/abd/gnunet-abd.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/abd/gnunet-abd.c b/src/abd/gnunet-abd.c
index eb3e29e23..6cf4aab0d 100644
--- a/src/abd/gnunet-abd.c
+++ b/src/abd/gnunet-abd.c
@@ -512,11 +512,13 @@ get_existing_record (void *cls,
512 unsigned int rd_count, 512 unsigned int rd_count,
513 const struct GNUNET_GNSRECORD_Data *rd) 513 const struct GNUNET_GNSRECORD_Data *rd)
514{ 514{
515 struct GNUNET_GNSRECORD_Data rdn[rd_count + 1];
516 struct GNUNET_GNSRECORD_Data *rde; 515 struct GNUNET_GNSRECORD_Data *rde;
516 struct GNUNET_GNSRECORD_Data* rdn =
517 GNUNET_malloc(sizeof(*rdn)*(rd_count + 1));
517 518
518 memset (rdn, 0, sizeof (struct GNUNET_GNSRECORD_Data)); 519 memset (rdn, 0, sizeof (struct GNUNET_GNSRECORD_Data));
519 GNUNET_memcpy (&rdn[1], rd, rd_count * sizeof (struct GNUNET_GNSRECORD_Data)); 520 GNUNET_memcpy (&rdn[1], rd,
521 rd_count * sizeof (struct GNUNET_GNSRECORD_Data));
520 rde = &rdn[0]; 522 rde = &rdn[0];
521 rde->data = data; 523 rde->data = data;
522 rde->data_size = data_size; 524 rde->data_size = data_size;
@@ -539,7 +541,7 @@ get_existing_record (void *cls,
539 rde, 541 rde,
540 &add_continuation, 542 &add_continuation,
541 &add_qe); 543 &add_qe);
542 544 GNUNET_free(rdn);
543 return; 545 return;
544} 546}
545 547
@@ -602,10 +604,18 @@ store_cb (void *cls, const struct GNUNET_IDENTITY_Ego *ego)
602 if (GNUNET_OK != 604 if (GNUNET_OK !=
603 GNUNET_GNSRECORD_string_to_value (type, subject, &data, &data_size)) 605 GNUNET_GNSRECORD_string_to_value (type, subject, &data, &data_size))
604 { 606 {
605 fprintf (stderr, 607 if(typestring == NULL) {
606 "Value `%s' invalid for record type `%s'\n", 608 fputs("No value for unknown record type\n", stderr);
607 subject, 609 } else if(subject == NULL) {
608 typestring); 610 fprintf(stderr,
611 "No value for record type`%s'\n",
612 typestring);
613 } else {
614 fprintf (stderr,
615 "Value `%s' invalid for record type `%s'\n",
616 subject,
617 typestring);
618 }
609 GNUNET_SCHEDULER_shutdown (); 619 GNUNET_SCHEDULER_shutdown ();
610 return; 620 return;
611 } 621 }
@@ -917,7 +927,8 @@ run (void *cls,
917 int i; 927 int i;
918 while (NULL != (tok = strtok (NULL, ","))) 928 while (NULL != (tok = strtok (NULL, ",")))
919 count++; 929 count++;
920 struct GNUNET_ABD_Delegate delegates[count]; 930 struct GNUNET_ABD_Delegate* delegates =
931 GNUNET_malloc(sizeof(*delegates)*count);
921 struct GNUNET_ABD_Delegate *dele; 932 struct GNUNET_ABD_Delegate *dele;
922 GNUNET_free (tmp); 933 GNUNET_free (tmp);
923 tmp = GNUNET_strdup (subject_delegate); 934 tmp = GNUNET_strdup (subject_delegate);
@@ -946,9 +957,11 @@ run (void *cls,
946 NULL); 957 NULL);
947 for (i = 0; i < count; i++) 958 for (i = 0; i < count; i++)
948 { 959 {
949 GNUNET_free ((char *) delegates[i].issuer_attribute); 960 GNUNET_free_nz ((char *) delegates[i].issuer_attribute);
961 delegates[i].issuer_attribute = NULL;
950 } 962 }
951 GNUNET_free (tmp); 963 GNUNET_free (tmp);
964 GNUNET_free(delegates);
952 } 965 }
953 else 966 else
954 { 967 {