Fix illegal memory access with strncpy in wmesh_bridge_set_stp() 24/164424/2
authorTaesoo Jun <steve.jun@samsung.com>
Tue, 19 Dec 2017 05:22:44 +0000 (14:22 +0900)
committersaerome kim <saerome.kim@samsung.com>
Tue, 19 Dec 2017 05:27:47 +0000 (05:27 +0000)
Change-Id: Ibff94e2325a8b48341a079d9b3e20cf2d63dbfe9

src/wmesh-bridge.c

index 0a0cd56..20481e8 100644 (file)
@@ -243,7 +243,7 @@ int wmesh_bridge_set_stp(const char* bridge_name, bool state)
                BRCTL_SET_BRIDGE_STP_STATE,
                stp_state, 0, 0 };
 
-       if (NULL == bridge_name || strlen(bridge_name) > IFNAMSIZ) {
+       if (NULL == bridge_name || strlen(bridge_name) > IFNAMSIZ - 1) {
                WMESH_LOGE("Invalid parameter [%p]", bridge_name);
                return WMESHD_ERROR_INVALID_PARAMETER;
        }
@@ -256,7 +256,7 @@ int wmesh_bridge_set_stp(const char* bridge_name, bool state)
                return WMESHD_ERROR_IO_ERROR;
        }
 
-       strncpy(ifr.ifr_name, bridge_name, IFNAMSIZ);
+       snprintf(ifr.ifr_name, IFNAMSIZ, "%s", bridge_name);
        ifr.ifr_data = (char *)arg;
 
        val = ioctl(br_fd, SIOCDEVPRIVATE, &ifr);