Fix alignment problem when casting struct sockaddr pointers to SockAddr. (#26488)

* Fix alignment problem when casting struct sockaddr pointers to SockAddr.

SockAddr, because it includes sockaddr_storage, has a more stringent alignment
requirement than struct sockaddr does.  As a result, the casting we do of
"sockaddr &" to "SockAddr &" is not really OK.

The fix is to have a version of SockAddr that lets us do the type-punning we
want to do without including sockaddr_storage.  We don't need storage in this
case because we are working with an existing sockaddr that lives somewhere, not
storing one of our own.

This also lets us enable UndefinedBehaviorSanitizer for libCHIP in the Darwin
framework tests.

* Fix typo in comment.
diff --git a/src/inet/IPAddress.cpp b/src/inet/IPAddress.cpp
index 3b4c25e..19da2ac 100644
--- a/src/inet/IPAddress.cpp
+++ b/src/inet/IPAddress.cpp
@@ -237,7 +237,7 @@
     return ipAddr;
 }
 
-CHIP_ERROR IPAddress::GetIPAddressFromSockAddr(const SockAddr & sockaddr, IPAddress & outIPAddress)
+CHIP_ERROR IPAddress::GetIPAddressFromSockAddr(const SockAddrWithoutStorage & sockaddr, IPAddress & outIPAddress)
 {
 #if INET_CONFIG_ENABLE_IPV4
     if (sockaddr.any.sa_family == AF_INET)