| From 61291de03cb6dd1aea2a633eb72951f3fe453e7f Mon Sep 17 00:00:00 2001 |
| From: Aaron Conole <aconole@redhat.com> |
| Date: Mon, 3 Aug 2020 15:33:08 -0400 |
| Subject: [PATCH 8/9] stringops: fix some string copy errors |
| |
| Reported when using gcc-10. |
| |
| Signed-off-by: Aaron Conole <aconole@redhat.com> |
| --- |
| dcb_protocol.c | 13 ++++--------- |
| lldp/ports.c | 2 +- |
| 2 files changed, 5 insertions(+), 10 deletions(-) |
| |
| diff --git a/dcb_protocol.c b/dcb_protocol.c |
| index 75ca139..930251b 100644 |
| --- a/dcb_protocol.c |
| +++ b/dcb_protocol.c |
| @@ -2257,13 +2257,8 @@ cmd_status get_bwg_descrpt(char *device_name, u8 bwgid, char **name) |
| |
| if ((it != NULL) && |
| (bwgid < it->second->max_pgid_desc)) { |
| - size = (int)strlen(it->second->pgid_desc[bwgid]) + |
| - sizeof(char); /* Localization OK */ |
| - *name = (char*)malloc(size); |
| - if (*name != NULL) { |
| - strncpy(*name, it->second->pgid_desc[bwgid], |
| - size); /* Localization OK */ |
| - } else { |
| + *name = strdup(it->second->pgid_desc[bwgid]); |
| + if (*name == NULL) { |
| goto Error; |
| } |
| } else { |
| @@ -2272,9 +2267,9 @@ cmd_status get_bwg_descrpt(char *device_name, u8 bwgid, char **name) |
| size = (int)strlen( |
| attribs.descript.pgid_desc[bwgid]) + |
| sizeof(char); |
| - *name = (char*)malloc(size); |
| + *name = (char*)calloc(size, sizeof(char)); |
| if (*name != NULL) { |
| - memcpy(*name, attribs.descript.pgid_desc[bwgid], size); /* Localization OK */ |
| + memcpy(*name, attribs.descript.pgid_desc[bwgid], size - 1); /* Localization OK */ |
| } else { |
| goto Error; |
| } |
| diff --git a/lldp/ports.c b/lldp/ports.c |
| index 6384f14..9b681f7 100644 |
| --- a/lldp/ports.c |
| +++ b/lldp/ports.c |
| @@ -264,7 +264,7 @@ struct port *add_port(int ifindex, const char *ifname) |
| memset(newport, 0, sizeof(*newport)); |
| newport->ifindex = ifindex; |
| newport->next = NULL; |
| - strncpy(newport->ifname, ifname, IFNAMSIZ); |
| + strncpy(newport->ifname, ifname, IFNAMSIZ - 1); |
| |
| newport->bond_master = is_bond(ifname); |
| /* Initialize relevant port variables */ |
| -- |
| 2.28.0 |
| |