diff options
Diffstat (limited to 'src/my/my_result_helper.c')
-rw-r--r-- | src/my/my_result_helper.c | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/src/my/my_result_helper.c b/src/my/my_result_helper.c index a91a24d90..bee6e3304 100644 --- a/src/my/my_result_helper.c +++ b/src/my/my_result_helper.c | |||
@@ -46,6 +46,8 @@ pre_extract_varsize_blob (void *cls, | |||
46 | results[0].buffer = NULL; | 46 | results[0].buffer = NULL; |
47 | results[0].buffer_length = 0; | 47 | results[0].buffer_length = 0; |
48 | results[0].length = &rs->mysql_bind_output_length; | 48 | results[0].length = &rs->mysql_bind_output_length; |
49 | results[0].is_null = &rs->is_null; | ||
50 | rs->is_null = 0; | ||
49 | 51 | ||
50 | return GNUNET_OK; | 52 | return GNUNET_OK; |
51 | } | 53 | } |
@@ -73,6 +75,8 @@ post_extract_varsize_blob (void *cls, | |||
73 | void *buf; | 75 | void *buf; |
74 | size_t size; | 76 | size_t size; |
75 | 77 | ||
78 | if (*results->is_null) | ||
79 | return GNUNET_SYSERR; | ||
76 | size = (size_t) rs->mysql_bind_output_length; | 80 | size = (size_t) rs->mysql_bind_output_length; |
77 | 81 | ||
78 | if (rs->mysql_bind_output_length != size) | 82 | if (rs->mysql_bind_output_length != size) |
@@ -169,6 +173,8 @@ pre_extract_fixed_blob (void *cls, | |||
169 | results[0].buffer_length = rs->dst_size; | 173 | results[0].buffer_length = rs->dst_size; |
170 | results[0].length = &rs->mysql_bind_output_length; | 174 | results[0].length = &rs->mysql_bind_output_length; |
171 | results[0].buffer_type = MYSQL_TYPE_BLOB; | 175 | results[0].buffer_type = MYSQL_TYPE_BLOB; |
176 | results[0].is_null = &rs->is_null; | ||
177 | rs->is_null = 0; | ||
172 | 178 | ||
173 | return GNUNET_OK; | 179 | return GNUNET_OK; |
174 | } | 180 | } |
@@ -194,6 +200,8 @@ post_extract_fixed_blob (void *cls, | |||
194 | unsigned int column, | 200 | unsigned int column, |
195 | MYSQL_BIND *results) | 201 | MYSQL_BIND *results) |
196 | { | 202 | { |
203 | if (*results->is_null) | ||
204 | return GNUNET_SYSERR; | ||
197 | if (rs->dst_size != rs->mysql_bind_output_length) | 205 | if (rs->dst_size != rs->mysql_bind_output_length) |
198 | return GNUNET_SYSERR; | 206 | return GNUNET_SYSERR; |
199 | return GNUNET_OK; | 207 | return GNUNET_OK; |
@@ -249,6 +257,8 @@ pre_extract_rsa_public_key (void *cls, | |||
249 | results[0].buffer_length = 0; | 257 | results[0].buffer_length = 0; |
250 | results[0].length = &rs->mysql_bind_output_length; | 258 | results[0].length = &rs->mysql_bind_output_length; |
251 | results[0].buffer_type = MYSQL_TYPE_BLOB; | 259 | results[0].buffer_type = MYSQL_TYPE_BLOB; |
260 | results[0].is_null = &rs->is_null; | ||
261 | rs->is_null = 0; | ||
252 | 262 | ||
253 | return GNUNET_OK; | 263 | return GNUNET_OK; |
254 | } | 264 | } |
@@ -279,6 +289,8 @@ post_extract_rsa_public_key (void *cls, | |||
279 | void *buf; | 289 | void *buf; |
280 | size_t size; | 290 | size_t size; |
281 | 291 | ||
292 | if (*results->is_null) | ||
293 | return GNUNET_SYSERR; | ||
282 | size = (size_t) rs->mysql_bind_output_length; | 294 | size = (size_t) rs->mysql_bind_output_length; |
283 | 295 | ||
284 | if (rs->mysql_bind_output_length != size) | 296 | if (rs->mysql_bind_output_length != size) |
@@ -379,6 +391,8 @@ pre_extract_rsa_signature (void *cls, | |||
379 | results[0].buffer_length = 0; | 391 | results[0].buffer_length = 0; |
380 | results[0].length = &rs->mysql_bind_output_length; | 392 | results[0].length = &rs->mysql_bind_output_length; |
381 | results[0].buffer_type = MYSQL_TYPE_BLOB; | 393 | results[0].buffer_type = MYSQL_TYPE_BLOB; |
394 | results[0].is_null = &rs->is_null; | ||
395 | rs->is_null = 0; | ||
382 | 396 | ||
383 | return GNUNET_OK; | 397 | return GNUNET_OK; |
384 | } | 398 | } |
@@ -407,6 +421,8 @@ post_extract_rsa_signature (void *cls, | |||
407 | void *buf; | 421 | void *buf; |
408 | size_t size; | 422 | size_t size; |
409 | 423 | ||
424 | if (*results->is_null) | ||
425 | return GNUNET_SYSERR; | ||
410 | size = (size_t) rs->mysql_bind_output_length; | 426 | size = (size_t) rs->mysql_bind_output_length; |
411 | 427 | ||
412 | if (rs->mysql_bind_output_length != size) | 428 | if (rs->mysql_bind_output_length != size) |
@@ -448,7 +464,7 @@ post_extract_rsa_signature (void *cls, | |||
448 | */ | 464 | */ |
449 | static void | 465 | static void |
450 | clean_rsa_signature (void *cls, | 466 | clean_rsa_signature (void *cls, |
451 | struct GNUNET_MY_ResultSpec *rs) | 467 | struct GNUNET_MY_ResultSpec *rs) |
452 | { | 468 | { |
453 | struct GNUNET_CRYPTO_RsaSignature **sig = rs->dst; | 469 | struct GNUNET_CRYPTO_RsaSignature **sig = rs->dst; |
454 | 470 | ||
@@ -505,6 +521,8 @@ pre_extract_string (void * cls, | |||
505 | results[0].buffer_length = 0; | 521 | results[0].buffer_length = 0; |
506 | results[0].length = &rs->mysql_bind_output_length; | 522 | results[0].length = &rs->mysql_bind_output_length; |
507 | results[0].buffer_type = MYSQL_TYPE_BLOB; | 523 | results[0].buffer_type = MYSQL_TYPE_BLOB; |
524 | results[0].is_null = &rs->is_null; | ||
525 | rs->is_null = 0; | ||
508 | 526 | ||
509 | return GNUNET_OK; | 527 | return GNUNET_OK; |
510 | } | 528 | } |
@@ -534,6 +552,11 @@ post_extract_string (void * cls, | |||
534 | 552 | ||
535 | if (rs->mysql_bind_output_length != size) | 553 | if (rs->mysql_bind_output_length != size) |
536 | return GNUNET_SYSERR; | 554 | return GNUNET_SYSERR; |
555 | if (*results->is_null) | ||
556 | { | ||
557 | rs->dst = NULL; | ||
558 | return GNUNET_OK; | ||
559 | } | ||
537 | 560 | ||
538 | buf = GNUNET_malloc (size); | 561 | buf = GNUNET_malloc (size); |
539 | results[0].buffer = buf; | 562 | results[0].buffer = buf; |
@@ -627,6 +650,8 @@ pre_extract_uint16 (void *cls, | |||
627 | results[0].buffer_length = rs->dst_size; | 650 | results[0].buffer_length = rs->dst_size; |
628 | results[0].length = &rs->mysql_bind_output_length; | 651 | results[0].length = &rs->mysql_bind_output_length; |
629 | results[0].buffer_type = MYSQL_TYPE_SHORT; | 652 | results[0].buffer_type = MYSQL_TYPE_SHORT; |
653 | results[0].is_null = &rs->is_null; | ||
654 | rs->is_null = 0; | ||
630 | 655 | ||
631 | return GNUNET_OK; | 656 | return GNUNET_OK; |
632 | } | 657 | } |
@@ -653,6 +678,8 @@ post_extract_uint16 (void *cls, | |||
653 | { | 678 | { |
654 | if (rs->dst_size != rs->mysql_bind_output_length) | 679 | if (rs->dst_size != rs->mysql_bind_output_length) |
655 | return GNUNET_SYSERR; | 680 | return GNUNET_SYSERR; |
681 | if (*results->is_null) | ||
682 | return GNUNET_SYSERR; | ||
656 | return GNUNET_OK; | 683 | return GNUNET_OK; |
657 | } | 684 | } |
658 | 685 | ||
@@ -702,6 +729,8 @@ pre_extract_uint32 (void *cls, | |||
702 | results[0].buffer_length = rs->dst_size; | 729 | results[0].buffer_length = rs->dst_size; |
703 | results[0].length = &rs->mysql_bind_output_length; | 730 | results[0].length = &rs->mysql_bind_output_length; |
704 | results[0].buffer_type = MYSQL_TYPE_LONG; | 731 | results[0].buffer_type = MYSQL_TYPE_LONG; |
732 | results[0].is_null = &rs->is_null; | ||
733 | rs->is_null = 0; | ||
705 | 734 | ||
706 | return GNUNET_OK; | 735 | return GNUNET_OK; |
707 | } | 736 | } |
@@ -728,7 +757,9 @@ post_extract_uint32 (void *cls, | |||
728 | MYSQL_BIND *results) | 757 | MYSQL_BIND *results) |
729 | { | 758 | { |
730 | if (rs->dst_size != rs->mysql_bind_output_length) | 759 | if (rs->dst_size != rs->mysql_bind_output_length) |
731 | return GNUNET_SYSERR; | 760 | return GNUNET_SYSERR; |
761 | if (*results->is_null) | ||
762 | return GNUNET_SYSERR; | ||
732 | return GNUNET_OK; | 763 | return GNUNET_OK; |
733 | } | 764 | } |
734 | 765 | ||
@@ -773,10 +804,14 @@ pre_extract_uint64 (void *cls, | |||
773 | unsigned int column, | 804 | unsigned int column, |
774 | MYSQL_BIND *results) | 805 | MYSQL_BIND *results) |
775 | { | 806 | { |
807 | if (sizeof (uint64_t) != rs->dst_size) | ||
808 | return GNUNET_SYSERR; | ||
776 | results[0].buffer = rs->dst; | 809 | results[0].buffer = rs->dst; |
777 | results[0].buffer_length = rs->dst_size; | 810 | results[0].buffer_length = rs->dst_size; |
778 | results[0].length = &rs->mysql_bind_output_length; | 811 | results[0].length = &rs->mysql_bind_output_length; |
779 | results[0].buffer_type = MYSQL_TYPE_LONGLONG; | 812 | results[0].buffer_type = MYSQL_TYPE_LONGLONG; |
813 | results[0].is_null = &rs->is_null; | ||
814 | rs->is_null = 0; | ||
780 | 815 | ||
781 | return GNUNET_OK; | 816 | return GNUNET_OK; |
782 | } | 817 | } |
@@ -801,7 +836,9 @@ post_extract_uint64 (void *cls, | |||
801 | unsigned int column, | 836 | unsigned int column, |
802 | MYSQL_BIND *results) | 837 | MYSQL_BIND *results) |
803 | { | 838 | { |
804 | if (rs->dst_size != rs->mysql_bind_output_length) | 839 | if (sizeof (uint64_t) != rs->dst_size) |
840 | return GNUNET_SYSERR; | ||
841 | if (*results->is_null) | ||
805 | return GNUNET_SYSERR; | 842 | return GNUNET_SYSERR; |
806 | return GNUNET_OK; | 843 | return GNUNET_OK; |
807 | } | 844 | } |