aboutsummaryrefslogtreecommitdiff
path: root/networking/netstat.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-10-28 02:36:17 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-10-28 02:36:17 +0200
commitdb9ccc57728ccc7ca3c949437828e3d6d9d2dc5d (patch)
tree47368929e7a09be02a14272784157df3aa410daa /networking/netstat.c
parent9ce642f9746dfc29d119d0680b769677e3ea6da6 (diff)
downloadbusybox-w32-db9ccc57728ccc7ca3c949437828e3d6d9d2dc5d.tar.gz
busybox-w32-db9ccc57728ccc7ca3c949437828e3d6d9d2dc5d.tar.bz2
busybox-w32-db9ccc57728ccc7ca3c949437828e3d6d9d2dc5d.zip
netstat: was using buffers one byte short for scanf (no place for NUL). fixing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/netstat.c')
-rw-r--r--networking/netstat.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/networking/netstat.c b/networking/netstat.c
index 485a7d191..2a83af3ac 100644
--- a/networking/netstat.c
+++ b/networking/netstat.c
@@ -395,11 +395,14 @@ struct inet_params {
395static int scan_inet_proc_line(struct inet_params *param, char *line) 395static int scan_inet_proc_line(struct inet_params *param, char *line)
396{ 396{
397 int num; 397 int num;
398 char local_addr[64], rem_addr[64]; 398 /* IPv6 /proc files use 32-char hex representation
399 * of IPv6 address, followed by :PORT_IN_HEX
400 */
401 char local_addr[33], rem_addr[33]; /* 32 + 1 for NUL */
399 402
400 num = sscanf(line, 403 num = sscanf(line,
401 "%*d: %64[0-9A-Fa-f]:%X " 404 "%*d: %32[0-9A-Fa-f]:%X "
402 "%64[0-9A-Fa-f]:%X %X " 405 "%32[0-9A-Fa-f]:%X %X "
403 "%lX:%lX %*X:%*X " 406 "%lX:%lX %*X:%*X "
404 "%*X %d %*d %ld ", 407 "%*X %d %*d %ld ",
405 local_addr, &param->local_port, 408 local_addr, &param->local_port,