Dict: fix out-of-bounds for long terms
[idzebra-moved-to-github.git] / dict / lookgrep.c
index fba076f..f480029 100644 (file)
@@ -19,6 +19,9 @@
 
 
 
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
@@ -409,7 +412,7 @@ int dict_lookup_grep(Dict dict, const char *pattern, int range, void *client,
 
     mc = mk_MatchContext(dfa, range);
 
-    Rj = (MatchWord *) xcalloc((MAX_LENGTH+1) * mc->n, sizeof(*Rj));
+    Rj = (MatchWord *) xcalloc((MAX_LENGTH+2) * mc->fact, sizeof(*Rj));
 
     set_bit (mc, Rj, 0, 0);
     for (d = 1; d<=mc->range; d++)