From: Bram Moolenaar Date: Sun, 26 Feb 2017 14:27:23 +0000 (+0100) Subject: patch 8.0.0376: size computations in spell file reading are off X-Git-Tag: v8.0.0376 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d3c8586fc81b022e9f06c611b9926108fb878c7;p=vim patch 8.0.0376: size computations in spell file reading are off Problem: Size computations in spell file reading are not exactly right. Solution: Make "len" a "long" and check with LONG_MAX. --- diff --git a/src/spellfile.c b/src/spellfile.c index 8b1a3a633..00ef019a6 100644 --- a/src/spellfile.c +++ b/src/spellfile.c @@ -1585,7 +1585,7 @@ spell_read_tree( int prefixtree, /* TRUE for the prefix tree */ int prefixcnt) /* when "prefixtree" is TRUE: prefix count */ { - int len; + long len; int idx; char_u *bp; idx_T *ip; @@ -1595,7 +1595,7 @@ spell_read_tree( len = get4c(fd); if (len < 0) return SP_TRUNCERROR; - if (len >= 0x3ffffff) + if (len >= LONG_MAX / (long)sizeof(int)) /* Invalid length, multiply with sizeof(int) would overflow. */ return SP_FORMERROR; if (len > 0) diff --git a/src/version.c b/src/version.c index 58ece754d..8d1454197 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 376, /**/ 375, /**/