diff --git a/minmea.c b/minmea.c index a77dc2c..e73832e 100644 --- a/minmea.c +++ b/minmea.c @@ -79,8 +79,13 @@ bool minmea_check(const char *sentence, bool strict) } // The only stuff allowed at this point is a newline. - if (*sentence && strcmp(sentence, "\n") && strcmp(sentence, "\r\n")) + while (*sentence == '\r' || *sentence == '\n') { + sentence++; + } + + if (*sentence) { return false; + } return true; } diff --git a/tests.c b/tests.c index 1c8e92f..957fef8 100644 --- a/tests.c +++ b/tests.c @@ -18,6 +18,11 @@ static const char *valid_sentences_nochecksum[] = { "$GPTXT,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "$GPTXT,hello\n", + "$GPTXT,hello\r", + "$GPTXT,hello\r\n", + "$GPTXT,hello\r\n\r\n", + "$GPTXT,hello\n\r\r\n", NULL, }; @@ -56,6 +61,9 @@ static const char *invalid_sentences[] = { "gps: $GPGLL,,,,,,V,N", "$GPXTE,A,A,0.67,L,N*6e", "$GPXTE,A,A,0.67,L,N*6g", + "$GPTXT,hello\n ", + "$GPTXT,hello\r*24", + "$GPTXT,hello\r\n$", NULL, };