]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netkey/keysock.c
xnu-7195.101.1.tar.gz
[apple/xnu.git] / bsd / netkey / keysock.c
index 9b7f46424e995ae000c9340c74616e9a8e80d005..038588c882d9fafc480220e385556cc19389a72e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2019 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  *
@@ -87,8 +87,8 @@
 extern lck_mtx_t *raw_mtx;
 extern void key_init(struct protosw *, struct domain *);
 
-struct sockaddr key_dst = { 2, PF_KEY, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } };
-struct sockaddr key_src = { 2, PF_KEY, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } };
+struct sockaddr key_dst = { .sa_len = 2, .sa_family = PF_KEY, .sa_data = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } };
+struct sockaddr key_src = { .sa_len = 2, .sa_family = PF_KEY, .sa_data = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } };
 
 static void key_dinit(struct domain *);
 static int key_sendup0(struct rawcb *, struct mbuf *, int);
@@ -212,12 +212,13 @@ key_sendup0(struct rawcb *rp, struct mbuf *m, int promisc)
                        return ENOBUFS;
                }
                m->m_pkthdr.len += sizeof(*pmsg);
+               VERIFY(PFKEY_UNIT64(m->m_pkthdr.len) <= UINT16_MAX);
 
                pmsg = mtod(m, struct sadb_msg *);
                bzero(pmsg, sizeof(*pmsg));
                pmsg->sadb_msg_version = PF_KEY_V2;
                pmsg->sadb_msg_type = SADB_X_PROMISC;
-               pmsg->sadb_msg_len = PFKEY_UNIT64(m->m_pkthdr.len);
+               pmsg->sadb_msg_len = (u_int16_t)PFKEY_UNIT64(m->m_pkthdr.len);
                /* pid and seq? */
 
                PFKEY_STAT_INCREMENT(pfkeystat.in_msgtype[pmsg->sadb_msg_type]);