diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2011-06-20 10:18:39 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2011-06-20 10:18:39 -0400 |
commit | d537484d69c3116fd4493e8cfd663fdf80fff7ac (patch) | |
tree | f09e893638082a5217335e63fa6c03f3158b888b /packet.c | |
parent | 9f6ab53dffc25b8b958b071c7690e9edfe9a6c32 (diff) | |
download | gpsd-d537484d69c3116fd4493e8cfd663fdf80fff7ac.tar.gz |
Make JSON support a full driver to avoid a crash bug in gpsmon.
All regression tests pass.
Diffstat (limited to 'packet.c')
-rw-r--r-- | packet.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -1908,7 +1908,12 @@ void packet_parse(struct gps_packet_t *lexer) #endif #ifdef PASSTHROUGH_ENABLE else if (lexer->state == JSON_RECOGNIZED) { - packet_accept(lexer, JSON_PACKET); + size_t packetlen = lexer->inbufptr - lexer->inbuffer; + if (packetlen >= 11) + /* {"class": } */ + packet_accept(lexer, JSON_PACKET); + else + packet_accept(lexer, BAD_PACKET); packet_discard(lexer); lexer->state = GROUND_STATE; break; |