diff options
Diffstat (limited to 'sbin/isakmpd')
-rw-r--r-- | sbin/isakmpd/cookie.c | 6 | ||||
-rw-r--r-- | sbin/isakmpd/if.c | 8 | ||||
-rw-r--r-- | sbin/isakmpd/ipsec.c | 30 | ||||
-rw-r--r-- | sbin/isakmpd/message.c | 4 | ||||
-rw-r--r-- | sbin/isakmpd/pf_key_v2.c | 60 | ||||
-rw-r--r-- | sbin/isakmpd/sa.c | 14 | ||||
-rw-r--r-- | sbin/isakmpd/udp.c | 41 | ||||
-rw-r--r-- | sbin/isakmpd/util.c | 28 |
8 files changed, 93 insertions, 98 deletions
diff --git a/sbin/isakmpd/cookie.c b/sbin/isakmpd/cookie.c index 27b1bbe5947..f13672e4be4 100644 --- a/sbin/isakmpd/cookie.c +++ b/sbin/isakmpd/cookie.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cookie.c,v 1.9 2001/06/29 18:52:16 ho Exp $ */ +/* $OpenBSD: cookie.c,v 1.10 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: cookie.c,v 1.21 1999/08/05 15:00:04 niklas Exp $ */ /* @@ -67,9 +67,9 @@ cookie_gen (struct transport *t, struct exchange *exchange, u_int8_t *buf, hash->Init (hash->ctx); (*t->vtbl->get_dst) (t, &name); - hash->Update (hash->ctx, (u_int8_t *)name, name->sa_len); + hash->Update (hash->ctx, (u_int8_t *)name, sysdep_sa_len (name)); (*t->vtbl->get_src) (t, &name); - hash->Update (hash->ctx, (u_int8_t *)name, name->sa_len); + hash->Update (hash->ctx, (u_int8_t *)name, sysdep_sa_len (name)); if (exchange->initiator == 0) hash->Update (hash->ctx, exchange->cookies + ISAKMP_HDR_ICOOKIE_OFF, ISAKMP_HDR_ICOOKIE_LEN); diff --git a/sbin/isakmpd/if.c b/sbin/isakmpd/if.c index ca1e6a8ac05..354ba983356 100644 --- a/sbin/isakmpd/if.c +++ b/sbin/isakmpd/if.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if.c,v 1.9 2001/08/13 14:33:35 itojun Exp $ */ +/* $OpenBSD: if.c,v 1.10 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: if.c,v 1.12 1999/10/01 13:45:20 niklas Exp $ */ /* @@ -147,12 +147,8 @@ if_map (void (*func) (char *, struct sockaddr *, void *), void *arg) { ifrp = (struct ifreq *)p; (*func) (ifrp->ifr_name, &ifrp->ifr_addr, arg); -#ifdef USE_OLD_SOCKADDR - len = sizeof ifrp->ifr_name + sizeof ifrp->ifr_addr; -#else len = sizeof ifrp->ifr_name - + MAX (ifrp->ifr_addr.sa_len, sizeof ifrp->ifr_addr); -#endif + + MAX (sysdep_sa_len (&ifrp->ifr_addr), sizeof ifrp->ifr_addr); } free (ifc.ifc_buf); return 0; diff --git a/sbin/isakmpd/ipsec.c b/sbin/isakmpd/ipsec.c index 72c9b7dffd7..695bf107227 100644 --- a/sbin/isakmpd/ipsec.c +++ b/sbin/isakmpd/ipsec.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ipsec.c,v 1.59 2001/10/26 12:03:07 ho Exp $ */ +/* $OpenBSD: ipsec.c,v 1.60 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: ipsec.c,v 1.143 2000/12/11 23:57:42 niklas Exp $ */ /* @@ -427,14 +427,18 @@ ipsec_set_network (u_int8_t *src_id, u_int8_t *dst_id, struct ipsec_sa *isa) if (!isa->src_net) return -1; isa->src_net->sa_family = AF_INET; +#ifndef USE_OLD_SOCKADDR isa->src_net->sa_len = sizeof (struct sockaddr_in); +#endif isa->src_mask = (struct sockaddr *)calloc (1, sizeof (struct sockaddr_in)); if (!isa->src_mask) return -1; isa->src_mask->sa_family = AF_INET; +#ifndef USE_OLD_SOCKADDR isa->src_mask->sa_len = sizeof (struct sockaddr_in); +#endif break; case IPSEC_ID_IPV6_ADDR: @@ -444,14 +448,18 @@ ipsec_set_network (u_int8_t *src_id, u_int8_t *dst_id, struct ipsec_sa *isa) if (!isa->src_net) return -1; isa->src_net->sa_family = AF_INET6; +#ifndef USE_OLD_SOCKADDR isa->src_net->sa_len = sizeof (struct sockaddr_in6); +#endif isa->src_mask = (struct sockaddr *)calloc (1, sizeof (struct sockaddr_in6)); if (!isa->src_mask) return -1; isa->src_mask->sa_family = AF_INET6; +#ifndef USE_OLD_SOCKADDR isa->src_mask->sa_len = sizeof (struct sockaddr_in6); +#endif break; } @@ -491,14 +499,18 @@ ipsec_set_network (u_int8_t *src_id, u_int8_t *dst_id, struct ipsec_sa *isa) if (!isa->dst_net) return -1; isa->dst_net->sa_family = AF_INET; +#ifndef USE_OLD_SOCKADDR isa->dst_net->sa_len = sizeof (struct sockaddr_in); +#endif isa->dst_mask = (struct sockaddr *)calloc (1, sizeof (struct sockaddr_in)); if (!isa->dst_mask) return -1; isa->dst_mask->sa_family = AF_INET; +#ifndef USE_OLD_SOCKADDR isa->dst_mask->sa_len = sizeof (struct sockaddr_in); +#endif break; case IPSEC_ID_IPV6_ADDR: @@ -508,14 +520,18 @@ ipsec_set_network (u_int8_t *src_id, u_int8_t *dst_id, struct ipsec_sa *isa) if (!isa->dst_net) return -1; isa->dst_net->sa_family = AF_INET6; +#ifndef USE_OLD_SOCKADDR isa->dst_net->sa_len = sizeof (struct sockaddr_in6); +#endif isa->dst_mask = (struct sockaddr *)calloc (1, sizeof (struct sockaddr_in6)); if (!isa->dst_mask) return -1; isa->dst_mask->sa_family = AF_INET6; +#ifndef USE_OLD_SOCKADDR isa->dst_mask->sa_len = sizeof (struct sockaddr_in6); +#endif break; } @@ -1624,7 +1640,7 @@ ipsec_handle_leftover_payload (struct message *msg, u_int8_t type, * non-ready SAs will disappear too. */ msg->transport->vtbl->get_dst (msg->transport, &dst); - while ((sa = sa_lookup_by_peer (dst, dst->sa_len)) != 0) + while ((sa = sa_lookup_by_peer (dst, sysdep_sa_len (dst))) != 0) { /* * Don't delete the current SA -- we received the notification @@ -2122,15 +2138,15 @@ ipsec_add_contact (struct message *msg) contacts = new_contacts; } msg->transport->vtbl->get_dst (msg->transport, &dst); - addr = malloc (dst->sa_len); + addr = malloc (sysdep_sa_len (dst)); if (!addr) { - log_error ("ipsec_add_contact: malloc (%d) failed", dst->sa_len); + log_error ("ipsec_add_contact: malloc (%d) failed", sysdep_sa_len (dst)); return -1; } - memcpy (addr, dst, dst->sa_len); + memcpy (addr, dst, sysdep_sa_len (dst)); contacts[contact_cnt].addr = addr; - contacts[contact_cnt++].len = dst->sa_len; + contacts[contact_cnt++].len = sysdep_sa_len (dst); /* * XXX There are better algorithms for already mostly-sorted data like @@ -2147,7 +2163,7 @@ ipsec_contacted (struct message *msg) struct contact contact; msg->transport->vtbl->get_dst (msg->transport, &contact.addr); - contact.len = contact.addr->sa_len; + contact.len = sysdep_sa_len (contact.addr); return contacts ? (bsearch (&contact, contacts, contact_cnt, sizeof *contacts, addr_cmp) != 0) diff --git a/sbin/isakmpd/message.c b/sbin/isakmpd/message.c index 0cca25ee124..633977427c6 100644 --- a/sbin/isakmpd/message.c +++ b/sbin/isakmpd/message.c @@ -1,4 +1,4 @@ -/* $OpenBSD: message.c,v 1.46 2001/10/26 11:37:16 ho Exp $ */ +/* $OpenBSD: message.c,v 1.47 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: message.c,v 1.156 2000/10/10 12:36:39 provos Exp $ */ /* @@ -1382,7 +1382,7 @@ message_send_delete (struct sa *sa) struct sockaddr *dst; sa->transport->vtbl->get_dst (sa->transport, &dst); - isakmp_sa = sa_isakmp_lookup_by_peer (dst, dst->sa_len); + isakmp_sa = sa_isakmp_lookup_by_peer (dst, sysdep_sa_len (dst)); if (!isakmp_sa) { /* diff --git a/sbin/isakmpd/pf_key_v2.c b/sbin/isakmpd/pf_key_v2.c index 9d867604b31..534a123cdde 100644 --- a/sbin/isakmpd/pf_key_v2.c +++ b/sbin/isakmpd/pf_key_v2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pf_key_v2.c,v 1.90 2001/10/12 15:47:49 ho Exp $ */ +/* $OpenBSD: pf_key_v2.c,v 1.91 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: pf_key_v2.c,v 1.79 2000/12/12 00:33:19 niklas Exp $ */ /* @@ -161,11 +161,11 @@ pf_key_v2_register_sa_seq (u_int8_t *spi, size_t sz, u_int8_t proto, node->spi = malloc (sz); if (!node->spi) goto cleanup; - node->dst = malloc (dst->sa_len); + node->dst = malloc (sysdep_sa_len (dst)); if (!node->spi) goto cleanup; - memcpy (node->dst, dst, dst->sa_len); - node->dstlen = dst->sa_len; + memcpy (node->dst, dst, sysdep_sa_len (dst)); + node->dstlen = sysdep_sa_len (dst); memcpy (node->spi, spi, sz); node->sz = sz; node->proto = proto; @@ -191,8 +191,8 @@ pf_key_v2_seq_by_sa (u_int8_t *spi, size_t sz, u_int8_t proto, node = TAILQ_NEXT (node, link)) if (node->proto == proto && node->sz == sz && memcmp (node->spi, spi, sz) == 0 - && node->dstlen == dst->sa_len - && memcmp (node->dst, dst, dst->sa_len) == 0) + && node->dstlen == sysdep_sa_len (dst) + && memcmp (node->dst, dst, sysdep_sa_len (dst)) == 0) return node->seq; return 0; } @@ -681,7 +681,7 @@ pf_key_v2_get_spi (size_t *sz, u_int8_t proto, struct sockaddr *src, #endif /* Setup the ADDRESS extensions. */ - len = sizeof (struct sadb_address) + PF_KEY_V2_ROUND (src->sa_len); + len = sizeof (struct sadb_address) + PF_KEY_V2_ROUND (sysdep_sa_len (src)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -692,7 +692,7 @@ pf_key_v2_get_spi (size_t *sz, u_int8_t proto, struct sockaddr *src, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, src, src->sa_len); + memcpy (addr + 1, src, sysdep_sa_len (src)); switch (((struct sockaddr *)(addr + 1))->sa_family) { case AF_INET: @@ -707,7 +707,7 @@ pf_key_v2_get_spi (size_t *sz, u_int8_t proto, struct sockaddr *src, goto cleanup; addr = 0; - len = sizeof (struct sadb_address) + PF_KEY_V2_ROUND (dst->sa_len); + len = sizeof (struct sadb_address) + PF_KEY_V2_ROUND (sysdep_sa_len (dst)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -718,7 +718,7 @@ pf_key_v2_get_spi (size_t *sz, u_int8_t proto, struct sockaddr *src, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, dst, dst->sa_len); + memcpy (addr + 1, dst, sysdep_sa_len (dst)); switch (((struct sockaddr *)(addr + 1))->sa_family) { case AF_INET: @@ -775,7 +775,7 @@ pf_key_v2_get_spi (size_t *sz, u_int8_t proto, struct sockaddr *src, memcpy (spi, &sa->sadb_sa_spi, *sz); #ifdef KAME - if (!pf_key_v2_register_sa_seq (spi, *sz, proto, dst, dst->sa_len, + if (!pf_key_v2_register_sa_seq (spi, *sz, proto, dst, sysdep_sa_len (dst), ((struct sadb_msg *)(TAILQ_FIRST (ret)->seg)) ->sadb_msg_seq)) goto cleanup; @@ -1012,7 +1012,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, msg.sadb_msg_seq = (incoming ? pf_key_v2_seq_by_sa (proto->spi[incoming], sizeof ssa.sadb_sa_spi, proto->proto, - dst, dst->sa_len) + dst, sysdep_sa_len (dst)) : 0); #else msg.sadb_msg_seq = sa->seq; @@ -1107,7 +1107,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, sa->transport->vtbl->get_dst (sa->transport, &src); else sa->transport->vtbl->get_src (sa->transport, &src); - len = sizeof *addr + PF_KEY_V2_ROUND (src->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (src)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -1118,7 +1118,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, src, src->sa_len); + memcpy (addr + 1, src, sysdep_sa_len (src)); switch (((struct sockaddr *)(addr + 1))->sa_family) { case AF_INET: @@ -1133,7 +1133,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, goto cleanup; addr = 0; - len = sizeof *addr + PF_KEY_V2_ROUND (dst->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (dst)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -1144,7 +1144,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, dst, dst->sa_len); + memcpy (addr + 1, dst, sysdep_sa_len (dst)); switch (((struct sockaddr *)(addr + 1))->sa_family) { case AF_INET: @@ -1163,7 +1163,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, /* XXX I am not sure about what to do here just yet. */ if (iproto->encap_mode == IPSEC_ENCAP_TUNNEL) { - len = sizeof *addr + PF_KEY_V2_ROUND (dst->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (dst)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -1174,7 +1174,7 @@ pf_key_v2_set_spi (struct sa *sa, struct proto *proto, int incoming, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, dst, dst->sa_len); + memcpy (addr + 1, dst, sysdep_sa_len (dst)); switch (((struct sockaddr *)(addr + 1))->sa_family) { case AF_INET: @@ -1706,7 +1706,7 @@ pf_key_v2_flow (struct sockaddr *laddr, struct sockaddr *lmask, /* * Setup the ADDRESS extensions. */ - len = sizeof *addr + PF_KEY_V2_ROUND (src->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (src)); #ifndef SADB_X_EXT_FLOW_TYPE if (!delete || ingress) #else @@ -1730,7 +1730,7 @@ pf_key_v2_flow (struct sockaddr *laddr, struct sockaddr *lmask, addr = 0; } - len = sizeof *addr + PF_KEY_V2_ROUND (laddr->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (laddr)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -1881,7 +1881,7 @@ pf_key_v2_flow (struct sockaddr *laddr, struct sockaddr *lmask, /* * Setup the ADDRESS extensions. */ - len = sizeof *addr + PF_KEY_V2_ROUND (src->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (src)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -1908,7 +1908,7 @@ pf_key_v2_flow (struct sockaddr *laddr, struct sockaddr *lmask, goto cleanup; addr = 0; - len = sizeof *addr + PF_KEY_V2_ROUND (raddr->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (raddr)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -1937,7 +1937,7 @@ pf_key_v2_flow (struct sockaddr *laddr, struct sockaddr *lmask, /* Setup the POLICY extension. */ len = sizeof *policy + sizeof *ipsecrequest + - 2 * PF_KEY_V2_ROUND (src->sa_len); + 2 * PF_KEY_V2_ROUND (sysdep_sa_len (src)); policy_buf = (u_int8_t *)calloc (1, len); if (!policy_buf) { @@ -2517,7 +2517,7 @@ pf_key_v2_delete_spi (struct sa *sa, struct proto *proto, int incoming) sa->transport->vtbl->get_dst (sa->transport, &saddr); else sa->transport->vtbl->get_src (sa->transport, &saddr); - len = sizeof *addr + PF_KEY_V2_ROUND (saddr->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (saddr)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -2528,7 +2528,7 @@ pf_key_v2_delete_spi (struct sa *sa, struct proto *proto, int incoming) addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, saddr, saddr->sa_len); + memcpy (addr + 1, saddr, sysdep_sa_len (saddr)); switch (saddr->sa_family) { case AF_INET: @@ -2547,7 +2547,7 @@ pf_key_v2_delete_spi (struct sa *sa, struct proto *proto, int incoming) sa->transport->vtbl->get_src (sa->transport, &saddr); else sa->transport->vtbl->get_dst (sa->transport, &saddr); - len = sizeof *addr + PF_KEY_V2_ROUND (saddr->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (saddr)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -2558,7 +2558,7 @@ pf_key_v2_delete_spi (struct sa *sa, struct proto *proto, int incoming) addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, saddr, saddr->sa_len); + memcpy (addr + 1, saddr, sysdep_sa_len (saddr)); switch (saddr->sa_family) { case AF_INET: @@ -3985,7 +3985,7 @@ pf_key_v2_group_spis (struct sa *sa, struct proto *proto1, sa->transport->vtbl->get_src (sa->transport, &saddr); else sa->transport->vtbl->get_dst (sa->transport, &saddr); - len = sizeof *addr + PF_KEY_V2_ROUND (saddr->sa_len); + len = sizeof *addr + PF_KEY_V2_ROUND (sysdep_sa_len (saddr)); addr = calloc (1, len); if (!addr) goto cleanup; @@ -3996,7 +3996,7 @@ pf_key_v2_group_spis (struct sa *sa, struct proto *proto1, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, saddr, saddr->sa_len); + memcpy (addr + 1, saddr, sysdep_sa_len (saddr)); ((struct sockaddr_in *)(addr + 1))->sin_port = 0; if (pf_key_v2_msg_add (grpspis, (struct sadb_ext *)addr, PF_KEY_V2_NODE_MALLOCED) == -1) @@ -4013,7 +4013,7 @@ pf_key_v2_group_spis (struct sa *sa, struct proto *proto1, addr->sadb_address_prefixlen = 0; #endif addr->sadb_address_reserved = 0; - memcpy (addr + 1, saddr, saddr->sa_len); + memcpy (addr + 1, saddr, sysdep_sa_len (saddr)); ((struct sockaddr_in *)(addr + 1))->sin_port = 0; if (pf_key_v2_msg_add (grpspis, (struct sadb_ext *)addr, PF_KEY_V2_NODE_MALLOCED) == -1) diff --git a/sbin/isakmpd/sa.c b/sbin/isakmpd/sa.c index 66b4ed1bc02..1e834268480 100644 --- a/sbin/isakmpd/sa.c +++ b/sbin/isakmpd/sa.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sa.c,v 1.48 2001/08/15 13:06:53 ho Exp $ */ +/* $OpenBSD: sa.c,v 1.49 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: sa.c,v 1.112 2000/12/12 00:22:52 niklas Exp $ */ /* @@ -60,10 +60,6 @@ #include "policy.h" #include "key.h" -#ifndef SA_LEN -#define SA_LEN(x) (x)->sa_len -#endif - /* Initial number of bits from the cookies used as hash. */ #define INITIAL_BUCKET_BITS 6 @@ -206,8 +202,8 @@ sa_check_peer (struct sa *sa, void *v_addr) return 0; sa->transport->vtbl->get_dst (sa->transport, &dst); - return dst->sa_len == addr->len - && memcmp (dst, addr->addr, dst->sa_len) == 0; + return sysdep_sa_len (dst) == addr->len + && memcmp (dst, addr->addr, sysdep_sa_len (dst)) == 0; } struct dst_isakmpspi_arg { @@ -231,8 +227,8 @@ isakmp_sa_check (struct sa *sa, void *v_arg) /* verify address is either src or dst for this sa */ sa->transport->vtbl->get_dst (sa->transport, &dst); sa->transport->vtbl->get_src (sa->transport, &src); - if (memcmp (src, arg->dst, SA_LEN(src)) && - memcmp (dst, arg->dst, SA_LEN(dst))) + if (memcmp (src, arg->dst, sysdep_sa_len (src)) && + memcmp (dst, arg->dst, sysdep_sa_len (dst))) return 0; /* match icookie+rcookie against spi */ diff --git a/sbin/isakmpd/udp.c b/sbin/isakmpd/udp.c index 446f677f207..30611d4fa8a 100644 --- a/sbin/isakmpd/udp.c +++ b/sbin/isakmpd/udp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: udp.c,v 1.52 2001/10/09 14:53:05 ho Exp $ */ +/* $OpenBSD: udp.c,v 1.53 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: udp.c,v 1.57 2001/01/26 10:09:57 niklas Exp $ */ /* @@ -125,8 +125,8 @@ udp_listen_lookup (struct sockaddr *addr) struct udp_transport *u; for (u = LIST_FIRST (&udp_listen_list); u; u = LIST_NEXT (u, link)) - if (u->src->sa_len == addr->sa_len - && memcmp (u->src, addr, addr->sa_len) == 0) + if (sysdep_sa_len (u->src) == sysdep_sa_len (addr) + && memcmp (u->src, addr, sysdep_sa_len (addr)) == 0) return u; return 0; } @@ -189,7 +189,7 @@ udp_make (struct sockaddr *laddr) t->transport.vtbl = &udp_transport_vtbl; t->src = laddr; - if (bind (s, t->src, t->src->sa_len)) + if (bind (s, t->src, sysdep_sa_len (t->src))) { char *tstr; if (sockaddr2text (t->src, &tstr, 0)) @@ -237,24 +237,24 @@ udp_clone (struct udp_transport *u, struct sockaddr *raddr) memcpy (u2, u, sizeof *u); - u2->src = malloc (u->src->sa_len); + u2->src = malloc (sysdep_sa_len (u->src)); if (!u2->src) { - log_error ("udp_clone: malloc (%d) failed", u->src->sa_len); + log_error ("udp_clone: malloc (%d) failed", sysdep_sa_len (u->src)); free (t); return 0; } - memcpy (u2->src, u->src, u->src->sa_len); + memcpy (u2->src, u->src, sysdep_sa_len (u->src)); - u2->dst = malloc (raddr->sa_len); + u2->dst = malloc (sysdep_sa_len (raddr)); if (!u2->dst) { - log_error ("udp_clone: malloc (%d) failed", raddr->sa_len); + log_error ("udp_clone: malloc (%d) failed", sysdep_sa_len (raddr)); free (u2->src); free (t); return 0; } - memcpy (u2->dst, raddr, raddr->sa_len); + memcpy (u2->dst, raddr, sysdep_sa_len (raddr)); t->flags &= ~TRANSPORT_LISTEN; @@ -272,12 +272,12 @@ udp_clone (struct udp_transport *u, struct sockaddr *raddr) static struct transport * udp_bind (const struct sockaddr *addr) { - struct sockaddr *src = malloc (addr->sa_len); + struct sockaddr *src = malloc (sysdep_sa_len ((struct sockaddr *)addr)); if (!src) return 0; - memcpy (src, addr, addr->sa_len); + memcpy (src, addr, sysdep_sa_len ((struct sockaddr *)addr)); return udp_make (src); } @@ -303,16 +303,11 @@ udp_bind_if (char *ifname, struct sockaddr *if_addr, void *arg) /* * Well, UDP is an internet protocol after all so drop other ifreqs. */ -#ifdef USE_OLD_SOCKADDR - if (if_addr->sa_family != AF_INET && if_addr->sa_family != AF_INET6) - return; -#else if ((if_addr->sa_family != AF_INET - || if_addr->sa_len != sizeof (struct sockaddr_in)) + || sysdep_sa_len (if_addr) != sizeof (struct sockaddr_in)) && (if_addr->sa_family != AF_INET6 - || if_addr->sa_len != sizeof (struct sockaddr_in6))) + || sysdep_sa_len (if_addr) != sizeof (struct sockaddr_in6))) return; -#endif /* * These special addresses are not useable as they have special meaning @@ -412,7 +407,7 @@ udp_bind_if (char *ifname, struct sockaddr *if_addr, void *arg) } /* If found, take the easy way out. */ - if (memcmp (addr, if_addr, addr->sa_len) == 0) + if (memcmp (addr, if_addr, sysdep_sa_len (addr)) == 0) { free (addr); break; @@ -775,7 +770,7 @@ udp_send_message (struct message *msg) * given, or else EISCONN will occur. */ m.msg_name = (caddr_t)u->dst; - m.msg_namelen = u->dst->sa_len; + m.msg_namelen = sysdep_sa_len (u->dst); m.msg_iov = msg->iov; m.msg_iovlen = msg->iovlen; m.msg_control = 0; @@ -819,7 +814,7 @@ udp_decode_ids (struct transport *t) #ifdef HAVE_GETNAMEINFO if (getnameinfo (((struct udp_transport *)t)->src, - ((struct udp_transport *)t)->src->sa_len, + sysdep_sa_len (((struct udp_transport *)t)->src), idsrc, sizeof idsrc, NULL, 0, NI_NUMERICHOST) != 0) { log_print ("udp_decode_ids: getnameinfo () failed for 'src'"); @@ -827,7 +822,7 @@ udp_decode_ids (struct transport *t) } if (getnameinfo (((struct udp_transport *)t)->dst, - ((struct udp_transport *)t)->dst->sa_len, + sysdep_sa_len (((struct udp_transport *)t)->dst), iddst, sizeof iddst, NULL, 0, NI_NUMERICHOST) != 0) { log_print ("udp_decode_ids: getnameinfo () failed for 'dst'"); diff --git a/sbin/isakmpd/util.c b/sbin/isakmpd/util.c index 27d1d8491c2..b8465d19bf8 100644 --- a/sbin/isakmpd/util.c +++ b/sbin/isakmpd/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.22 2001/10/26 12:03:07 ho Exp $ */ +/* $OpenBSD: util.c,v 1.23 2001/10/26 13:29:26 ho Exp $ */ /* $EOM: util.c,v 1.23 2000/11/23 12:22:08 niklas Exp $ */ /* @@ -263,11 +263,11 @@ text2sockaddr (char *address, char *port, struct sockaddr **sa) if (getaddrinfo (address, port, &hints, &ai)) return -1; - *sa = malloc (ai->ai_addr->sa_len); + *sa = malloc (sysdep_sa_len (ai->ai_addr)); if (!sa) return -1; - memcpy (*sa, ai->ai_addr, ai->ai_addr->sa_len); + memcpy (*sa, ai->ai_addr, sysdep_sa_len (ai->ai_addr)); freeaddrinfo (ai); return 0; #else @@ -282,7 +282,9 @@ text2sockaddr (char *address, char *port, struct sockaddr **sa) if (!*sa) return -1; +#ifndef USE_OLD_SOCKADDR (*sa)->sa_len = sz; +#endif (*sa)->sa_family = af; if (inet_pton (af, address, sockaddr_addrdata (*sa)) != 1) { @@ -324,7 +326,7 @@ sockaddr2text (struct sockaddr *sa, char **address, int zflag) int i, j; #ifdef HAVE_GETNAMEINFO - if (getnameinfo (sa, sa->sa_len, buf, sizeof buf, 0, 0, + if (getnameinfo (sa, sysdep_sa_len (sa), buf, sizeof buf, 0, 0, allow_name_lookups ? 0 : NI_NUMERICHOST)) return -1; #else @@ -455,23 +457,13 @@ util_ntoa (char **buf, int af, u_int8_t *addr) struct sockaddr_storage from; struct sockaddr *sfrom = (struct sockaddr *)&from; socklen_t fromlen = sizeof from; - u_int32_t ip4_buf; memset (&from, 0, fromlen); sfrom->sa_family = af; - switch (af) - { - case AF_INET: - sfrom->sa_len = sizeof (struct sockaddr_in); - memcpy (&ip4_buf, addr, sizeof (struct in_addr)); - ((struct sockaddr_in *)sfrom)->sin_addr.s_addr = ip4_buf; - break; - - case AF_INET6: - sfrom->sa_len = sizeof (struct sockaddr_in6); - memcpy (sockaddr_addrdata (sfrom), addr, sizeof (struct in6_addr)); - break; - } +#ifndef USE_OLD_SOCKADDR + sfrom->sa_len = sysdep_sa_len (sfrom); +#endif + memcpy (sockaddr_addrdata (sfrom), addr, sockaddr_addrlen (sfrom)); if (sockaddr2text (sfrom, buf, 0)) { |