diff options
author | Reinhard Arlt <reinhard.arlt@t-online.de> | 2015-02-16 15:06:20 +0100 |
---|---|---|
committer | Reinhard Arlt <reinhard.arlt@t-online.de> | 2015-02-16 15:06:20 +0100 |
commit | cba7e5ad33368e5e77ccc487e81f1f0148d32dc7 (patch) | |
tree | 5e254a47585229e3835bc045c0b0cac9cdc87358 /pseudonmea.c | |
parent | 7e15f0cbf72a5710195e0d717d528c1ae9ed585e (diff) | |
download | gpsd-cba7e5ad33368e5e77ccc487e81f1f0148d32dc7.tar.gz |
Fix bug in type24 msg in pseudoais.c .
Diffstat (limited to 'pseudonmea.c')
-rw-r--r-- | pseudonmea.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/pseudonmea.c b/pseudonmea.c index 8e83b417..96c80b79 100644 --- a/pseudonmea.c +++ b/pseudonmea.c @@ -334,7 +334,7 @@ static void gpsd_binary_ais_dump(struct gps_device_t *session, } offset = (unsigned int) strlen(bufp); } - } else { + } else if (datalen > 0) { msg1 = 1; msg2 = 1; numc[0] = '\0'; @@ -359,18 +359,20 @@ static void gpsd_binary_ais_dump(struct gps_device_t *session, memset(data, 0, sizeof(data)); datalen = ais_binary_encode(&session->gpsdata.ais, &data[0], 1); - left = GETLEFT(datalen); - offset = (unsigned int)strlen(bufp); - (void)snprintf(&bufp[offset], len-offset, - "%s,%u,%u,%s,%c,%s,%u", - type, - msg1, - msg2, - numc, - channel, - (char *)data, - left); + if (datalen > 0) { + left = GETLEFT(datalen); + offset = (unsigned int)strlen(bufp); + (void)snprintf(&bufp[offset], len-offset, + "%s,%u,%u,%s,%c,%s,%u", + type, + msg1, + msg2, + numc, + channel, + (char *)data, + left); nmea_add_checksum(bufp+offset); + } } } #endif /* AIVDM_ENABLE */ |