[PATCH] libsanitizer: Fix setbuffer() interceptor (accept size not mode)

Azat Khuzhin a3at.mail@gmail.com
Wed Dec 22 20:45:07 GMT 2021


On Wed, Dec 22, 2021 at 09:41:06PM +0100, Bernhard Reutner-Fischer wrote:
> On 22 December 2021 19:19:12 CET, Azat Khuzhin via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> >Fixes: b667dd7017a ("Libsanitizer merge from trunk r368656.")
> >Refs: https://reviews.llvm.org/D116176
> >---
> > .../sanitizer_common/sanitizer_common_interceptors.inc     | 7 ++++---
> > 1 file changed, 4 insertions(+), 3 deletions(-)
> >
> >diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
> >index abb38ccfa15..60b0545a943 100644
> >--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
> >+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
> >@@ -7858,12 +7858,13 @@ INTERCEPTOR(void, setbuf, __sanitizer_FILE *stream, char *buf) {
> >       unpoison_file(stream);
> > }
> > 
> >-INTERCEPTOR(void, setbuffer, __sanitizer_FILE *stream, char *buf, int mode) {
> >+INTERCEPTOR(void, setbuffer, __sanitizer_FILE *stream, char *buf,
> >+  SIZE_T size) {
> >   void *ctx;
> >-  COMMON_INTERCEPTOR_ENTER(ctx, setbuffer, stream, buf, mode);
> >+  COMMON_INTERCEPTOR_ENTER(ctx, setbuffer, stream, buf, size);
> >   REAL(setbuffer)(stream, buf, mode);
> 
> Where does mode come from after this patch?

setbuffer() does not accept mode, it simply do not change it.
Only setvbuf() can change the mode.

> thanks,
> 
> >   if (buf) {
> >-    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, __sanitizer_bufsiz);
> >+    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, size);
> >   }
> >   if (stream)
> >     unpoison_file(stream);
> 


More information about the Gcc-patches mailing list