summaryrefslogtreecommitdiff
path: root/driver_nmea.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2010-05-08 06:55:59 -0400
committerEric S. Raymond <esr@thyrsus.com>2010-05-08 06:55:59 -0400
commita459a1f1e140aa260caaf18f42d348264290ebeb (patch)
treefae197d9ae1a52a2e00e3596b664a371dd1ebf65 /driver_nmea.c
parentb9f00506a7c07d9b5baa3f97764c5724c3080d4d (diff)
downloadgpsd-a459a1f1e140aa260caaf18f42d348264290ebeb.tar.gz
Make packet sniffer pass packets with bad checksums with type BAD_PACKET.
Such packets used to be truncated to zero length with the packet type matched before the checksum was bad. This caused confusion at various points in the code that were checking for zero-length packets. All regression tests pass, both in pty and UDP modes.
Diffstat (limited to 'driver_nmea.c')
-rw-r--r--driver_nmea.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/driver_nmea.c b/driver_nmea.c
index 870b4858..1a5b3683 100644
--- a/driver_nmea.c
+++ b/driver_nmea.c
@@ -469,14 +469,14 @@ static gps_mask_t processGPGSV(int count, char *field[],
if (count <= 3) {
gpsd_zero_satellites(&session->gpsdata);
session->gpsdata.satellites_visible = 0;
- return ERROR_IS;
+ return 0;
}
if (count % 4 != 0) {
gpsd_report(LOG_WARN, "malformed GPGSV - fieldcount %d %% 4 != 0\n",
count);
gpsd_zero_satellites(&session->gpsdata);
session->gpsdata.satellites_visible = 0;
- return ERROR_IS;
+ return 0;
}
session->driver.nmea.await = atoi(field[1]);
@@ -519,7 +519,7 @@ static gps_mask_t processGPGSV(int count, char *field[],
if (session->driver.nmea.part < session->driver.nmea.await) {
gpsd_report(LOG_PROG, "Partial satellite data (%d of %d).\n",
session->driver.nmea.part, session->driver.nmea.await);
- return ERROR_IS;
+ return 0;
}
/*
* This sanity check catches an odd behavior of SiRFstarII receivers.
@@ -535,7 +535,7 @@ static gps_mask_t processGPGSV(int count, char *field[],
gpsd_report(LOG_WARN, "Satellite data no good (%d of %d).\n",
session->driver.nmea.part, session->driver.nmea.await);
gpsd_zero_satellites(&session->gpsdata);
- return ERROR_IS;
+ return 0;
sane:
session->gpsdata.skyview_time = NAN;
gpsd_report(LOG_DATA, "GSV: Satellite data OK (%d of %d).\n",