Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[compiler-rt] adding __sanitizer_sockaddr definition for freebsd. #85870

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

devnexen
Copy link
Member

No description provided.

@llvmbot
Copy link
Collaborator

llvmbot commented Mar 19, 2024

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: David CARLIER (devnexen)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/85870.diff

2 Files Affected:

  • (modified) compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cpp (+1)
  • (modified) compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.h (+10-4)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
index 4940062eeae47f..f5451a9d0b5b1c 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
@@ -476,6 +476,7 @@ CHECK_TYPE_SIZE(sigset_t);
 
 COMPILER_CHECK(sizeof(__sanitizer_sigaction) == sizeof(struct sigaction));
 COMPILER_CHECK(sizeof(__sanitizer_siginfo) == sizeof(siginfo_t));
+COMPILER_CHECK(sizeof(__sanitizer_sockaddr) == sizeof(struct sockaddr));
 CHECK_SIZE_AND_OFFSET(siginfo_t, si_value);
 // Can't write checks for sa_handler and sa_sigaction due to them being
 // preprocessor macros.
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.h
index 8ce73f206fd88d..62b37098bc68d7 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_freebsd.h
@@ -154,14 +154,20 @@ struct __sanitizer_iovec {
   uptr iov_len;
 };
 
+struct __sanitizer_sockaddr {
+  unsigned char sa_len;
+  unsigned char sa_family;
+  char sa_data[14];
+};
+
 struct __sanitizer_ifaddrs {
   struct __sanitizer_ifaddrs *ifa_next;
   char *ifa_name;
   unsigned int ifa_flags;
-  void *ifa_addr;     // (struct sockaddr *)
-  void *ifa_netmask;  // (struct sockaddr *)
+  __sanitizer_sockaddr *ifa_addr;
+  __sanitizer_sockaddr *ifa_netmask;
 #  undef ifa_dstaddr
-  void *ifa_dstaddr;  // (struct sockaddr *)
+  __sanitizer_sockaddr *ifa_dstaddr;  // (struct sockaddr *)
   void *ifa_data;
 };
 
@@ -367,7 +373,7 @@ struct __sanitizer_addrinfo {
   int ai_protocol;
   unsigned ai_addrlen;
   char *ai_canonname;
-  void *ai_addr;
+  __sanitizer_sockaddr *ai_addr;
   struct __sanitizer_addrinfo *ai_next;
 };
 

@emaste
Copy link
Member

emaste commented May 1, 2024

What is the motivation? This seems reasonable but it doesn't look like it's been done on any other platforms, so I'm curious why.

@devnexen
Copy link
Member Author

devnexen commented May 1, 2024

well I planned to go further with other oses if this one is merged, so at least the ifaddr mapping is more accurate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants