]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Fix stack buffer overflow in HUF_readCTable()
authorNick Terrell <terrelln@fb.com>
Tue, 18 Oct 2016 01:16:57 +0000 (18:16 -0700)
committerNick Terrell <terrelln@fb.com>
Tue, 18 Oct 2016 01:16:59 +0000 (18:16 -0700)
If `w ==0` on line 153, then `CTable[n].nbBits == tableLog + 1`.
Then `nbPerRank[CTable[n].nbBits]` and `valPerRank[CTable[n].nbBits]`
are stack buffer overflows.

lib/compress/huf_compress.c

index b7d3d77a2413ae3c1973445df2edf7fbf55613ef..41de7449af712d8003c1c140dcb403584fb4afff 100644 (file)
@@ -155,8 +155,8 @@ size_t HUF_readCTable (HUF_CElt* CTable, U32 maxSymbolValue, const void* src, si
     }   }
 
     /* fill val */
-    {   U16 nbPerRank[HUF_TABLELOG_MAX+1] = {0};
-        U16 valPerRank[HUF_TABLELOG_MAX+1] = {0};
+    {   U16 nbPerRank[HUF_TABLELOG_MAX+2] = {0};
+        U16 valPerRank[HUF_TABLELOG_MAX+2] = {0};
         { U32 n; for (n=0; n<nbSymbols; n++) nbPerRank[CTable[n].nbBits]++; }
         /* determine stating value per rank */
         {   U16 min = 0;