aboutsummaryrefslogtreecommitdiff
path: root/src/namestore/namestore_api.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-05-20 23:40:20 +0200
committerChristian Grothoff <christian@grothoff.org>2018-05-20 23:40:20 +0200
commitd080cb1ed80a0e528b2b755ee48ca18cb670175e (patch)
treed8c0edab6035e4d38138b303566e972fbf8b8c5f /src/namestore/namestore_api.c
parent0a8c135eedab5213b31c21b3d4b800e5f0f6041f (diff)
downloadgnunet-d080cb1ed80a0e528b2b755ee48ca18cb670175e.tar.gz
gnunet-d080cb1ed80a0e528b2b755ee48ca18cb670175e.zip
check return values from GNSRECORD_record_serialize/size always
Diffstat (limited to 'src/namestore/namestore_api.c')
-rw-r--r--src/namestore/namestore_api.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/namestore/namestore_api.c b/src/namestore/namestore_api.c
index 57bf8f81b..f2aaa43c8 100644
--- a/src/namestore/namestore_api.c
+++ b/src/namestore/namestore_api.c
@@ -1033,7 +1033,7 @@ GNUNET_NAMESTORE_records_store (struct GNUNET_NAMESTORE_Handle *h,
1033 struct GNUNET_MQ_Envelope *env; 1033 struct GNUNET_MQ_Envelope *env;
1034 char *name_tmp; 1034 char *name_tmp;
1035 char *rd_ser; 1035 char *rd_ser;
1036 size_t rd_ser_len; 1036 ssize_t rd_ser_len;
1037 size_t name_len; 1037 size_t name_len;
1038 uint32_t rid; 1038 uint32_t rid;
1039 struct RecordStoreMessage *msg; 1039 struct RecordStoreMessage *msg;
@@ -1045,6 +1045,18 @@ GNUNET_NAMESTORE_records_store (struct GNUNET_NAMESTORE_Handle *h,
1045 GNUNET_break (0); 1045 GNUNET_break (0);
1046 return NULL; 1046 return NULL;
1047 } 1047 }
1048 rd_ser_len = GNUNET_GNSRECORD_records_get_size (rd_count,
1049 rd);
1050 if (rd_ser_len < 0)
1051 {
1052 GNUNET_break (0);
1053 return NULL;
1054 }
1055 if (rd_ser_len > UINT16_MAX)
1056 {
1057 GNUNET_break (0);
1058 return NULL;
1059 }
1048 rid = get_op_id (h); 1060 rid = get_op_id (h);
1049 qe = GNUNET_new (struct GNUNET_NAMESTORE_QueueEntry); 1061 qe = GNUNET_new (struct GNUNET_NAMESTORE_QueueEntry);
1050 qe->h = h; 1062 qe->h = h;
@@ -1056,8 +1068,6 @@ GNUNET_NAMESTORE_records_store (struct GNUNET_NAMESTORE_Handle *h,
1056 qe); 1068 qe);
1057 1069
1058 /* setup msg */ 1070 /* setup msg */
1059 rd_ser_len = GNUNET_GNSRECORD_records_get_size (rd_count,
1060 rd);
1061 env = GNUNET_MQ_msg_extra (msg, 1071 env = GNUNET_MQ_msg_extra (msg,
1062 name_len + rd_ser_len, 1072 name_len + rd_ser_len,
1063 GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_STORE); 1073 GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_STORE);
@@ -1077,8 +1087,10 @@ GNUNET_NAMESTORE_records_store (struct GNUNET_NAMESTORE_Handle *h,
1077 rd, 1087 rd,
1078 rd_ser_len, 1088 rd_ser_len,
1079 rd_ser); 1089 rd_ser);
1080 if (0 > sret) 1090 if ( (0 > sret) ||
1091 (sret != rd_ser_len) )
1081 { 1092 {
1093 GNUNET_break (0);
1082 GNUNET_free (env); 1094 GNUNET_free (env);
1083 return NULL; 1095 return NULL;
1084 } 1096 }