From 16b83475c220831a4b7adce00422604ef7bcd6e7 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Tue, 12 May 2026 19:26:00 +0900 Subject: [PATCH] recv_packet: calculate valid package sizes from struct size --- src/main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index beccd82..d132223 100644 --- a/src/main.c +++ b/src/main.c @@ -30,6 +30,10 @@ typedef struct { uint8_t _padding; } rcon_packet_t; +// Minimum and maximum values for the `size` field of a valid packet. +#define MIN_SIZE (sizeof(int32_t) * 2 + 2) +#define MAX_SIZE (sizeof(rcon_packet_t) - sizeof(int32_t)) + int read_env_int(const char *var) { const char* port_str = getenv(var); if (port_str == NULL) { @@ -125,7 +129,7 @@ int recv_packet(int sockfd, rcon_packet_t *packet) { } packet->size = le32toh(packet->size); - if (packet->size < 10 || packet->size > 4110) { + if (packet->size < (int32_t)MIN_SIZE || packet->size > (int32_t)MAX_SIZE) { fprintf(stderr, "invalid packet size: %d\n", packet->size); return -1; }