diff --git a/mode_s.c b/mode_s.c index 606ddf7..e8387a1 100644 --- a/mode_s.c +++ b/mode_s.c @@ -681,12 +681,12 @@ int decodeModesMessage(struct modesMessage *mm, unsigned char *msg) mm->airground = AG_UNCERTAIN; } - if (!mm->correctedbits && (mm->msgtype == 17 || mm->msgtype == 18 || (mm->msgtype == 11 && mm->IID == 0))) { - // No CRC errors seen, and either it was an DF17/18 extended squitter + if (!mm->correctedbits && (mm->msgtype == 17 || (mm->msgtype == 11 && mm->IID == 0))) { + // No CRC errors seen, and either it was an DF17 extended squitter // or a DF11 acquisition squitter with II = 0. We probably have the right address. - // We wait until here to do this as we may have needed to decode an ES to note - // the type of address in DF18 messages. + // Don't do this for DF18, as a DF18 transmitter doesn't necessarily have a + // Mode S transponder. // NB this is the only place that adds addresses! icaoFilterAdd(mm->addr); diff --git a/net_io.c b/net_io.c index 5148b6a..3bc2f85 100644 --- a/net_io.c +++ b/net_io.c @@ -1380,7 +1380,7 @@ char *generateAircraftJson(const char *url_path, int *len) { 10 * log10((a->signalLevel[0] + a->signalLevel[1] + a->signalLevel[2] + a->signalLevel[3] + a->signalLevel[4] + a->signalLevel[5] + a->signalLevel[6] + a->signalLevel[7] + 1e-5) / 8)); - if (p >= end) { + if ((p + 10) >= end) { // +10 to leave some space for the final line // overran the buffer int used = line_start - buf; buflen *= 2;