summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/btree/bt_huffman.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/btree/bt_huffman.c')
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_huffman.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/src/btree/bt_huffman.c b/src/third_party/wiredtiger/src/btree/bt_huffman.c
index d9ff9616072..a34e57796a8 100644
--- a/src/third_party/wiredtiger/src/btree/bt_huffman.c
+++ b/src/third_party/wiredtiger/src/btree/bt_huffman.c
@@ -332,11 +332,17 @@ __wt_huffman_read(WT_SESSION_IMPL *session, WT_CONFIG_ITEM *ip,
for (tp = table, lineno = 1; (ret =
fscanf(fp, "%" SCNi64 " %" SCNi64, &symbol, &frequency)) != EOF;
++tp, ++lineno) {
- if (lineno > entries)
+ /*
+ * Entries is 0-based, that is, there are (entries +1) possible
+ * values that can be configured. The line number is 1-based, so
+ * adjust the test for too many entries, and report (entries +1)
+ * in the error as the maximum possible number of entries.
+ */
+ if (lineno > entries + 1)
WT_ERR_MSG(session, EINVAL,
"Huffman table file %.*s is corrupted, "
"more than %" PRIu32 " entries",
- (int)ip->len, ip->str, entries);
+ (int)ip->len, ip->str, entries + 1);
if (ret != 2)
WT_ERR_MSG(session, EINVAL,
"line %u of Huffman table file %.*s is corrupted: "