diff --git a/src/ip.h b/src/ip.h index d636148..791bc74 100644 --- a/src/ip.h +++ b/src/ip.h @@ -27,7 +27,7 @@ ip_read16(const uint8_t *src) } static inline uint8_t -ip_get_version(const uint8_t *data) +ip_get_version(const uint8_t *data, int size) { if (size < 20) return 0; @@ -38,7 +38,7 @@ ip_get_version(const uint8_t *data) static inline int ip_is_valid(const uint8_t *data, int size) { - switch (ip_get_version(data)) { + switch (ip_get_version(data, size)) { case 4: return size == ip_read16(&data[2]); case 6: return size == ip_read16(&data[4]) + 40; } @@ -49,7 +49,7 @@ ip_is_valid(const uint8_t *data, int size) static inline int ip_get_common(struct ip_common *ic, const uint8_t *data, int size) { - switch (ip_get_version(data)) { + switch (ip_get_version(data, size)) { case 4: ic->tc = data[1]; ic->proto = data[9];