From: Denys Vlasenko Date: Thu, 28 Oct 2010 00:36:17 +0000 (+0200) Subject: netstat: was using buffers one byte short for scanf (no place for NUL). fixing X-Git-Tag: 1_18_0~63 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=db9ccc57728ccc7ca3c949437828e3d6d9d2dc5d;p=oweals%2Fbusybox.git netstat: was using buffers one byte short for scanf (no place for NUL). fixing Signed-off-by: Denys Vlasenko --- 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 { static int scan_inet_proc_line(struct inet_params *param, char *line) { int num; - char local_addr[64], rem_addr[64]; + /* IPv6 /proc files use 32-char hex representation + * of IPv6 address, followed by :PORT_IN_HEX + */ + char local_addr[33], rem_addr[33]; /* 32 + 1 for NUL */ num = sscanf(line, - "%*d: %64[0-9A-Fa-f]:%X " - "%64[0-9A-Fa-f]:%X %X " + "%*d: %32[0-9A-Fa-f]:%X " + "%32[0-9A-Fa-f]:%X %X " "%lX:%lX %*X:%*X " "%*X %d %*d %ld ", local_addr, ¶m->local_port,