diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-05-20 23:40:20 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-05-20 23:40:20 +0200 |
commit | d080cb1ed80a0e528b2b755ee48ca18cb670175e (patch) | |
tree | d8c0edab6035e4d38138b303566e972fbf8b8c5f /src/gns/gnunet-service-gns_resolver.c | |
parent | 0a8c135eedab5213b31c21b3d4b800e5f0f6041f (diff) | |
download | gnunet-d080cb1ed80a0e528b2b755ee48ca18cb670175e.tar.gz gnunet-d080cb1ed80a0e528b2b755ee48ca18cb670175e.zip |
check return values from GNSRECORD_record_serialize/size always
Diffstat (limited to 'src/gns/gnunet-service-gns_resolver.c')
-rw-r--r-- | src/gns/gnunet-service-gns_resolver.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c index b66516363..8593e281e 100644 --- a/src/gns/gnunet-service-gns_resolver.c +++ b/src/gns/gnunet-service-gns_resolver.c | |||
@@ -280,7 +280,7 @@ struct VpnContext | |||
280 | /** | 280 | /** |
281 | * Number of bytes in @e rd_data. | 281 | * Number of bytes in @e rd_data. |
282 | */ | 282 | */ |
283 | size_t rd_data_size; | 283 | ssize_t rd_data_size; |
284 | }; | 284 | }; |
285 | 285 | ||
286 | 286 | ||
@@ -1319,7 +1319,7 @@ vpn_allocation_cb (void *cls, | |||
1319 | vpn_ctx->vpn_request = NULL; | 1319 | vpn_ctx->vpn_request = NULL; |
1320 | rh->vpn_ctx = NULL; | 1320 | rh->vpn_ctx = NULL; |
1321 | GNUNET_assert (GNUNET_OK == | 1321 | GNUNET_assert (GNUNET_OK == |
1322 | GNUNET_GNSRECORD_records_deserialize (vpn_ctx->rd_data_size, | 1322 | GNUNET_GNSRECORD_records_deserialize ((size_t) vpn_ctx->rd_data_size, |
1323 | vpn_ctx->rd_data, | 1323 | vpn_ctx->rd_data, |
1324 | vpn_ctx->rd_count, | 1324 | vpn_ctx->rd_count, |
1325 | rd)); | 1325 | rd)); |
@@ -1901,13 +1901,20 @@ handle_gns_resolution_result (void *cls, | |||
1901 | vpn_ctx->rh = rh; | 1901 | vpn_ctx->rh = rh; |
1902 | vpn_ctx->rd_data_size = GNUNET_GNSRECORD_records_get_size (rd_count, | 1902 | vpn_ctx->rd_data_size = GNUNET_GNSRECORD_records_get_size (rd_count, |
1903 | rd); | 1903 | rd); |
1904 | vpn_ctx->rd_data = GNUNET_malloc (vpn_ctx->rd_data_size); | 1904 | if (vpn_ctx->rd_data_size < 0) |
1905 | { | ||
1906 | GNUNET_break_op (0); | ||
1907 | GNUNET_free (vpn_ctx); | ||
1908 | fail_resolution (rh); | ||
1909 | return; | ||
1910 | } | ||
1911 | vpn_ctx->rd_data = GNUNET_malloc ((size_t) vpn_ctx->rd_data_size); | ||
1905 | vpn_ctx->rd_count = rd_count; | 1912 | vpn_ctx->rd_count = rd_count; |
1906 | GNUNET_assert (vpn_ctx->rd_data_size == | 1913 | GNUNET_assert (vpn_ctx->rd_data_size == |
1907 | (size_t) GNUNET_GNSRECORD_records_serialize (rd_count, | 1914 | GNUNET_GNSRECORD_records_serialize (rd_count, |
1908 | rd, | 1915 | rd, |
1909 | vpn_ctx->rd_data_size, | 1916 | (size_t) vpn_ctx->rd_data_size, |
1910 | vpn_ctx->rd_data)); | 1917 | vpn_ctx->rd_data)); |
1911 | vpn_ctx->vpn_request = GNUNET_VPN_redirect_to_peer (vpn_handle, | 1918 | vpn_ctx->vpn_request = GNUNET_VPN_redirect_to_peer (vpn_handle, |
1912 | af, | 1919 | af, |
1913 | ntohs (vpn->proto), | 1920 | ntohs (vpn->proto), |