aboutsummaryrefslogtreecommitdiff
path: root/src/my/my_result_helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/my/my_result_helper.c')
-rw-r--r--src/my/my_result_helper.c43
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 */
449static void 465static void
450clean_rsa_signature (void *cls, 466clean_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}