From: Nick Mathewson Date: Mon, 5 May 2025 16:24:38 +0000 (-0400) Subject: relay_msg: Use relay_cell_max_payload_size when setting maxlen X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6faa0350f2dfb446caa59261c5f337c33501ac2b;p=thirdparty%2Ftor.git relay_msg: Use relay_cell_max_payload_size when setting maxlen --- diff --git a/src/core/or/relay_msg.c b/src/core/or/relay_msg.c index 0207f87599..8d270058e4 100644 --- a/src/core/or/relay_msg.c +++ b/src/core/or/relay_msg.c @@ -101,7 +101,9 @@ static int encode_v0_cell(const relay_msg_t *msg, cell_t *cell_out) { - IF_BUG_ONCE(msg->length > CELL_PAYLOAD_SIZE - RELAY_HEADER_SIZE_V0) { + size_t maxlen = + relay_cell_max_payload_size(RELAY_CELL_FORMAT_V0, msg->command); + IF_BUG_ONCE(msg->length > maxlen) { return -1; } @@ -123,16 +125,12 @@ encode_v1_cell(const relay_msg_t *msg, cell_t *cell_out) { bool expects_streamid = relay_cmd_expects_streamid_in_v1(msg->command); - size_t maxlen; - if (expects_streamid) { - maxlen = CELL_PAYLOAD_SIZE - RELAY_HEADER_SIZE_V1_WITH_STREAM_ID; - } else { - maxlen = CELL_PAYLOAD_SIZE - RELAY_HEADER_SIZE_V1_NO_STREAM_ID; - } - + size_t maxlen = + relay_cell_max_payload_size(RELAY_CELL_FORMAT_V1, msg->command); IF_BUG_ONCE(msg->length > maxlen) { return -1; } + uint8_t *out = cell_out->payload; out[V1_CMD_OFFSET] = msg->command; set_uint16(out+V1_LEN_OFFSET, htons(msg->length));