From 75677f69153b221da611568be7f578b9e99c5876 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 4 Aug 2018 13:16:51 -0400 Subject: Reject AIVDM armoring containing non-ASCII characters; that would have to be wrong. --- drivers.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'drivers.c') diff --git a/drivers.c b/drivers.c index 85fbad91..7bb6909c 100644 --- a/drivers.c +++ b/drivers.c @@ -1406,6 +1406,15 @@ static bool aivdm_decode(const char *buf, size_t buflen, return false; } + /* discard sentences with high-half characters in them, they're corrupted */ + for (cp = buf; *cp; cp++) { + if (!isascii(*cp)) { + gpsd_log(&session->context->errout, LOG_ERROR, + "corrupted AIVDM packet.\n"); + return false; + } + } + /* extract packet fields */ (void)strlcpy((char *)fieldcopy, buf, sizeof(fieldcopy)); field[nfields++] = (unsigned char *)buf; -- cgit v1.2.1