diff --git a/fcoe-utils-ggc8-fmt-truc-err.patch b/fcoe-utils-ggc8-fmt-truc-err.patch new file mode 100644 index 0000000..29850ec --- /dev/null +++ b/fcoe-utils-ggc8-fmt-truc-err.patch @@ -0,0 +1,130 @@ +From: Chris Leech +Subject: fix build warnings/errors with GCC format-truncation checks + +Bugzilla: ZZZ +Upstream Status: +Build Info: XXX +Tested: + +commit 9d8c43e3e81752906f4fc58fa656a98bafa1d4a1 +Author: Chris Leech +Date: Fri Mar 16 09:48:26 2018 -0700 + + fix build warnings/errors with GCC format-truncation checks + +diff --git a/fcoeadm_display.c b/fcoeadm_display.c +index 120c6084b7ca..f10cfb53d454 100644 +--- a/fcoeadm_display.c ++++ b/fcoeadm_display.c +@@ -254,6 +254,7 @@ static void show_full_lun_info(unsigned int hba, unsigned int port, + struct dirent *dp; + struct port_attributes *rport_attrs; + struct port_attributes *port_attrs; ++ int rc; + + snprintf(path, sizeof(path), + "/sys/class/scsi_device/%u:%u:%u:%u", +@@ -287,10 +288,18 @@ static void show_full_lun_info(unsigned int hba, unsigned int port, + + osname = dp->d_name; + +- snprintf(npath, sizeof(npath), "%s/%s/", path, osname); ++ rc = snprintf(npath, sizeof(npath), "%s/%s/", path, osname); ++ if (rc < 0 || rc >= sizeof(npath)) { ++ /* error or truncation, bailing out */ ++ return; ++ } + sa_sys_read_u64(npath, "size", &lba); + +- snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname); ++ rc = snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname); ++ if (rc < 0 || rc >= sizeof(npath)) { ++ /* error or truncation, bailing out */ ++ return; ++ } + sa_sys_read_u32(npath, "hw_sector_size", &blksize); + } + +@@ -340,6 +349,7 @@ static void show_short_lun_info(unsigned int hba, unsigned int port, + char *capstr = "Unknown"; + char *osname = "Unknown"; + uint64_t size; ++ int rc; + + snprintf(path, sizeof(path), + "/sys/class/scsi_device/%u:%u:%u:%u/device/", +@@ -363,10 +373,18 @@ static void show_short_lun_info(unsigned int hba, unsigned int port, + + osname = dp->d_name; + +- snprintf(npath, sizeof(npath), "%s/%s/", path, osname); ++ rc = snprintf(npath, sizeof(npath), "%s/%s/", path, osname); ++ if (rc < 0 || rc >= sizeof(npath)) { ++ /* error or truncation, bailing out */ ++ return; ++ } + sa_sys_read_u64(npath, "size", &size); + +- snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname); ++ rc = snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname); ++ if (rc < 0 || rc >= sizeof(npath)) { ++ /* error or truncation, bailing out */ ++ return; ++ } + sa_sys_read_u32(npath, "hw_sector_size", &blksize); + } + +diff --git a/fcoemon.c b/fcoemon.c +index 9a400c56b72a..bf73a0d4c89e 100644 +--- a/fcoemon.c ++++ b/fcoemon.c +@@ -939,6 +939,7 @@ static struct fcoe_port *fcm_new_vlan(int ifindex, int vid, bool vn2vn) + [false] = CLIF_FLAGS_FABRIC, + [true] = CLIF_FLAGS_VN2VN, + }; ++ int rc; + + if (vn2vn) + FCM_LOG_DBG("Auto VLAN found vn2vn on VID %d\n", vid); +@@ -947,8 +948,15 @@ static struct fcoe_port *fcm_new_vlan(int ifindex, int vid, bool vn2vn) + + if (rtnl_find_vlan(ifindex, vid, vlan_name)) { + rtnl_get_linkname(ifindex, real_name); +- snprintf(vlan_name, sizeof(vlan_name), FCOE_VLAN_FORMAT, +- real_name, vid); ++ rc = snprintf(vlan_name, sizeof(vlan_name), FCOE_VLAN_FORMAT, ++ real_name, vid); ++ if (rc >= sizeof(vlan_name)) { ++ FCM_LOG("Warning: Generating FCoE VLAN device name for" ++ "interface %s VLAN %d: format resulted in a" ++ "name larger than IFNAMSIZ\n", real_name, vid); ++ vlan_name[sizeof(vlan_name) - 1] = 0; ++ FCM_LOG("\tTruncating VLAN name to %s\n", vlan_name); ++ } + vlan_create(ifindex, vid, vlan_name); + } + rtnl_set_iff_up(0, vlan_name); +@@ -3549,7 +3557,7 @@ static void fcm_srv_receive(void *arg) + } + + cmd = data->cmd; +- strncpy(ifname, data->ifname, sizeof(data->ifname)); ++ strncpy(ifname, data->ifname, sizeof(ifname) - 1); + ifname[sizeof(data->ifname)] = 0; + + if (cmd != CLIF_PID_CMD) { +diff --git a/libopenfcoe.c b/libopenfcoe.c +index 07090d5a09aa..c1190adc2328 100644 +--- a/libopenfcoe.c ++++ b/libopenfcoe.c +@@ -179,7 +179,9 @@ static int read_fcoe_ctlr_device(struct dirent *dp, void *arg) + if (!rc) + goto fail; + +- sprintf(hpath, "%s/%s/", SYSFS_FCHOST, fchost); ++ rc = snprintf(hpath, MAX_STR_LEN, "%s/%s/", SYSFS_FCHOST, fchost); ++ if (rc < 0 || rc >= MAX_STR_LEN) ++ goto fail; + + rc = sa_sys_read_line(hpath, "symbolic_name", buf, sizeof(buf)); + diff --git a/fcoe-utils.spec b/fcoe-utils.spec index 299f0f1..91309f2 100644 --- a/fcoe-utils.spec +++ b/fcoe-utils.spec @@ -5,7 +5,7 @@ Name: fcoe-utils Version: 1.0.32 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fibre Channel over Ethernet utilities Group: Applications/System License: GPLv2 @@ -17,6 +17,7 @@ Source2: fcoe.service Source3: fcoe.config ExcludeArch: ppc s390 Patch0: fcoe-utils-ggc7-fmt-truc-err.patch +Patch1: fcoe-utils-ggc8-fmt-truc-err.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: libpciaccess-devel @@ -81,6 +82,9 @@ rm -f %{buildroot}/%{_sysconfdir}/fcoe/config %{_libexecdir}/fcoe/ %changelog +* Fri Mar 16 2018 Chris Leech - 1.0.32-5 +- fix some newer gcc 8 truncation format errors + * Wed Feb 07 2018 Fedora Release Engineering - 1.0.32-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild