diff --git a/mode_s.c b/mode_s.c index 3c50d87..6510c25 100644 --- a/mode_s.c +++ b/mode_s.c @@ -333,6 +333,7 @@ int scoreModesMessage(unsigned char *msg, int validbits) int msgtype, msgbits, crc, iid; uint32_t addr; struct errorinfo *ei; + static unsigned char all_zeros[14] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; if (validbits < 56) return -2; @@ -343,6 +344,9 @@ int scoreModesMessage(unsigned char *msg, int validbits) if (validbits < msgbits) return -2; + if (!memcmp(all_zeros, msg, msgbits/8)) + return -2; + crc = modesChecksum(msg, msgbits); switch (msgtype) {