pud: nmealib: fix buffer overrun
authorFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 22 Oct 2012 10:07:54 +0000 (12:07 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 22 Oct 2012 11:55:39 +0000 (13:55 +0200)
Coverity:
CID 739668 (#1 of 1): Out-of-bounds write (OVERRUN)
At (10): Overrunning array of 64 bytes at byte offset 64 by dereferencing
         pointer "psSatPrn".

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/pud/nmealib/src/generate.c

index f1789b6..1d641aa 100644 (file)
@@ -99,13 +99,13 @@ int nmea_gen_GPGSA(char *s, const int len, const nmeaGPGSA *pack) {
        int i;
        char sFixMode[2];
        char sFixType[2];
-       char sSatPrn[64];
+       char sSatPrn[(NMEA_MAXSAT * 4) + 1];
        char sPdop[16];
        char sHdop[16];
        char sVdop[16];
 
        char * psSatPrn = &sSatPrn[0];
-       int ssSatPrn = sizeof(sSatPrn);
+       int ssSatPrn = sizeof(sSatPrn) - 1;
 
        bool satinuse = nmea_INFO_is_present(pack->present, SATINUSE);