recv_packet: calculate valid package sizes from struct size

This commit was merged in pull request #9.
This commit is contained in:
2026-05-12 19:26:00 +09:00
parent ef973d9532
commit 16b83475c2
+5 -1
View File
@@ -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;
}