]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
relay_msg: Use relay_cell_max_payload_size when setting maxlen
authorNick Mathewson <nickm@torproject.org>
Mon, 5 May 2025 16:24:38 +0000 (12:24 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 5 May 2025 17:07:37 +0000 (13:07 -0400)
src/core/or/relay_msg.c

index 0207f87599cfa6ae1212ccc05cd0ba58d28a1722..8d270058e4f9b23d48e2db2d272632d5f7a90bba 100644 (file)
@@ -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));