Formatted version: BUGS sockaddr_storage was designed back when strict aliasing wasn’t a prob‐ lem. Back then, one would define a variable of that type, and then ac‐ cess it as any of the other sockaddr_* types, depending on the value of the first member. This is Undefined Behavior. However, there is no way to use these APIs without invoking Unedfined Behavior, either in the user program or in libc, so it is still recommended to use this method. The only correct way to use different types in an API is through a union. However, that union must be implemented in the li‐ brary, since the type must be shared between the library and user code, so libc should be fixed by implementing sockaddr_storage as a union. -- GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5