diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-10-28 02:36:17 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-10-28 02:36:17 +0200 |
commit | db9ccc57728ccc7ca3c949437828e3d6d9d2dc5d (patch) | |
tree | 47368929e7a09be02a14272784157df3aa410daa /networking | |
parent | 9ce642f9746dfc29d119d0680b769677e3ea6da6 (diff) | |
download | busybox-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')
-rw-r--r-- | networking/netstat.c | 9 |
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 { | |||
395 | static int scan_inet_proc_line(struct inet_params *param, char *line) | 395 | static 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, ¶m->local_port, | 408 | local_addr, ¶m->local_port, |