From patchwork Thu May 15 13:10:21 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 349219 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id CA8F51400DF for ; Thu, 15 May 2014 23:10:40 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753373AbaEONKg (ORCPT ); Thu, 15 May 2014 09:10:36 -0400 Received: from mail-lb0-f181.google.com ([209.85.217.181]:62672 "EHLO mail-lb0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752725AbaEONKe (ORCPT ); Thu, 15 May 2014 09:10:34 -0400 Received: by mail-lb0-f181.google.com with SMTP id u14so778070lbd.12 for ; Thu, 15 May 2014 06:10:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BsvKj85lV0moWEZADWTvdZtgiXe0htOTL9UdDS6sHHs=; b=DPHtYNuiXP8V0chIgPVz8MPHIobnsgCHAknZOIHInYONeEF9iX2F42OJe8otdog5Ff gjAJa6fyZNf6KnqOtTV0SyNyjXDMR3Om6cNg8eDLozGi6LbU8sQOS6MPrzD3Qvl594qG aQUM93mU5v1K5IZhzrIweTVB9MHyy4kf2HZ5bYKx+rIJ3Y37QJO9KOVmojCSN3TGB+gk 7Dq+JbAJHK8lUz84hhByrGURRpfswWeAOuPf4O/f8DQgN+8ysAC1FNU+sA8JSRTWt0YU A+IsJZtAXiXl1w1Zxylcvq2I6QL6HiegBmkH+es6rXbPc0mwZhk36C8Mij3jzJdXlLca aHkg== X-Gm-Message-State: ALoCoQlxugrvgBhDlpewOHvBQrNZiFDgfpx70FhE8rNPXQqAQQI75XAqosEnbyq6ORbIB2HlhT83 X-Received: by 10.112.150.130 with SMTP id ui2mr977247lbb.80.1400159433512; Thu, 15 May 2014 06:10:33 -0700 (PDT) Received: from localhost (ip-94-113-121-85.net.upcbroadband.cz. [94.113.121.85]) by mx.google.com with ESMTPSA id ms3sm5367419lbb.17.2014.05.15.06.10.31 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 May 2014 06:10:32 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: stephen@networkplumber.org, mschmidt@redhat.com Subject: [patch iproute2 2/3] iproute2: utils: change hexstring_n2a and hexstring_a2n to do not work with ":" Date: Thu, 15 May 2014 15:10:21 +0200 Message-Id: <1400159422-11797-3-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1400159422-11797-1-git-send-email-jiri@resnulli.us> References: <1400159422-11797-1-git-send-email-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Jiri Pirko --- lib/utils.c | 46 +++++++++++++--------------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/lib/utils.c b/lib/utils.c index 4e9c719..e9e1040 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -743,10 +743,6 @@ char *hexstring_n2a(const __u8 *str, int len, char *buf, int blen) sprintf(ptr, "%02x", str[i]); ptr += 2; blen -= 2; - if (i != len-1 && blen > 1) { - *ptr++ = ':'; - blen--; - } } return buf; } @@ -754,38 +750,22 @@ char *hexstring_n2a(const __u8 *str, int len, char *buf, int blen) __u8* hexstring_a2n(const char *str, __u8 *buf, int blen) { int cnt = 0; + char *endptr; - for (;;) { - unsigned acc; - char ch; - - acc = 0; - - while ((ch = *str) != ':' && ch != 0) { - if (ch >= '0' && ch <= '9') - ch -= '0'; - else if (ch >= 'a' && ch <= 'f') - ch -= 'a'-10; - else if (ch >= 'A' && ch <= 'F') - ch -= 'A'-10; - else - return NULL; - acc = (acc<<4) + ch; - str++; - } - - if (acc > 255) + if (strlen(str) % 2) + return NULL; + while (cnt < blen && strlen(str) > 1) { + unsigned int tmp; + char tmpstr[3]; + + strncpy(tmpstr, str, 2); + tmpstr[2] = '\0'; + tmp = strtoul(tmpstr, &endptr, 16); + if (errno != 0 || tmp > 0xFF || *endptr != '\0') return NULL; - if (cnt < blen) { - buf[cnt] = acc; - cnt++; - } - if (ch == 0) - break; - ++str; + buf[cnt++] = tmp; + str += 2; } - if (cnt < blen) - memset(buf+cnt, 0, blen-cnt); return buf; }