summaryrefslogtreecommitdiff
path: root/nmea_parse.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-05-20 22:37:19 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-05-20 22:37:19 +0000
commitf6b2208a91f4f1a0524d65e6be755196d5b3d85d (patch)
treeadb289d6ff4313d1f4131901b5f8ac103ad175f3 /nmea_parse.c
parentb9a9b52cffbc242fb0b9bed7bbbe9edb235edcc8 (diff)
downloadgpsd-f6b2208a91f4f1a0524d65e6be755196d5b3d85d.tar.gz
Head off the too-many-satellites error.
Diffstat (limited to 'nmea_parse.c')
-rw-r--r--nmea_parse.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/nmea_parse.c b/nmea_parse.c
index ddba4531..3e6baf13 100644
--- a/nmea_parse.c
+++ b/nmea_parse.c
@@ -349,6 +349,11 @@ static int processGPGSV(int count, char *field[], struct gps_data_t *out)
gpsd_zero_satellites(out);
for (fldnum = 4; fldnum < count; ) {
+ if (out->satellites >= MAXCHANNELS) {
+ gpsd_report(0, "internal error - too many satellites!\n");
+ gpsd_zero_satellites(out);
+ break;
+ }
out->PRN[out->satellites] = atoi(field[fldnum++]);
out->elevation[out->satellites] = atoi(field[fldnum++]);
out->azimuth[out->satellites] = atoi(field[fldnum++]);