diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index cabf710ad967..92aac6115f5c 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -324,6 +324,15 @@ sockaddr_alloc(sa_family_t af, socklen_t socklen, int flags) struct sockaddr *sa; socklen_t reallen = MAX(socklen, offsetof(struct sockaddr, sa_data[0])); +#ifdef DIAGNOSTIC + /* + * sockaddr_checklen passes sa to sockaddr_format which + * requires it to be fully initialized. + * + * XXX This should be factored better. + */ + flags |= M_ZERO; +#endif if ((sa = malloc(reallen, M_SOCKADDR, flags)) == NULL) return NULL;