diff options
Diffstat (limited to 'src/abd/gnunet-abd.c')
-rw-r--r-- | src/abd/gnunet-abd.c | 31 |
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 | { |