diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2010-05-08 06:55:59 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2010-05-08 06:55:59 -0400 |
commit | a459a1f1e140aa260caaf18f42d348264290ebeb (patch) | |
tree | fae197d9ae1a52a2e00e3596b664a371dd1ebf65 /driver_nmea.c | |
parent | b9f00506a7c07d9b5baa3f97764c5724c3080d4d (diff) | |
download | gpsd-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.c | 8 |
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", |