From 984672c2af19a6da229c715a4ba1746af141d86a Mon Sep 17 00:00:00 2001 From: wlestes Date: Fri, 2 Mar 2012 22:06:01 +0000 Subject: fix overlapping data buffer issue; patch from Tim Landsheet scfc_de --- regex.c | 12 ++++++++---- 1 file 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); } } -- cgit v1.2.1