summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authortuexen <tuexen@FreeBSD.org>2011-11-13 11:53:18 +0000
committertuexen <tuexen@FreeBSD.org>2011-11-13 11:53:18 +0000
commitec6184ed07931e8bfc991db91ce884df5d2bddad (patch)
treeb8e664850eef4d38fc045af1adf4994329e86b68 /sys/netinet
parentca682488f300f9d4de73109f4b4ff0cff1fc3cc3 (diff)
downloadFreeBSD-src-ec6184ed07931e8bfc991db91ce884df5d2bddad.zip
FreeBSD-src-ec6184ed07931e8bfc991db91ce884df5d2bddad.tar.gz
Don't copy uninitialized memory. Also simplify the comparison
of interface names. MFC after: 3 days.
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/sctp_pcb.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c
index 0dcc37e..73dcb5f 100644
--- a/sys/netinet/sctp_pcb.c
+++ b/sys/netinet/sctp_pcb.c
@@ -559,9 +559,9 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index,
atomic_add_int(&vrf->refcount, 1);
sctp_ifnp->ifn_mtu = SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index, addr->sa_family);
if (if_name != NULL) {
- memcpy(sctp_ifnp->ifn_name, if_name, SCTP_IFNAMSIZ);
+ snprintf(sctp_ifnp->ifn_name, SCTP_IFNAMSIZ, "%s", if_name);
} else {
- memcpy(sctp_ifnp->ifn_name, "unknown", min(7, SCTP_IFNAMSIZ));
+ snprintf(sctp_ifnp->ifn_name, SCTP_IFNAMSIZ, "%s", "unknown");
}
hash_ifn_head = &SCTP_BASE_INFO(vrf_ifn_hash)[(ifn_index & SCTP_BASE_INFO(vrf_ifn_hashmark))];
LIST_INIT(&sctp_ifnp->ifalist);
@@ -768,19 +768,9 @@ sctp_del_addr_from_vrf(uint32_t vrf_id, struct sockaddr *addr,
* panda who might recycle indexes fast.
*/
if (if_name) {
- int len1, len2;
-
- len1 = min(SCTP_IFNAMSIZ, strlen(if_name));
- len2 = min(SCTP_IFNAMSIZ, strlen(sctp_ifap->ifn_p->ifn_name));
- if (len1 && len2 && (len1 == len2)) {
- /* we can compare them */
- if (strncmp(if_name, sctp_ifap->ifn_p->ifn_name, len1) == 0) {
- /*
- * They match its a correct
- * delete
- */
- valid = 1;
- }
+ if (strncmp(if_name, sctp_ifap->ifn_p->ifn_name, SCTP_IFNAMSIZ) == 0) {
+ /* They match its a correct delete */
+ valid = 1;
}
}
if (!valid) {
OpenPOWER on IntegriCloud