diff options
Diffstat (limited to 'ext/ereg/regex/regerror.c')
-rw-r--r-- | ext/ereg/regex/regerror.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/ereg/regex/regerror.c b/ext/ereg/regex/regerror.c index 1c66d4114e..7bf741967d 100644 --- a/ext/ereg/regex/regerror.c +++ b/ext/ereg/regex/regerror.c @@ -82,10 +82,12 @@ size_t errbuf_size) break; if (errcode®_ITOA) { - if (r->code >= 0) - (void) strncpy(convbuf, r->name, 50); - else + if (r->code >= 0) { + (void) strncpy(convbuf, r->name, sizeof(convbuf) - 1); + convbuf[sizeof(convbuf) - 1] = '\0'; + } else { snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target); + } assert(strlen(convbuf) < sizeof(convbuf)); s = convbuf; } else |