recv_packet: calculate valid package sizes from struct size
This commit was merged in pull request #9.
This commit is contained in:
+5
-1
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user