[compiler-rt] 856550c - [Sanitizer] Fix setbuffer() interceptor (it accept size, not mode)

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 22 22:13:49 PST 2021


Author: Azat Khuzhin
Date: 2021-12-22T22:13:36-08:00
New Revision: 856550ca79ba558fe776adc8777a4b7264b66dc8

URL: https://github.com/llvm/llvm-project/commit/856550ca79ba558fe776adc8777a4b7264b66dc8
DIFF: https://github.com/llvm/llvm-project/commit/856550ca79ba558fe776adc8777a4b7264b66dc8.diff

LOG: [Sanitizer] Fix setbuffer() interceptor (it accept size, not mode)

Fixes: 0c81a62d9d76 ("[Sanitizer] Adding setvbuf in supported platforms and other stream buffer functions")

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D116176

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
    compiler-rt/test/sanitizer_common/TestCases/Posix/setvbuf.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
index d219734fa0a3..b0ab08dff1db 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -7857,12 +7857,12 @@ 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);
-  REAL(setbuffer)(stream, buf, mode);
+  COMMON_INTERCEPTOR_ENTER(ctx, setbuffer, stream, buf, size);
+  REAL(setbuffer)(stream, buf, size);
   if (buf) {
-    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, __sanitizer_bufsiz);
+    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, size);
   }
   if (stream)
     unpoison_file(stream);

diff  --git a/compiler-rt/test/sanitizer_common/TestCases/Posix/setvbuf.cpp b/compiler-rt/test/sanitizer_common/TestCases/Posix/setvbuf.cpp
index bc29ba45d89a..f789bfd727d5 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Posix/setvbuf.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Posix/setvbuf.cpp
@@ -34,7 +34,9 @@ void test_setbuffer() {
 
   print_something();
 
-  setbuffer(stdout, buf, BUFSIZ);
+  // Ensure that interceptor reads correct size
+  // (not BUFSIZ as by default, hence BUFSIZ/2).
+  setbuffer(stdout, buf, BUFSIZ / 2);
 
   print_something();
 


        


More information about the llvm-commits mailing list