summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwlestes <wlestes>2012-03-02 22:06:01 +0000
committerwlestes <wlestes>2012-03-02 22:06:01 +0000
commit984672c2af19a6da229c715a4ba1746af141d86a (patch)
treee9f6c2d911e7f86c1a2f4de664694a65cbbdc222
parent7ec606e6fc3ff83d8822ec3b3ae340319096fd14 (diff)
downloadflex-984672c2af19a6da229c715a4ba1746af141d86a.tar.gz
fix overlapping data buffer issue; patch from Tim Landsheet scfc_de
-rw-r--r--regex.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/regex.c b/regex.c
index f5b9603..e12cf65 100644
--- a/regex.c
+++ b/regex.c
@@ -55,16 +55,20 @@ void flex_regcomp(regex_t *preg, const char *regex, int cflags)
if ((err = regcomp (preg, regex, cflags)) != 0) {
const int errbuf_sz = 200;
- char * errbuf=0;
+ char *errbuf, *rxerr;
errbuf = (char*)flex_alloc(errbuf_sz *sizeof(char));
if (!errbuf)
- flexfatal(_("Unable to allocate buffer to report regcomp failed"));
- regerror (err, preg, errbuf, errbuf_sz);
- snprintf (errbuf, errbuf_sz, "regcomp failed: %s\n", errbuf);
+ flexfatal(_("Unable to allocate buffer to report regcomp"));
+ rxerr = (char*)flex_alloc(errbuf_sz *sizeof(char));
+ if (!rxerr)
+ flexfatal(_("Unable to allocate buffer for regerror"));
+ regerror (err, preg, rxerr, errbuf_sz);
+ snprintf (errbuf, errbuf_sz, "regcomp for \"%s\" failed: %s", regex, rxerr);
flexfatal (errbuf);
free(errbuf);
+ free(rxerr);
}
}