diff --git a/0001-Fix-two-gcc-11-compiler-warnings.patch b/0001-Fix-two-gcc-11-compiler-warnings.patch deleted file mode 100644 index be197347a164de436b7c5fc396ed83dbfc9949d9..0000000000000000000000000000000000000000 --- a/0001-Fix-two-gcc-11-compiler-warnings.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 66616e988778c45a316d6b286fda732843f25297 Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Mon, 22 Mar 2021 18:28:33 -0700 -Subject: [PATCH] Fix two gcc-11 compiler warnings. - -Gcc-11 is aggressive about gaurding against array copies. So be -clear about what we want to copy, and where we are copying it. - -Changes from V1: -* simplified both cases based on review comments -* no need to copy the data twice - -reference: https://github.com/morbidrsa/fcoe-utils/commit/66616e988778c45a316d6b286fda732843f25297 ---- - fcping.c | 8 ++++++-- - fipvlan.c | 11 +++++++++-- - 2 files changed, 15 insertions(+), 4 deletions(-) - -diff --git a/fcping.c b/fcping.c -index bf2bc0f0c78..21830a52524 100644 ---- a/fcping.c -+++ b/fcping.c -@@ -570,6 +570,7 @@ fp_ns_get_id(uint32_t op, fc_wwn_t wwn, char *response, size_t *resp_len) - struct sg_io_v4 sg_io; - size_t actual_len; - int cmd, rc = 0; -+ uint32_t *uct = (uint32_t *)&ct.hdr; - - memset((char *)&cdb, 0, sizeof(cdb)); - memset(&ct, 0, sizeof(ct)); -@@ -584,8 +585,11 @@ fp_ns_get_id(uint32_t op, fc_wwn_t wwn, char *response, size_t *resp_len) - - cdb.msgcode = FC_BSG_HST_CT; - hton24(cdb.rqst_data.h_ct.port_id, 0xfffffc); -- memcpy(&cdb.rqst_data.h_ct.preamble_word0, &ct.hdr, -- 3 * sizeof(uint32_t)); -+ -+ /* copy preamble words one at a time, to make compiler happy */ -+ cdb.rqst_data.h_ct.preamble_word0 = uct[0]; -+ cdb.rqst_data.h_ct.preamble_word1 = uct[1]; -+ cdb.rqst_data.h_ct.preamble_word2 = uct[2]; - - sg_io.guard = 'Q'; - sg_io.protocol = BSG_PROTOCOL_SCSI; -diff --git a/fipvlan.c b/fipvlan.c -index c8a07339314..4433c0abf76 100644 ---- a/fipvlan.c -+++ b/fipvlan.c -@@ -447,8 +447,15 @@ static void rtnl_recv_newlink(struct nlmsghdr *nh) - iff->iflink = *(int *)RTA_DATA(ifla[IFLA_LINK]); - else - iff->iflink = iff->ifindex; -- memcpy(iff->mac_addr, RTA_DATA(ifla[IFLA_ADDRESS]), ETHER_ADDR_LEN); -- strncpy(iff->ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ); -+ -+ /* -+ * copy MAC address and interface name using intermediate -+ * arrays, so gcc-11 knows we are not overflowing buffers -+ */ -+ if (ifla[IFLA_ADDRESS]) -+ memcpy(iff->mac_addr, RTA_DATA(ifla[IFLA_ADDRESS]), ETHER_ADDR_LEN); -+ if (ifla[IFLA_IFNAME]) -+ memcpy(iff->ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ); - iff->ifname[IFNAMSIZ - 1] = '\0'; - - if (ifla[IFLA_LINKINFO]) { --- -2.39.1 - diff --git a/backport-00-Revert_Make_gcc_compiler_happy_about_ifname_string.patch b/backport-00-Revert_Make_gcc_compiler_happy_about_ifname_string.patch deleted file mode 100644 index 026bbe2e323c718303f294dda2ac36f975cc9076..0000000000000000000000000000000000000000 --- a/backport-00-Revert_Make_gcc_compiler_happy_about_ifname_string.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 1e6837c8ce063399eeb9580104da33f807e15443 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Tue, 23 Mar 2021 11:16:06 -0700 -Subject: [PATCH] Revert "Make gcc compiler happy about ifname string - truncation." - -This change dropped the "." from between the physical interface name and -the vlan number, making fipvlan created vlan names incompatible with -fcoeadm commands that ended up calling get_pci_dev_from_netdev in -lib/sysfs_hba.c (fcoeadm -i). That requirement should be fixed, but for -now lets deal with the fipvlan naming regression. - -safe_makevlan_name isn't doing anything that can't be handled by -checking the return from snprintf - -This reverts commit eee875e6526786031ec916274deec92148677c38. - -Signed-off-by: Chris Leech ---- - fipvlan.c | 34 +--------------------------------- - 1 file changed, 1 insertion(+), 33 deletions(-) - -diff --git a/fipvlan.c b/fipvlan.c -index c8a07339314..fe8d7955cc5 100644 ---- a/fipvlan.c -+++ b/fipvlan.c -@@ -595,36 +595,6 @@ static int rtnl_listener_handler(struct nlmsghdr *nh, UNUSED void *arg) - return -1; - } - --static int --safe_makevlan_name(char *vlan_name, size_t vsz, -- char *ifname, int vlan_num, char *suffix) --{ -- size_t ifsz = strlen(ifname); -- size_t susz = strlen(suffix); /* should never be NULL */ -- int nusz; -- char numbuf[16]; -- char *cp = vlan_name; -- -- nusz = snprintf(numbuf, sizeof(numbuf), "%d", vlan_num); -- -- if ((ifsz + susz + nusz + 2) > vsz) { -- FIP_LOG_ERR(EINVAL, -- "Cannot make VLAN name from ifname=\"%s\", vlan %d, and suffix=\"%s\"\n", -- ifname, vlan_num, suffix); -- return -EINVAL; -- } -- memcpy(cp, ifname, ifsz); -- cp += ifsz; -- memcpy(cp, numbuf, nusz); -- cp += nusz; -- if (susz > 0) { -- memcpy(cp, suffix, susz); -- cp += susz; -- } -- *cp = '\0'; -- return 0; --} -- - static int - create_and_start_vlan(struct fcf *fcf, bool vn2vn) - { -@@ -654,10 +624,8 @@ create_and_start_vlan(struct fcf *fcf, bool vn2vn) - real_dev->ifname, fcf->vlan, vlan->ifname); - rc = 0; - } else { -- rc = safe_makevlan_name(vlan_name, sizeof(vlan_name), -+ snprintf(vlan_name, IFNAMSIZ, "%s.%d%s", - real_dev->ifname, fcf->vlan, config.suffix); -- if (rc < 0) -- return rc; - rc = vlan_create(fcf->ifindex, fcf->vlan, vlan_name); - if (rc < 0) - printf("Failed to create VLAN device %s\n\t%s\n", diff --git a/backport-01-fix_VLAN_device_name_overflow_check.patch b/backport-01-fix_VLAN_device_name_overflow_check.patch deleted file mode 100644 index 9ce9f60103bd31fac42e96f33b0574824850dbb5..0000000000000000000000000000000000000000 --- a/backport-01-fix_VLAN_device_name_overflow_check.patch +++ /dev/null @@ -1,35 +0,0 @@ -From b9885692cb283a674e04528486984fb61f92a190 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Tue, 23 Mar 2021 11:21:17 -0700 -Subject: [PATCH] fix VLAN device name overflow check - -check snprintf return for truncation - -Signed-off-by: Chris Leech ---- - fipvlan.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/fipvlan.c b/fipvlan.c -index fe8d7955cc5..3ce913d5eaf 100644 ---- a/fipvlan.c -+++ b/fipvlan.c -@@ -624,8 +624,16 @@ create_and_start_vlan(struct fcf *fcf, bool vn2vn) - real_dev->ifname, fcf->vlan, vlan->ifname); - rc = 0; - } else { -- snprintf(vlan_name, IFNAMSIZ, "%s.%d%s", -- real_dev->ifname, fcf->vlan, config.suffix); -+ rc = snprintf(vlan_name, IFNAMSIZ, "%s.%d%s", -+ real_dev->ifname, fcf->vlan, -+ config.suffix); -+ if (rc < 0 || rc >= IFNAMSIZ) { -+ printf("Failed to create VLAN device " -+ "(name %s.%d%s is too long)\n", -+ real_dev->ifname, fcf->vlan, -+ config.suffix); -+ return -EINVAL; -+ } - rc = vlan_create(fcf->ifindex, fcf->vlan, vlan_name); - if (rc < 0) - printf("Failed to create VLAN device %s\n\t%s\n", diff --git a/backport-02-string_op_truncation_format_trauncation.patch b/backport-02-string_op_truncation_format_trauncation.patch deleted file mode 100644 index 4b3e074d9497fa17e874d1221a7fc3c53cd48494..0000000000000000000000000000000000000000 --- a/backport-02-string_op_truncation_format_trauncation.patch +++ /dev/null @@ -1,441 +0,0 @@ -From 329d7721a40e94547186bf680ba5ae033dda3006 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Fri, 18 Sep 2020 10:20:57 -0700 -Subject: [PATCH] 21 string-op truncation, format truncation, and format - overflow errors - -This isn't a full audit of the source, just addressing anything gcc 10.2 flagged. - -There's two basic mitigations added, depending on the likelyhood and severity -of truncation to correct functioning. - -1) When a truncation is unlikely (copy between two IFNAMSIZ buffers) or -non-critical (output formating) I forced a null-terminiation at the buffer end -after a strncpy to satisfy the compiler. - -2) Where truncation needs proper detection and handling, I used snprintf and -corrected the error checking. - -Signed-off-by: Chris Leech ---- - fcoeadm.c | 8 +++--- - fcoeadm_display.c | 62 ++++++++++++++++++++++++++++++++++------------- - fcoemon.c | 44 ++++++++++++++++++++++++++------- - fipvlan.c | 5 +++- - lib/fcoe_utils.c | 17 ++++++------- - lib/sysfs_hba.c | 6 +++++ - libopenfcoe.c | 4 ++- - 7 files changed, 106 insertions(+), 40 deletions(-) - -diff --git a/fcoeadm.c b/fcoeadm.c -index 776b4e32b2e..8b9112d63c3 100644 ---- a/fcoeadm.c -+++ b/fcoeadm.c -@@ -185,9 +185,10 @@ fcoeadm_action(enum clif_action cmd, char *ifname, enum clif_flags flags) - struct clif_sock_info clif_info; - int rc; - -- if (ifname) -- strncpy(data.ifname, ifname, sizeof(data.ifname)); -- else -+ if (ifname) { -+ strncpy(data.ifname, ifname, IFNAMSIZ); -+ data.ifname[IFNAMSIZ - 1] = '\0'; -+ } else - data.ifname[0] = '\0'; - data.cmd = cmd; - data.flags = flags; -@@ -232,6 +233,7 @@ int main(int argc, char *argv[]) - * expects progname to be valid. - */ - strncpy(progname, basename(argv[0]), sizeof(progname)); -+ progname[sizeof(progname) - 1] = '\0'; - - /* check if we have sysfs */ - if (fcoe_checkdir(SYSFS_MOUNT)) { -diff --git a/fcoeadm_display.c b/fcoeadm_display.c -index 7d29422e91f..4b1d358d1c8 100644 ---- a/fcoeadm_display.c -+++ b/fcoeadm_display.c -@@ -188,6 +188,7 @@ static void sa_dir_crawl(char *dir_name, //30yuan ma wu gai han shu - struct dirent *dp; - void (*f)(char *dirname, enum disp_style style); - char path[1024]; -+ int rc; - - f = func; - -@@ -199,8 +200,9 @@ static void sa_dir_crawl(char *dir_name, - if (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || - (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) - continue; -- snprintf(path, sizeof(path), "%s/%s", dir_name, dp->d_name); -- -+ rc = snprintf(path, sizeof(path), "%s/%s", dir_name, dp->d_name); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) -+ continue; - f(path, style); - } - closedir(dir); -@@ -254,10 +256,13 @@ 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", -- hba, port, tgt, lun); -+ rc = snprintf(path, sizeof(path), -+ "/sys/class/scsi_device/%u:%u:%u:%u", -+ hba, port, tgt, lun); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) -+ return; - - rport_attrs = get_rport_attribs_by_device(path); - if (!rport_attrs) -@@ -287,10 +292,14 @@ 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 || (size_t) rc >= sizeof(npath)) -+ continue; - 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 || (size_t) rc >= sizeof(npath)) -+ continue; - sa_sys_read_u32(npath, "hw_sector_size", &blksize); - } - -@@ -340,10 +349,13 @@ 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/", -- hba, port, tgt, lun); -+ rc = snprintf(path, sizeof(path), -+ "/sys/class/scsi_device/%u:%u:%u:%u/device/", -+ hba, port, tgt, lun); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) -+ return; - - sa_sys_read_line(path, "rev", rev, sizeof(rev)); - sa_sys_read_line(path, "model", model, sizeof(model)); -@@ -363,10 +375,14 @@ 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 || (size_t) rc >= sizeof(npath)) -+ continue; - 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 || (size_t) rc >= sizeof(npath)) -+ continue; - sa_sys_read_u32(npath, "hw_sector_size", &blksize); - } - -@@ -419,8 +435,11 @@ static void list_luns_by_rport(char *rport, enum disp_style style) - char *substr; - int len; - int ret; -+ int rc; - -- snprintf(path, sizeof(path), "/sys/class/fc_remote_ports/%s", rport); -+ rc = snprintf(path, sizeof(path), "/sys/class/fc_remote_ports/%s", rport); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) -+ return; - - ret = readlink(path, link, sizeof(link)); - if (ret == -1) -@@ -430,7 +449,9 @@ static void list_luns_by_rport(char *rport, enum disp_style style) - link[ret] = '\0'; - - substr = strstr(link, "net"); -- snprintf(path, sizeof(path), "/sys/class/%s", substr); -+ rc = snprintf(path, sizeof(path), "/sys/class/%s", substr); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) -+ return; - - substr = strstr(path, "fc_remote_ports"); - -@@ -560,11 +581,16 @@ static int get_host_from_vport(struct dirent *dp, - static int crawl_vports(struct dirent *dp, void *arg) - { - char *oldpath = arg; -+ int rc; - - if (!strncmp(dp->d_name, "vport", strlen("vport"))) { - char path[1024]; - -- snprintf(path, sizeof(path), "%s/%s", oldpath, dp->d_name); -+ rc = snprintf(path, sizeof(path), "%s/%s", oldpath, dp->d_name); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) { -+ // ignore error and continue -+ return 0; -+ } - sa_dir_read(path, get_host_from_vport, NULL); - } - return 0; -@@ -573,10 +599,12 @@ static int crawl_vports(struct dirent *dp, void *arg)wl_vports - static void show_host_vports(const char *host) - { - char path[1024]; -+ int rc; - -- snprintf(path, sizeof(path), "%s/%s/device/", SYSFS_HOST_DIR, host); -+ rc = snprintf(path, sizeof(path), "%s/%s/device/", SYSFS_HOST_DIR, host); -+ if (rc < 0 || (size_t) rc >= sizeof(path)) -+ return; - sa_dir_read(path, crawl_vports, path); -- - } - - static enum fcoe_status display_one_adapter_info(char *ifname) -diff --git a/fcoemon.c b/fcoemon.c -index 60dbc1e444d..8c08bc5a032 100644 ---- a/fcoemon.c -+++ b/fcoemon.c -@@ -518,6 +518,7 @@ static int fcm_read_config_files(void) - } - strncpy(file, CONFIG_DIR "/", sizeof(file)); - strncat(file, dp->d_name, sizeof(file) - strlen(file)); -+ file[sizeof(file) - 1] = '\0'; - fp = fopen(file, "r"); - if (!fp) { - FCM_LOG_ERR(errno, "Failed to read %s\n", file); -@@ -939,6 +940,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 +949,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 < 0 || (size_t) 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); -@@ -1077,6 +1086,7 @@ static void fcm_vlan_dev_real_dev(char *vlan_ifname, char *real_ifname) - { - int fd; - struct vlan_ioctl_args ifv; -+ int rc; - - real_ifname[0] = '\0'; - -@@ -1093,9 +1103,18 @@ static void fcm_vlan_dev_real_dev(char *vlan_ifname, char *real_ifname) - FCM_LOG_ERR(ENOSPC, "no room for vlan ifname"); - goto close_fd; - } -- strncpy(ifv.device1, vlan_ifname, sizeof(ifv.device1)); -- if (ioctl(fd, SIOCGIFVLAN, &ifv) == 0) -- strncpy(real_ifname, ifv.u.device2, IFNAMSIZ-1); -+ -+ rc = snprintf(ifv.device1, IFNAMSIZ, "%s", vlan_ifname); -+ if (rc < 0 || rc >= IFNAMSIZ) -+ goto close_fd; -+ -+ if (ioctl(fd, SIOCGIFVLAN, &ifv) == 0) { -+ rc = snprintf(real_ifname, IFNAMSIZ, "%s", ifv.u.device2); -+ if (rc < 0 || rc >= IFNAMSIZ) { -+ real_ifname[0] = '\0'; -+ goto close_fd; -+ } -+ } - close_fd: - close(fd); - } -@@ -1647,8 +1666,10 @@ static void fcm_process_link_msg(struct ifinfomsg *ip, int len, unsigned type) - /* try to find the real device name */ - real_dev[0] = '\0'; - fcm_vlan_dev_real_dev(ifname, real_dev); -- if (strlen(real_dev)) -- strncpy(p->real_ifname, real_dev, IFNAMSIZ-1); -+ if (strlen(real_dev)) { -+ strncpy(p->real_ifname, real_dev, IFNAMSIZ); -+ p->real_ifname[IFNAMSIZ - 1] = '\0'; -+ } - if (p->ready) - update_fcoe_port_state(p, type, operstate, - FCP_CFG_IFNAME); -@@ -1660,7 +1681,8 @@ static void fcm_process_link_msg(struct ifinfomsg *ip, int len, unsigned type) - if (p) { - p->ifindex = ifindex; - memcpy(p->mac, mac, ETHER_ADDR_LEN); -- strncpy(p->real_ifname, ifname, IFNAMSIZ-1); -+ strncpy(p->real_ifname, ifname, IFNAMSIZ); -+ p->real_ifname[IFNAMSIZ - 1] = '\0'; - update_fcoe_port_state(p, type, operstate, - FCP_REAL_IFNAME); - } -@@ -1788,7 +1810,9 @@ static void fcm_process_ieee_msg(struct nlmsghdr *nlh) - if (rta_parent->rta_type != DCB_ATTR_IFNAME) - return; - -- strncpy(ifname, NLA_DATA(rta_parent), sizeof(ifname)); -+ strncpy(ifname, NLA_DATA(rta_parent), IFNAMSIZ); -+ ifname[IFNAMSIZ - 1] = '\0'; -+ - ff = fcm_netif_lookup_create(ifname); - if (!ff) { - FCM_LOG("Processing IEEE message: %s not found or created\n", -@@ -3699,6 +3723,8 @@ int main(int argc, char **argv) - memset(&fcoe_config, 0, sizeof(fcoe_config)); - - strncpy(progname, basename(argv[0]), sizeof(progname)); -+ progname[sizeof(progname) - 1] = '\0'; -+ - sa_log_prefix = progname; - sa_log_flags = 0; - openlog(sa_log_prefix, LOG_CONS, LOG_DAEMON); -diff --git a/fipvlan.c b/fipvlan.c -index 2e9a8f2b047..c8a07339314 100644 ---- a/fipvlan.c -+++ b/fipvlan.c -@@ -449,6 +449,7 @@ static void rtnl_recv_newlink(struct nlmsghdr *nh) - iff->iflink = iff->ifindex; - memcpy(iff->mac_addr, RTA_DATA(ifla[IFLA_ADDRESS]), ETHER_ADDR_LEN); - strncpy(iff->ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ); -+ iff->ifname[IFNAMSIZ - 1] = '\0'; - - if (ifla[IFLA_LINKINFO]) { - parse_linkinfo(linkinfo, ifla[IFLA_LINKINFO]); -@@ -541,8 +542,10 @@ static void parse_cmdline(int argc, char **argv) - config.start = true; - break; - case 'f': -- if (optarg && strlen(optarg)) -+ if (optarg && strlen(optarg)) { - strncpy(config.suffix, optarg, 256); -+ config.suffix[256 - 1] = '\0'; -+ } - break; - case 'l': - config.link_retry = strtoul(optarg, NULL, 10); -diff --git a/lib/fcoe_utils.c b/lib/fcoe_utils.c -index 516eac5247d..4d13dd7ecf9 100644 ---- a/lib/fcoe_utils.c -+++ b/lib/fcoe_utils.c -@@ -68,9 +68,10 @@ static int fcoe_check_fchost(const char *ifname, const char *dname) - - enum fcoe_status fcoe_find_fchost(const char *ifname, char *fchost, int len) - { -- int n, dname_len, status; -+ int n, status; - struct dirent **namelist; - int rc = ENOFCOECONN; -+ int rrc; - - status = n = scandir(SYSFS_FCHOST, &namelist, 0, alphasort); - -@@ -78,19 +79,17 @@ enum fcoe_status fcoe_find_fchost(const char *ifname, char *fchost, int len) - if (rc) { - /* check symbolic name */ - if (!fcoe_check_fchost(ifname, namelist[n]->d_name)) { -- dname_len = strnlen(namelist[n]->d_name, len); -- -- if (len > dname_len) { -- strncpy(fchost, namelist[n]->d_name, -- dname_len + 1); -- /* rc = 0 indicates found */ -- rc = SUCCESS; -- } else { -+ rrc = snprintf(fchost, len, "%s", namelist[n]->d_name); -+ if (rrc < 0 || rrc >= len) { -+ fchost[0] = '\0'; - /* - * The fc_host is too large - * for the buffer. - */ - rc = EINTERR; -+ } else { -+ /* rc = 0 indicates found */ -+ rc = SUCCESS; - } - } - } -diff --git a/lib/sysfs_hba.c b/lib/sysfs_hba.c -index ce781e2e0ed..a8d557e92b5 100644 ---- a/lib/sysfs_hba.c -+++ b/lib/sysfs_hba.c -@@ -215,6 +215,7 @@ static void get_pci_device_info(struct pci_device *dev, struct hba_info *info) - vname = unknown; - - strncpy(info->manufacturer, vname, sizeof(info->manufacturer)); -+ info->manufacturer[sizeof(info->manufacturer) - 1] = '\0'; - - dname = pci_device_get_device_name(dev); - if (!dname) -@@ -222,6 +223,7 @@ static void get_pci_device_info(struct pci_device *dev, struct hba_info *info) - - strncpy(info->model_description, dname, - sizeof(info->model_description)); -+ info->model_description[sizeof(info->model_description) - 1] = '\0'; - - pci_device_cfg_read_u8(dev, &revision, PCI_REVISION_ID); - snprintf(info->hardware_version, sizeof(info->hardware_version), -@@ -259,6 +261,7 @@ static void get_module_info(const char *pcidev, struct hba_info *info) - strncpy(info->driver_name, - strstr(buf, "module") + strlen("module") + 1, - sizeof(info->driver_name)); -+ info->driver_name[sizeof(info->driver_name) - 1] = '\0'; - - } - -@@ -316,6 +319,8 @@ struct port_attributes *get_rport_attribs(const char *rport) - goto free_path; - - strncpy(pa->device_name, rport, sizeof(pa->device_name)); -+ pa->device_name[sizeof(pa->device_name) - 1] = '\0'; -+ - sa_sys_read_line(path, "node_name", pa->node_name, - sizeof(pa->node_name)); - sa_sys_read_line(path, "port_name", pa->port_name, -@@ -391,6 +396,7 @@ struct port_attributes *get_port_attribs(const char *host) - goto free_path; - - strncpy(pa->device_name, host, sizeof(pa->device_name)); -+ pa->device_name[sizeof(pa->device_name) - 1] = '\0'; - - sa_sys_read_line(path, "symbolic_name", pa->symbolic_name, - sizeof(pa->symbolic_name)); -diff --git a/libopenfcoe.c b/libopenfcoe.c -index c3fd1b031f8..452ee803e63 100644 ---- a/libopenfcoe.c -+++ b/libopenfcoe.c -@@ -207,7 +207,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/backport-03-use-of-uninitialized-values-detected-during-LTO.patch b/backport-03-use-of-uninitialized-values-detected-during-LTO.patch deleted file mode 100644 index 8cc3fb1eb7b6c12cf6ef5db6917976e6daab7a74..0000000000000000000000000000000000000000 --- a/backport-03-use-of-uninitialized-values-detected-during-LTO.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 64254aee4509192831b9f9cf695abd81a9656f00 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Mon, 21 Sep 2020 09:33:23 -0700 -Subject: [PATCH 2/2] use of uninitialized values detected during LTO - -lto-wrapper build errors - -Signed-off-by: Chris Leech ---- - fcoeadm_display.c | 2 +- - lib/sysfs_hba.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/fcoeadm_display.c b/fcoeadm_display.c -index 4b1d358d1c8..585ecfae54e 100644 ---- a/fcoeadm_display.c -+++ b/fcoeadm_display.c -@@ -348,7 +348,7 @@ static void show_short_lun_info(unsigned int hba, unsigned int port, - uint32_t blksize = 0; - char *capstr = "Unknown"; - char *osname = "Unknown"; -- uint64_t size; -+ uint64_t size = 0; - int rc; - - rc = snprintf(path, sizeof(path), -diff --git a/lib/sysfs_hba.c b/lib/sysfs_hba.c -index a8d557e92b5..381f335d7ea 100644 ---- a/lib/sysfs_hba.c -+++ b/lib/sysfs_hba.c -@@ -528,7 +528,7 @@ char *get_host_by_fcid(uint32_t fcid) - DIR *dir; - char *host = NULL; - char path[1024]; -- uint32_t port_id; -+ uint32_t port_id = 0; - - dir = opendir(SYSFS_HOST_DIR); - if (!dir) -@@ -562,7 +562,7 @@ char *get_rport_by_fcid(uint32_t fcid) - DIR *dir; - char *rport = NULL; - char path[1024]; -- uint32_t port_id; -+ uint32_t port_id = 0; - - dir = opendir(SYSFS_RPORT_DIR); - if (!dir) --- -2.18.1 diff --git a/backport-Fix-build-error-to-change-char-type.patch b/backport-Fix-build-error-to-change-char-type.patch deleted file mode 100644 index 667ca360bd9b79cf52ded217733606938f2d0043..0000000000000000000000000000000000000000 --- a/backport-Fix-build-error-to-change-char-type.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 7f4c8df2adb258d61be3df7cee24afef2901629d Mon Sep 17 00:00:00 2001 -From: Guillaume Gardet -Date: Thu, 20 Aug 2020 09:55:47 +0000 -Subject: [PATCH 1/1] char can be unsigned on arm, so set signed explicitly as - the check expects it can be negative - ---- - fcnsq.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fcnsq.c b/fcnsq.c -index 1597cd5..c59c428 100644 ---- a/fcnsq.c -+++ b/fcnsq.c -@@ -381,7 +381,7 @@ int main(int argc, char *argv[]) - u64 wwnn = 0; - int rc = 0; - enum commands cmd = 0; -- char c; -+ signed char c; - uintmax_t wwnn_tmp = 0; - - while(1) { diff --git a/fcoe-utils-1.0.33.tar.gz b/fcoe-utils-1.0.33.tar.gz deleted file mode 100644 index c7c434d196cda700b6b2792b68290804a54eb7dc..0000000000000000000000000000000000000000 Binary files a/fcoe-utils-1.0.33.tar.gz and /dev/null differ diff --git a/fcoe-utils-1.0.34.tar.gz b/fcoe-utils-1.0.34.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5b391c1d4c25d01038eee4dcaed846a1ed928342 Binary files /dev/null and b/fcoe-utils-1.0.34.tar.gz differ diff --git a/fcoe-utils.spec b/fcoe-utils.spec index 7f7c25499e54d81de53545f96128f5ec2d75ae7b..f2b36c58af4bd3d01366af4cac661a3488d0380c 100644 --- a/fcoe-utils.spec +++ b/fcoe-utils.spec @@ -1,20 +1,14 @@ Name: fcoe-utils -Version: 1.0.33 -Release: 5 +Version: 1.0.34 +Release: 1 Summary: Fibre Channel over Ethernet utilities License: GPLv2 URL: https://github.com/morbidrsa/fcoe-utils -Source0: https://github.com/morbidrsa/fcoe-utils/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source0: https://github.com/openSUSE/fcoe-utils/archive/v{version}/%{name}-%{version}.tar.gz Source1: quickstart.txt -Patch0: backport-00-Revert_Make_gcc_compiler_happy_about_ifname_string.patch -Patch1: backport-01-fix_VLAN_device_name_overflow_check.patch -Patch2: backport-02-string_op_truncation_format_trauncation.patch -Patch3: backport-03-use-of-uninitialized-values-detected-during-LTO.patch #This patch refer to ubuntu's version -Patch4: backport-Fix-build-error-to-change-char-type.patch -Patch5: 0001-Fix-two-gcc-11-compiler-warnings.patch -Patch6: 0001-Fix-GCC-12-warning.patch -Patch7: 0001-fcoemon-add-snprintf-string-precision-modifiers-in-f.patch +Patch1: 0001-Fix-GCC-12-warning.patch +Patch2: 0001-fcoemon-add-snprintf-string-precision-modifiers-in-f.patch BuildRequires: autoconf automake libpciaccess-devel libtool lldpad-devel systemd Requires: lldpad iproute device-mapper-multipath @@ -74,6 +68,9 @@ done %{_mandir}/man8/* %changelog +* Sat Oct 07 2023 xu_ping <707078654@qq.com> - 1.0.34-1 +- Upgrade version to 1.0.34 + * Thu Aug 24 2023 Xiaoya Huang - 1.0.33-5 - Fix clang build error