diff options
author | wlestes <wlestes> | 2012-03-02 22:06:01 +0000 |
---|---|---|
committer | wlestes <wlestes> | 2012-03-02 22:06:01 +0000 |
commit | 984672c2af19a6da229c715a4ba1746af141d86a (patch) | |
tree | e9f6c2d911e7f86c1a2f4de664694a65cbbdc222 | |
parent | 7ec606e6fc3ff83d8822ec3b3ae340319096fd14 (diff) | |
download | flex-984672c2af19a6da229c715a4ba1746af141d86a.tar.gz |
fix overlapping data buffer issue; patch from Tim Landsheet scfc_de
-rw-r--r-- | regex.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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); } } |