| From 58b6d9a2efe101e5b80fd708e6f84c7ca779ce93 Mon Sep 17 00:00:00 2001 |
| From: Khem Raj <raj.khem@gmail.com> |
| Date: Thu, 31 May 2018 20:27:43 -0700 |
| Subject: [PATCH] Fix potential string truncation in strncpy() |
| |
| GCC 8 complains about the string truncation during copy |
| |
| error: 'strncpy' specified bound 16 equals destination size |
| |
| Upstream-Status: Inappropriate [depricated component] |
| |
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| --- |
| tests/listen-packet.c | 3 ++- |
| tests/listen.c | 3 ++- |
| tests/test2.c | 4 ++-- |
| tests/test3.c | 3 ++- |
| tests/test4.c | 3 ++- |
| tests/test5.c | 3 ++- |
| tests/test6.c | 3 ++- |
| tests/test7.c | 3 ++- |
| 8 files changed, 16 insertions(+), 9 deletions(-) |
| |
| diff --git a/tests/listen-packet.c b/tests/listen-packet.c |
| index e40af81..eae0c71 100644 |
| --- a/tests/listen-packet.c |
| +++ b/tests/listen-packet.c |
| @@ -50,7 +50,8 @@ int main(int argc, char **argv) { |
| return 1; |
| } |
| |
| - strncpy(req.ifr_name, iface, IF_NAMESIZE); |
| + strncpy(req.ifr_name, iface, IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFINDEX, &req); |
| if (ret < 0) |
| perror("ioctl: SIOCGIFINDEX"); |
| diff --git a/tests/listen.c b/tests/listen.c |
| index 75c320b..5ce1ed9 100644 |
| --- a/tests/listen.c |
| +++ b/tests/listen.c |
| @@ -47,7 +47,8 @@ int main(int argc, char **argv) { |
| return 1; |
| } |
| |
| - strncpy(req.ifr_name, iface, IFNAMSIZ); |
| + strncpy(req.ifr_name, iface, IFNAMSIZ - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFHWADDR, &req); |
| if (ret < 0) |
| perror("ioctl: SIOCGIFHWADDR"); |
| diff --git a/tests/test2.c b/tests/test2.c |
| index 58eb74b..5d02838 100644 |
| --- a/tests/test2.c |
| +++ b/tests/test2.c |
| @@ -45,8 +45,8 @@ int main(int argc, char **argv) { |
| perror("socket"); |
| return 1; |
| } |
| - |
| - strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE); |
| + strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFHWADDR, &req); |
| if (ret < 0) |
| perror("ioctl: SIOCGIFHWADDR"); |
| diff --git a/tests/test3.c b/tests/test3.c |
| index fb36627..2f50a5a 100644 |
| --- a/tests/test3.c |
| +++ b/tests/test3.c |
| @@ -46,7 +46,8 @@ int main(int argc, char **argv) { |
| return 1; |
| } |
| |
| - strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE); |
| + strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFHWADDR, &req); |
| if (ret < 0) |
| perror("ioctl: SIOCGIFHWADDR"); |
| diff --git a/tests/test4.c b/tests/test4.c |
| index 33c274c..8737149 100644 |
| --- a/tests/test4.c |
| +++ b/tests/test4.c |
| @@ -46,7 +46,8 @@ int main(int argc, char **argv) { |
| return 1; |
| } |
| |
| - strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE); |
| + strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFHWADDR, &req); |
| if (ret < 0) |
| perror("ioctl: SIOCGIFHWADDR"); |
| diff --git a/tests/test5.c b/tests/test5.c |
| index 4439dfa..28db562 100644 |
| --- a/tests/test5.c |
| +++ b/tests/test5.c |
| @@ -45,7 +45,8 @@ int main(int argc, char **argv) { |
| return 1; |
| } |
| |
| - strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE); |
| + strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFADDR, &req); |
| if (ret < 0) { |
| perror("ioctl: SIOCGIFADDR"); |
| diff --git a/tests/test6.c b/tests/test6.c |
| index e375bfb..ce7de59 100644 |
| --- a/tests/test6.c |
| +++ b/tests/test6.c |
| @@ -45,7 +45,8 @@ int main(int argc, char **argv) { |
| return 1; |
| } |
| |
| - strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE); |
| + strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFADDR, &req); |
| if (ret < 0) { |
| perror("ioctl: SIOCGIFADDR"); |
| diff --git a/tests/test7.c b/tests/test7.c |
| index e9a5a55..37da22d 100644 |
| --- a/tests/test7.c |
| +++ b/tests/test7.c |
| @@ -58,7 +58,8 @@ int main(int argc, char **argv) { |
| if (ret) |
| perror("setsockopt"); |
| |
| - strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE); |
| + strncpy(req.ifr_name, argv[1] ?: "wpan0", IF_NAMESIZE - 1); |
| + req.ifr_name[IF_NAMESIZE - 1] = '\0'; |
| ret = ioctl(sd, SIOCGIFHWADDR, &req); |
| if (ret < 0) |
| perror("ioctl: SIOCGIFHWADDR"); |
| -- |
| 2.17.1 |
| |