[compiler-rt] 1a8aab6 - [sanitizer] use the right type for sizeof

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 27 16:56:28 PDT 2023


Author: Wu, Yingcong
Date: 2023-04-27T16:56:22-07:00
New Revision: 1a8aab6de5de1a085e6311aa9dcfb85010acba86

URL: https://github.com/llvm/llvm-project/commit/1a8aab6de5de1a085e6311aa9dcfb85010acba86
DIFF: https://github.com/llvm/llvm-project/commit/1a8aab6de5de1a085e6311aa9dcfb85010acba86.diff

LOG: [sanitizer] use the right type for sizeof

`x_aliases` is an array of string, so to calculate its size, it should
be <size-of-array> times <size-of-element>, which should be
`sizeof(char*)` instead of `sizeof(char**)`.

Reviewed By: vitalybuka

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

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
    compiler-rt/test/sanitizer_common/TestCases/Linux/netent.cpp
    compiler-rt/test/sanitizer_common/TestCases/Linux/protoent.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 3bd73cf87483..b30c91f06cfe 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -7748,8 +7748,7 @@ static void write_protoent(void *ctx, struct __sanitizer_protoent *p) {
   for (char **pp = p->p_aliases; *pp; ++pp, ++pp_size)
       COMMON_INTERCEPTOR_WRITE_RANGE(ctx, *pp, internal_strlen(*pp) + 1);
 
-  COMMON_INTERCEPTOR_WRITE_RANGE(ctx, p->p_aliases,
-                                  pp_size * sizeof(char **));
+  COMMON_INTERCEPTOR_WRITE_RANGE(ctx, p->p_aliases, pp_size * sizeof(char *));
 }
 
 INTERCEPTOR(struct __sanitizer_protoent *, getprotoent) {
@@ -7855,8 +7854,7 @@ INTERCEPTOR(struct __sanitizer_netent *, getnetent) {
     for (char **nn = n->n_aliases; *nn; ++nn, ++nn_size)
       COMMON_INTERCEPTOR_WRITE_RANGE(ctx, *nn, internal_strlen(*nn) + 1);
 
-    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, n->n_aliases,
-                                   nn_size * sizeof(char **));
+    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, n->n_aliases, nn_size * sizeof(char *));
   }
   return n;
 }
@@ -7877,8 +7875,7 @@ INTERCEPTOR(struct __sanitizer_netent *, getnetbyname, const char *name) {
     for (char **nn = n->n_aliases; *nn; ++nn, ++nn_size)
       COMMON_INTERCEPTOR_WRITE_RANGE(ctx, *nn, internal_strlen(*nn) + 1);
 
-    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, n->n_aliases,
-                                   nn_size * sizeof(char **));
+    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, n->n_aliases, nn_size * sizeof(char *));
   }
   return n;
 }
@@ -7897,8 +7894,7 @@ INTERCEPTOR(struct __sanitizer_netent *, getnetbyaddr, u32 net, int type) {
     for (char **nn = n->n_aliases; *nn; ++nn, ++nn_size)
       COMMON_INTERCEPTOR_WRITE_RANGE(ctx, *nn, internal_strlen(*nn) + 1);
 
-    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, n->n_aliases,
-                                   nn_size * sizeof(char **));
+    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, n->n_aliases, nn_size * sizeof(char *));
   }
   return n;
 }

diff  --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/netent.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/netent.cpp
index 296af338e5c8..659a14c570fd 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/netent.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/netent.cpp
@@ -23,6 +23,11 @@ void test1() {
   assert(ntp && ntp->n_name);
   assert(ntp->n_addrtype == 2);
   assert(ntp->n_net == 127);
+  char **aliases = ntp->n_aliases;
+  while (aliases) {
+    printf("%s\n", *aliases);
+    aliases++;
+  }
   endnetent();
 }
 
@@ -31,6 +36,11 @@ void test2() {
   assert(ntp && ntp->n_name);
   assert(ntp->n_addrtype == 2);
   assert(ntp->n_net == 127);
+  char **aliases = ntp->n_aliases;
+  while (aliases) {
+    printf("%s\n", *aliases);
+    aliases++;
+  }
   endnetent();
 }
 
@@ -41,6 +51,11 @@ void test3() {
   assert(ntp && ntp->n_name);
   assert(ntp->n_addrtype == 2);
   assert(ntp->n_net == 127);
+  char **aliases = ntp->n_aliases;
+  while (aliases) {
+    printf("%s\n", *aliases);
+    aliases++;
+  }
   endnetent();
 }
 

diff  --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/protoent.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/protoent.cpp
index ff5226f771a5..890b8bb7db05 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/protoent.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/protoent.cpp
@@ -15,6 +15,11 @@ void test1() {
   struct protoent *ptp = getprotoent();
   assert(ptp && ptp->p_name);
   assert(ptp->p_proto == 0);
+  char **aliases = ptp->p_aliases;
+  while (aliases) {
+    printf("%s\n", *aliases);
+    aliases++;
+  }
   endprotoent();
 }
 
@@ -22,6 +27,11 @@ void test2() {
   struct protoent *ptp = getprotobyname("tcp");
   assert(ptp && ptp->p_name);
   assert(ptp->p_proto == 6);
+  char **aliases = ptp->p_aliases;
+  while (aliases) {
+    printf("%s\n", *aliases);
+    aliases++;
+  }
   endprotoent();
 }
 
@@ -29,6 +39,11 @@ void test3() {
   struct protoent *ptp = getprotobynumber(1);
   assert(ptp && ptp->p_name);
   assert(ptp->p_proto == 1);
+  char **aliases = ptp->p_aliases;
+  while (aliases) {
+    printf("%s\n", *aliases);
+    aliases++;
+  }
   endprotoent();
 }
 


        


More information about the llvm-commits mailing list