[PATCH] D54078: Implement getpeername(2) interceptor

Vitaly Buka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 7 16:34:25 PST 2018


vitalybuka added inline comments.


================
Comment at: lib/sanitizer_common/sanitizer_common_interceptors.inc:3089
+    taddrlen = 0;
+  __sanitizer_sockaddr_storage taddr;
+  int res = REAL(getpeername)(sockfd, addr ? &taddr : 0,
----------------
vitalybuka wrote:
> Looks like you are trying to fix https://github.com/google/sanitizers/issues/321, but description does not cover it.
> so what if sizeoff(__sanitizer_sockaddr_storage) < *addrlen
maybe you should just ignore 321 for now as it's more general issue, keep FIXME and remove temps.

so you can make it complete by adding  "READ_RANGE(ctx, addrlen" and "WRITE_RANGE(ctx, addrlen"



================
Comment at: lib/sanitizer_common/sanitizer_common_interceptors.inc:3093
+  if (!res) {
+    if (addr && addrlen)
+      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, addr, taddrlen);
----------------
```
    if (addrlen) {
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, addrlen, sizeof(*addrlen));
       if (addr)
         COMMON_INTERCEPTOR_WRITE_RANGE(ctx, addr, *addrlen);
    }
```



Repository:
  rL LLVM

https://reviews.llvm.org/D54078





More information about the llvm-commits mailing list