From 9ba23532546ecf68c4eecee4ec9a0e9a38f23ae2 Mon Sep 17 00:00:00 2001 From: Skylar Chang Date: Wed, 15 Mar 2017 18:34:26 -0700 Subject: IPACM: fix the security issue in ConntrackClient Fix the security issue in IPACM ConntrackClient. Change-Id: Ia586d9916fc6391ffce436fba9b1ceae1220bc48 Signed-off-by: Skylar Chang Acked-by: Shihuan Liu --- data-ipa-cfg-mgr/ipacm/src/IPACM_ConntrackClient.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/data-ipa-cfg-mgr/ipacm/src/IPACM_ConntrackClient.cpp b/data-ipa-cfg-mgr/ipacm/src/IPACM_ConntrackClient.cpp index 146cedb..23724fd 100644 --- a/data-ipa-cfg-mgr/ipacm/src/IPACM_ConntrackClient.cpp +++ b/data-ipa-cfg-mgr/ipacm/src/IPACM_ConntrackClient.cpp @@ -169,10 +169,18 @@ int IPACM_ConntrackClient::IPA_Conntrack_Filters_Ignore_Bridge_Addrs uint32_t ipv4_addr; struct ifreq ifr; + if(strlen(IPACM_Iface::ipacmcfg->ipa_virtual_iface_name) >= sizeof(ifr.ifr_name)) + { + IPACMERR("interface name overflows: len %d\n", + strlen(IPACM_Iface::ipacmcfg->ipa_virtual_iface_name)); + close(fd); + return -1; + } + /* retrieve bridge interface ipv4 address */ memset(&ifr, 0, sizeof(struct ifreq)); ifr.ifr_addr.sa_family = AF_INET; - (void)strncpy(ifr.ifr_name, IPACM_Iface::ipacmcfg->ipa_virtual_iface_name, sizeof(ifr.ifr_name)); + (void)strlcpy(ifr.ifr_name, IPACM_Iface::ipacmcfg->ipa_virtual_iface_name, sizeof(ifr.ifr_name)); IPACMDBG("bridge interface name (%s)\n", ifr.ifr_name); ret = ioctl(fd, SIOCGIFADDR, &ifr); -- cgit v1.2.3