diff options
author | 2000-09-21 02:38:20 +0000 | |
---|---|---|
committer | 2000-09-21 02:38:20 +0000 | |
commit | f73f32da57d911080428bdc563b75b4379ace0f6 (patch) | |
tree | a291e35754ca9d9872062e8a423dc3b7c13d1985 | |
parent | Allocate memory for srcid/dstid. (diff) | |
download | wireguard-openbsd-f73f32da57d911080428bdc563b75b4379ace0f6.tar.xz wireguard-openbsd-f73f32da57d911080428bdc563b75b4379ace0f6.zip |
Send correct lengths for srcid/dstid.
-rw-r--r-- | sbin/ipsecadm/ipsecadm.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/sbin/ipsecadm/ipsecadm.c b/sbin/ipsecadm/ipsecadm.c index 6eb456f190b..1d378cdeea0 100644 --- a/sbin/ipsecadm/ipsecadm.c +++ b/sbin/ipsecadm/ipsecadm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ipsecadm.c,v 1.42 2000/09/21 01:34:19 angelos Exp $ */ +/* $OpenBSD: ipsecadm.c,v 1.43 2000/09/21 02:38:20 angelos Exp $ */ /* * The authors of this code are John Ioannidis (ji@tla.org), * Angelos D. Keromytis (kermit@csd.uch.gr) and @@ -323,10 +323,10 @@ main(int argc, char **argv) sa2.sadb_sa_replay = 0; sa2.sadb_sa_state = SADB_SASTATE_MATURE; - sid1.sadb_ident_len = 1; + sid1.sadb_ident_len = sizeof(sid1) / 8; sid1.sadb_ident_exttype = SADB_EXT_IDENTITY_SRC; - sid2.sadb_ident_len = 1; + sid2.sadb_ident_len = sizeof(sid2) / 8; sid2.sadb_ident_exttype = SADB_EXT_IDENTITY_DST; sprotocol2.sadb_protocol_len = 1; @@ -1694,26 +1694,6 @@ main(int argc, char **argv) #endif /* INET6 */ } - if (srcid) - { - iov[cnt].iov_base = &sid1; - iov[cnt++].iov_len = sizeof(sid1); - /* SRC identity */ - iov[cnt].iov_base = srcid; - iov[cnt++].iov_len = ROUNDUP(strlen(srcid)); - smsg.sadb_msg_len += sid1.sadb_ident_len; - } - - if (dstid) - { - iov[cnt].iov_base = &sid2; - iov[cnt++].iov_len = sizeof(sid2); - /* DST identity */ - iov[cnt].iov_base = dstid; - iov[cnt++].iov_len = ROUNDUP(strlen(dstid)); - smsg.sadb_msg_len += sid2.sadb_ident_len; - } - iov[cnt].iov_base = &sad4; iov[cnt++].iov_len = sizeof(sad4); /* Flow source address */ @@ -1760,6 +1740,27 @@ main(int argc, char **argv) iov[cnt].iov_base = odmask; iov[cnt++].iov_len = ROUNDUP(odmask->sa.sa_len); smsg.sadb_msg_len += sad7.sadb_address_len; + + if (srcid) + { + iov[cnt].iov_base = &sid1; + iov[cnt++].iov_len = sizeof(sid1); + /* SRC identity */ + iov[cnt].iov_base = srcid; + iov[cnt++].iov_len = ROUNDUP(strlen(srcid)); + smsg.sadb_msg_len += sid1.sadb_ident_len; + } + + if (dstid) + { + iov[cnt].iov_base = &sid2; + iov[cnt++].iov_len = sizeof(sid2); + /* DST identity */ + iov[cnt].iov_base = dstid; + iov[cnt++].iov_len = ROUNDUP(strlen(dstid)); + smsg.sadb_msg_len += sid2.sadb_ident_len; + } + break; case FLUSH: |