From 4aca87515a5083ae0e31ce3177189fd43b6d05ac Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 3 Jan 2015 13:58:15 +0100 Subject: patch to Vanilla Tomato 1.28 --- .../router/busybox/networking/libiproute/ll_addr.c | 54 +++++++++++----------- 1 file changed, 26 insertions(+), 28 deletions(-) (limited to 'release/src/router/busybox/networking/libiproute/ll_addr.c') diff --git a/release/src/router/busybox/networking/libiproute/ll_addr.c b/release/src/router/busybox/networking/libiproute/ll_addr.c index ada685f4..f50e3719 100644 --- a/release/src/router/busybox/networking/libiproute/ll_addr.c +++ b/release/src/router/busybox/networking/libiproute/ll_addr.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * ll_addr.c * @@ -9,11 +10,12 @@ * Authors: Alexey Kuznetsov, */ -#include -#include #include -#include "utils.h" + #include "libbb.h" +#include "rt_names.h" +#include "utils.h" + const char *ll_addr_n2a(unsigned char *addr, int alen, int type, char *buf, int blen) { @@ -27,7 +29,7 @@ const char *ll_addr_n2a(unsigned char *addr, int alen, int type, char *buf, int l = 0; for (i=0; i 255) { - bb_error_msg("\"%s\" is invalid lladdr.", arg); - return -1; - } - lladdr[i] = temp; - if (!cp) { - break; - } - arg = cp; + for (i = 0; i < len; i++) { + int temp; + char *cp = strchr(arg, ':'); + if (cp) { + *cp = 0; + cp++; + } + if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) { + bb_error_msg("\"%s\" is invalid lladdr", arg); + return -1; + } + lladdr[i] = temp; + if (!cp) { + break; } - return i+1; + arg = cp; } + return i+1; } -- cgit v1.2.3-54-g00ecf