From patchwork Mon Dec 19 22:01:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Packham X-Patchwork-Id: 707258 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3tjFJ406lnz9t6g for ; Tue, 20 Dec 2016 09:01:56 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ZhI0VVhw"; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8D47DA75CC; Mon, 19 Dec 2016 23:01:54 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 84Kjur0ONTZc; Mon, 19 Dec 2016 23:01:54 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0E181A75C9; Mon, 19 Dec 2016 23:01:54 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 89896A75C9 for ; Mon, 19 Dec 2016 23:01:50 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TposJFM_i0nn for ; Mon, 19 Dec 2016 23:01:50 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-pf0-f194.google.com (mail-pf0-f194.google.com [209.85.192.194]) by theia.denx.de (Postfix) with ESMTPS id 12497A75C3 for ; Mon, 19 Dec 2016 23:01:47 +0100 (CET) Received: by mail-pf0-f194.google.com with SMTP id 144so7970136pfv.0 for ; Mon, 19 Dec 2016 14:01:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=DGbQTmLLnI1al8M75GoaYLvtZO3gUslYKsZ7sbDfAY4=; b=ZhI0VVhw4s8kmIPhKpWIn3G09QHAa16RCRDk0WGmJV7V5wuGNv4qEzxz2wp7wUFYJ2 n2j93+ls6IeiVtl90iPUHjmXB9r4tEG/MYG5+4nzbzDC69+4Ax+7Yd6cXR7YUnnlc0p4 Krs0Cy9xmOIw0GSOA7naBQMW62ZVxgsOTgGif3AmR/nxjy7fHdgMq/5+GUUCZEVOLBys 7JPZPy+Ct15OAM7OqPXT0ZHMsleH4iHqBPhB7a+vhwxhgE9LmY8qEa4DrFBOCMVuw2Jq 8hzTEs0zHSBWabN2kRWYB56Y8QaQuzDCGNrlzaneKRQMNH//zDeFTapHvAvVSzgc8Xo+ 9EMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=DGbQTmLLnI1al8M75GoaYLvtZO3gUslYKsZ7sbDfAY4=; b=DrtK8ZM1qYydn//fhjfnVdL7cZkRgh4aHviXr71YL4HJ6KANS3dTBnCU4qXHa2d3tL lkRLUE5a91qxtbYJMdOVQ1ecrNdByfOjnzSVOBIwG+WBVtPKoS5oq5holF4zqQJjxo0q 2bWy8cydJJF1IXOVplOIS6kBI2LT6oP0p12qbCbd6M3WQbD6wh1vbsPN5qDF974ibsJu hfNiqh+KDGYoexvn/2oWxrfsrwuRAsSG1//WPgvTdGJdNsl9WpQV0BCEcDnyEwW2LFNM 5xKJhysx1cufBzgtFZcfJCvfL6iWrFwPhh/v+h28FX/fnvJrnrmbkJeXhGXGEM4VWBKa uxWg== X-Gm-Message-State: AKaTC01nTtMxlcRPXe3gb6I16bS1VQTAVdBS/CjEqKhQyUMelPyE2S/Qb1oL9uM+wLeLrw== X-Received: by 10.84.135.34 with SMTP id 31mr37953928pli.50.1482184905675; Mon, 19 Dec 2016 14:01:45 -0800 (PST) Received: from chrisp-dl.atlnz.lc ([2001:df5:b000:22:c804:a52c:e614:fbf4]) by smtp.gmail.com with ESMTPSA id w125sm33642048pfb.8.2016.12.19.14.01.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 19 Dec 2016 14:01:45 -0800 (PST) From: Chris Packham To: u-boot@lists.denx.de Date: Tue, 20 Dec 2016 11:01:36 +1300 Message-Id: <20161219220136.28550-1-judge.packham@gmail.com> X-Mailer: git-send-email 2.11.0.24.ge6920cf Cc: Tom Rini , Chris Packham , Joe Hershberger Subject: [U-Boot] [PATCH] lib: net_utils: make string_to_ip stricter X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Previously values greater than 255 were implicitly truncated. Add some stricter checking to reject addresses with components >255. With the input "1234192.168.1.1" the old behaviour would truncate the address to 192.168.1.1. New behaviour rejects the string outright and returns 0.0.0.0, which for the purposes of IP addresses can be considered an error. Signed-off-by: Chris Packham --- This was part of my long running IPv6 patchset (which I promise I'll get back to someday). But I feel this stands on it's own merits. lib/net_utils.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/net_utils.c b/lib/net_utils.c index cfae84275241..f148b8a70a7d 100644 --- a/lib/net_utils.c +++ b/lib/net_utils.c @@ -24,11 +24,16 @@ struct in_addr string_to_ip(const char *s) for (addr.s_addr = 0, i = 0; i < 4; ++i) { ulong val = s ? simple_strtoul(s, &e, 10) : 0; + if (val > 255) { + addr.s_addr = 0; + return addr; + } addr.s_addr <<= 8; addr.s_addr |= (val & 0xFF); - if (s) { - s = (*e) ? e+1 : e; - } + if (*e == '.') + s = e + 1; + else + break; } addr.s_addr = htonl(addr.s_addr);