diff options
Diffstat (limited to 'meta-networking/recipes-daemons/iscsi-initiator-utils/files/0002-libopeniscsiusr-iface-Set-strncpy-bounds-to-not-over.patch')
-rw-r--r-- | meta-networking/recipes-daemons/iscsi-initiator-utils/files/0002-libopeniscsiusr-iface-Set-strncpy-bounds-to-not-over.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0002-libopeniscsiusr-iface-Set-strncpy-bounds-to-not-over.patch b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0002-libopeniscsiusr-iface-Set-strncpy-bounds-to-not-over.patch new file mode 100644 index 0000000000..b7c87f4163 --- /dev/null +++ b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0002-libopeniscsiusr-iface-Set-strncpy-bounds-to-not-over.patch @@ -0,0 +1,41 @@ +From 56a56567d4f334b119e60c4ef0ad87edf7b77609 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 1 Jun 2018 18:46:19 -0700 +Subject: [PATCH] libopeniscsiusr/iface: Set strncpy bounds to not overflow + +Fixes warnings found by gcc8 + +iface.c:492:47: error: '%s' directive output may be truncated writing up to 4095 bytes into a region of size 4073 [-Werror=format-truncation=] + +iface.c:140:3: note: in expansion of macro '_strncpy' + _strncpy((*iface)->transport_name, proc_name + strlen("iscsi_"), + ^~~~~~~~ + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + libopeniscsiusr/iface.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/libopeniscsiusr/iface.c b/libopeniscsiusr/iface.c +index 955395d..d33363e 100644 +--- a/libopeniscsiusr/iface.c ++++ b/libopeniscsiusr/iface.c +@@ -138,7 +138,7 @@ int _iscsi_iface_get_from_sysfs(struct iscsi_context *ctx, uint32_t host_id, + + if (strncmp(proc_name, "iscsi_", strlen("iscsi_")) == 0) + _strncpy((*iface)->transport_name, proc_name + strlen("iscsi_"), +- sizeof((*iface)->transport_name) / sizeof(char)); ++ sizeof((*iface)->transport_name) / sizeof(char) - 1); + else + _strncpy((*iface)->transport_name, proc_name, + sizeof((*iface)->transport_name) / sizeof(char)); +@@ -489,7 +489,8 @@ static int _fill_hw_iface_from_sys(struct iscsi_context *ctx, + + sysfs_iface_dir_path = malloc(PATH_MAX); + _alloc_null_check(ctx, sysfs_iface_dir_path, rc, out); +- snprintf(sysfs_iface_dir_path, PATH_MAX, "%s/%s", ++ sysfs_iface_dir_path[PATH_MAX+strlen(_ISCSI_SYS_IFACE_DIR)] = '\0'; ++ snprintf(sysfs_iface_dir_path, PATH_MAX+strlen(_ISCSI_SYS_IFACE_DIR)+1, "%s/%s", + _ISCSI_SYS_IFACE_DIR, iface_kern_id); + + _good(_sysfs_prop_get_str(ctx, sysfs_iface_dir_path, |