From bc3d776dd38651fae221a06a198d427d28693673 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Sun, 6 Nov 2022 22:32:17 +0900 Subject: IPC: Convert all message payload lengths to uint16_t types. --- src/namestore/gnunet-service-namestore.c | 25 ++++++------ src/namestore/namestore.h | 66 ++++++++++++++------------------ src/namestore/namestore_api.c | 38 +++++++++--------- src/namestore/namestore_api_monitor.c | 6 +-- 4 files changed, 63 insertions(+), 72 deletions(-) (limited to 'src/namestore') diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c index 9173d2e4d..a9ce9e3a1 100644 --- a/src/namestore/gnunet-service-namestore.c +++ b/src/namestore/gnunet-service-namestore.c @@ -787,7 +787,7 @@ send_lookup_response_with_filter (struct NamestoreClient *nc, zir_msg->name_len = htons (name_len); zir_msg->rd_count = htons (res_count); zir_msg->rd_len = htons ((uint16_t) rd_ser_len); - zir_msg->key_len = htonl (key_len); + zir_msg->key_len = htons (key_len); GNUNET_IDENTITY_write_private_key_to_buffer (zone_key, &zir_msg[1], key_len); @@ -1317,8 +1317,8 @@ check_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) size_t key_len; (void) cls; - name_len = ntohl (ll_msg->label_len); - key_len = ntohl (ll_msg->key_len); + name_len = ntohs (ll_msg->label_len); + key_len = ntohs (ll_msg->key_len); src_size = ntohs (ll_msg->gns_header.header.size); if (name_len + key_len != src_size - sizeof(struct LabelLookupMessage)) { @@ -1351,7 +1351,7 @@ handle_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) size_t key_len; size_t kb_read; - key_len = ntohl (ll_msg->key_len); + key_len = ntohs (ll_msg->key_len); if ((GNUNET_SYSERR == GNUNET_IDENTITY_read_private_key_from_buffer (&ll_msg[1], key_len, @@ -1389,7 +1389,7 @@ handle_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) rlc.res_rd = NULL; rlc.rd_ser_len = 0; rlc.nick = get_nick_record (&zone); - if (GNUNET_YES != ntohl (ll_msg->is_edit_request)) + if (GNUNET_YES != ntohs (ll_msg->is_edit_request)) res = nc->GSN_database->lookup_records (nc->GSN_database->cls, &zone, conv_name, @@ -1412,6 +1412,7 @@ handle_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) llr_msg->name_len = htons (name_len); llr_msg->rd_count = htons (rlc.res_rd_count); llr_msg->rd_len = htons (rlc.rd_ser_len); + llr_msg->reserved = htons (0); res_name = ((char *) &llr_msg[1]) + key_len; if (GNUNET_YES == rlc.found) llr_msg->found = htons (GNUNET_YES); @@ -1446,7 +1447,7 @@ check_record_store (void *cls, const struct RecordStoreMessage *rp_msg) (void) cls; msg_size = ntohs (rp_msg->gns_header.header.size); rd_set_count = ntohs (rp_msg->rd_set_count); - key_len = ntohl (rp_msg->key_len); + key_len = ntohs (rp_msg->key_len); min_size_exp = sizeof(*rp_msg) + key_len + sizeof (struct RecordSet) * rd_set_count; @@ -1739,7 +1740,7 @@ handle_record_store (void *cls, const struct RecordStoreMessage *rp_msg) struct RecordSet *rs; enum GNUNET_ErrorCode res; - key_len = ntohl (rp_msg->key_len); + key_len = ntohs (rp_msg->key_len); if ((GNUNET_SYSERR == GNUNET_IDENTITY_read_private_key_from_buffer (&rp_msg[1], key_len, @@ -1993,7 +1994,7 @@ handle_zone_to_name_it (void *cls, ztnr_msg->rd_len = htons (rd_ser_len); ztnr_msg->rd_count = htons (rd_count); ztnr_msg->name_len = htons (name_len); - ztnr_msg->key_len = htonl (key_len); + ztnr_msg->key_len = htons (key_len); GNUNET_IDENTITY_write_private_key_to_buffer (zone_key, &ztnr_msg[1], key_len); @@ -2038,7 +2039,7 @@ handle_zone_to_name (void *cls, const struct ZoneToNameMessage *ztn_msg) ztn_ctx.rid = ntohl (ztn_msg->gns_header.r_id); ztn_ctx.nc = nc; ztn_ctx.ec = GNUNET_EC_NAMESTORE_ZONE_NOT_FOUND; - key_len = ntohl (ztn_msg->key_len); + key_len = ntohs (ztn_msg->key_len); if ((GNUNET_SYSERR == GNUNET_IDENTITY_read_private_key_from_buffer (&ztn_msg[1], key_len, @@ -2052,7 +2053,7 @@ handle_zone_to_name (void *cls, const struct ZoneToNameMessage *ztn_msg) GNUNET_break (0); return; } - pkey_len = ntohl (ztn_msg->pkey_len); + pkey_len = ntohs (ztn_msg->pkey_len); if ((GNUNET_SYSERR == GNUNET_IDENTITY_read_public_key_from_buffer ((char*) &ztn_msg[1] + key_len, @@ -2259,7 +2260,7 @@ handle_iteration_start (void *cls, GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received ZONE_ITERATION_START message\n"); - key_len = ntohl (zis_msg->key_len); + key_len = ntohs (zis_msg->key_len); zi = GNUNET_new (struct ZoneIteration); if (0 < key_len) { @@ -2512,7 +2513,7 @@ handle_monitor_start (void *cls, const struct "Received ZONE_MONITOR_START message\n"); zm = GNUNET_new (struct ZoneMonitor); zm->nc = nc; - key_len = ntohl (zis_msg->key_len); + key_len = ntohs (zis_msg->key_len); if (0 < key_len) { if ((GNUNET_SYSERR == diff --git a/src/namestore/namestore.h b/src/namestore/namestore.h index 0b50ac1ab..35d54d317 100644 --- a/src/namestore/namestore.h +++ b/src/namestore/namestore.h @@ -98,7 +98,7 @@ struct RecordStoreMessage /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /** * Followed by the private zone key @@ -138,12 +138,12 @@ struct LabelLookupMessage /** * Length of the name */ - uint32_t label_len GNUNET_PACKED; + uint16_t label_len GNUNET_PACKED; /** * GNUNET_YES if this lookup corresponds to an edit request */ - uint32_t is_edit_request GNUNET_PACKED; + uint16_t is_edit_request GNUNET_PACKED; /** * The record filter @@ -153,7 +153,7 @@ struct LabelLookupMessage /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /* followed by: * the private zone key @@ -193,10 +193,15 @@ struct LabelLookupResponseMessage */ int16_t found GNUNET_PACKED; + /** + * Reserved (alignment) + */ + uint16_t reserved GNUNET_PACKED; + /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /* followed by: * the private zone key @@ -219,12 +224,12 @@ struct ZoneToNameMessage /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /** * Length of the public value zone key */ - uint32_t pkey_len GNUNET_PACKED; + uint16_t pkey_len GNUNET_PACKED; /** * Followed by @@ -244,6 +249,14 @@ struct ZoneToNameResponseMessage */ struct GNUNET_NAMESTORE_Header gns_header; + /** + * result in NBO: #GNUNET_EC_NONE on success, + * #GNUNET_EC_NAMESTORE_NO_RESULTS if there were no + * results. + * Other error messages on error. + */ + int32_t ec GNUNET_PACKED; + /** * Length of the name */ @@ -259,18 +272,10 @@ struct ZoneToNameResponseMessage */ uint16_t rd_count GNUNET_PACKED; - /** - * result in NBO: #GNUNET_EC_NONE on success, - * #GNUNET_EC_NAMESTORE_NO_RESULTS if there were no - * results. - * Other error messages on error. - */ - int32_t ec GNUNET_PACKED; - /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /* followed by: * the private zone key @@ -311,15 +316,10 @@ struct RecordResultMessage */ uint16_t rd_count GNUNET_PACKED; - /** - * always zero (for alignment) - */ - uint16_t reserved GNUNET_PACKED; - /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /* followed by: * the private key of the authority @@ -339,14 +339,14 @@ struct TxControlMessage struct GNUNET_NAMESTORE_Header gns_header; /** - * The type of control message to send + * always zero (for alignment) */ - uint16_t control GNUNET_PACKED; + uint16_t reserved GNUNET_PACKED; /** - * always zero (for alignment) + * The type of control message to send */ - uint16_t reserved GNUNET_PACKED; + uint16_t control GNUNET_PACKED; }; @@ -391,15 +391,10 @@ struct ZoneMonitorStartMessage */ uint16_t filter; - /** - * Reserved for alignment - */ - uint16_t reserved; - /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /** * Followed by the private zone key. @@ -447,15 +442,10 @@ struct ZoneIterationStartMessage */ uint16_t filter; - /** - * Reserved for alignment - */ - uint16_t reserved; - /** * Length of the zone key */ - uint32_t key_len GNUNET_PACKED; + uint16_t key_len GNUNET_PACKED; /** * Followed by the private zone key (optional) diff --git a/src/namestore/namestore_api.c b/src/namestore/namestore_api.c index e020b9e42..8deded9c0 100644 --- a/src/namestore/namestore_api.c +++ b/src/namestore/namestore_api.c @@ -407,8 +407,13 @@ check_lookup_result (void *cls, const struct LabelLookupResponseMessage *msg) rd_len = ntohs (msg->rd_len); msg_len = ntohs (msg->gns_header.header.size); name_len = ntohs (msg->name_len); - key_len = ntohl (msg->key_len); + key_len = ntohs (msg->key_len); exp_msg_len = sizeof(*msg) + name_len + rd_len + key_len; + if (0 != ntohs (msg->reserved)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } if (msg_len != exp_msg_len) { GNUNET_break (0); @@ -463,7 +468,7 @@ handle_lookup_result (void *cls, const struct LabelLookupResponseMessage *msg) rd_len = ntohs (msg->rd_len); rd_count = ntohs (msg->rd_count); name_len = ntohs (msg->name_len); - key_len = ntohl (msg->key_len); + key_len = ntohs (msg->key_len); GNUNET_assert (GNUNET_SYSERR != GNUNET_IDENTITY_read_private_key_from_buffer (&msg[1], key_len, @@ -527,13 +532,8 @@ check_record_result (void *cls, const struct RecordResultMessage *msg) (void) cls; rd_len = ntohs (msg->rd_len); msg_len = ntohs (msg->gns_header.header.size); - key_len = ntohl (msg->key_len); + key_len = ntohs (msg->key_len); name_len = ntohs (msg->name_len); - if (0 != ntohs (msg->reserved)) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } if (msg_len != sizeof(struct RecordResultMessage) + key_len + name_len + rd_len) { @@ -581,7 +581,7 @@ handle_record_result (void *cls, const struct RecordResultMessage *msg) rd_len = ntohs (msg->rd_len); rd_count = ntohs (msg->rd_count); name_len = ntohs (msg->name_len); - key_len = ntohl (msg->key_len); + key_len = ntohs (msg->key_len); ze = find_zi (h, ntohl (msg->gns_header.r_id)); qe = find_qe (h, ntohl (msg->gns_header.r_id)); if ((NULL == ze) && (NULL == qe)) @@ -710,7 +710,7 @@ check_zone_to_name_response (void *cls, (void) cls; if (GNUNET_EC_NONE != ntohl (msg->ec)) return GNUNET_OK; - key_len = ntohl (msg->key_len); + key_len = ntohs (msg->key_len); name_len = ntohs (msg->name_len); rd_ser_len = ntohs (msg->rd_len); if (ntohs (msg->gns_header.header.size) != @@ -762,7 +762,7 @@ handle_zone_to_name_response (void *cls, return; } res = ntohl (msg->ec); - key_len = ntohl (msg->key_len); + key_len = ntohs (msg->key_len); GNUNET_assert (GNUNET_SYSERR != GNUNET_IDENTITY_read_private_key_from_buffer (&msg[1], key_len, @@ -1140,7 +1140,7 @@ GNUNET_NAMESTORE_records_store2 ( GNUNET_assert (NULL != msg); GNUNET_assert (NULL != env); msg->gns_header.r_id = htonl (rid); - msg->key_len = htonl (key_len); + msg->key_len = htons (key_len); msg->rd_set_count = htons ((uint16_t) (*rds_sent)); GNUNET_IDENTITY_write_private_key_to_buffer (pkey, &msg[1], @@ -1230,9 +1230,9 @@ records_lookup ( &msg[1], key_len); - msg->key_len = htonl (key_len); - msg->is_edit_request = htonl (is_edit_request); - msg->label_len = htonl (label_len); + msg->key_len = htons (key_len); + msg->is_edit_request = htons (is_edit_request); + msg->label_len = htons (label_len); msg->filter = htons (filter); GNUNET_memcpy (((char*) &msg[1]) + key_len, label, label_len); if (NULL == h->mq) @@ -1323,8 +1323,8 @@ GNUNET_NAMESTORE_zone_to_name ( env = GNUNET_MQ_msg_extra (msg, key_len + pkey_len, GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_TO_NAME); msg->gns_header.r_id = htonl (rid); - msg->key_len = htonl (key_len); - msg->pkey_len = htonl (pkey_len); + msg->key_len = htons (key_len); + msg->pkey_len = htons (pkey_len); GNUNET_IDENTITY_write_private_key_to_buffer (zone, &msg[1], key_len); GNUNET_IDENTITY_write_public_key_to_buffer (value_zone, (char*) &msg[1] + key_len, @@ -1375,7 +1375,7 @@ GNUNET_NAMESTORE_zone_iteration_start ( key_len, GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_START); msg->gns_header.r_id = htonl (rid); - msg->key_len = htonl (key_len); + msg->key_len = htons (key_len); if (NULL != zone) GNUNET_IDENTITY_write_private_key_to_buffer (zone, &msg[1], key_len); if (NULL == h->mq) @@ -1424,7 +1424,7 @@ GNUNET_NAMESTORE_zone_iteration_start2 ( key_len, GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_START); msg->gns_header.r_id = htonl (rid); - msg->key_len = htonl (key_len); + msg->key_len = htons (key_len); msg->filter = htons ((uint16_t) filter); if (NULL != zone) GNUNET_IDENTITY_write_private_key_to_buffer (zone, &msg[1], key_len); diff --git a/src/namestore/namestore_api_monitor.c b/src/namestore/namestore_api_monitor.c index 81ea41f7d..199aec608 100644 --- a/src/namestore/namestore_api_monitor.c +++ b/src/namestore/namestore_api_monitor.c @@ -154,7 +154,7 @@ check_result (void *cls, const struct RecordResultMessage *lrm) size_t key_len; (void) zm; - key_len = ntohl (lrm->key_len); + key_len = ntohs (lrm->key_len); (void) cls; if (0 == key_len) { @@ -222,7 +222,7 @@ handle_result (void *cls, const struct RecordResultMessage *lrm) const char *name_tmp; const char *rd_ser_tmp; - key_len = ntohl (lrm->key_len); + key_len = ntohs (lrm->key_len); rd_len = ntohs (lrm->rd_len); rd_count = ntohs (lrm->rd_count); name_len = ntohs (lrm->name_len); @@ -308,7 +308,7 @@ reconnect (struct GNUNET_NAMESTORE_ZoneMonitor *zm) GNUNET_IDENTITY_write_private_key_to_buffer (&zm->zone, &sm[1], zm->key_len); - sm->key_len = htonl (zm->key_len); + sm->key_len = htons (zm->key_len); sm->filter = htons (zm->filter); GNUNET_MQ_send (zm->mq, env); } -- cgit v1.2.3