Improve the regerror(3) interceptor

The res returned value might differ with REAL(strlen)(errbuf) + 1,
as the buffer's value is limited with errbuf_size.

Hot fix for D54584.

llvm-svn: 348231
This commit is contained in:
Kamil Rytarowski 2018-12-04 02:18:18 +00:00
parent b393a516fb
commit 9d62f4db78
1 changed files with 2 additions and 2 deletions

View File

@ -7398,8 +7398,8 @@ INTERCEPTOR(SIZE_T, regerror, int errcode, const void *preg, char *errbuf,
if (preg)
COMMON_INTERCEPTOR_READ_RANGE(ctx, preg, struct_regex_sz);
SIZE_T res = REAL(regerror)(errcode, preg, errbuf, errbuf_size);
if (errbuf && res > 0)
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, errbuf, res);
if (errbuf)
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, errbuf, REAL(strlen)(errbuf) + 1);
return res;
}
INTERCEPTOR(void, regfree, const void *preg) {