From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932577AbcA0Nxv (ORCPT ); Wed, 27 Jan 2016 08:53:51 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:59609 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932182AbcA0Nxr (ORCPT ); Wed, 27 Jan 2016 08:53:47 -0500 From: Arnd Bergmann To: Wensong Zhang , Simon Horman , Julian Anastasov Cc: linux-arm-kernel@lists.infradead.org, Arnd Bergmann , Pablo Neira Ayuso , Patrick McHardy , Jozsef Kadlecsik , "David S. Miller" , netdev@vger.kernel.org, lvs-devel@vger.kernel.org, netfilter-devel@vger.kernel.org, coreteam@netfilter.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] netfilter: ipvs/SIP: handle ip_vs_fill_iph_skb_off failure Date: Wed, 27 Jan 2016 14:52:02 +0100 Message-Id: <1453902749-3422685-2-git-send-email-arnd@arndb.de> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1453902749-3422685-1-git-send-email-arnd@arndb.de> References: <1453902749-3422685-1-git-send-email-arnd@arndb.de> X-Provags-ID: V03:K0:DvG/5XxoZxH5TVCnmIC0HhcesE+osQd3L0FOjrUZGG4b25b3MHQ F/hKSr23KPfXAYKbtwLNMbQyd18vzznm4Tbd6WkGMajptjXEsx52tP1m4mTXeAZsCbEds5R tA4C7HdVP7PBFiaOy0T+VVyepTqkGBfhNQ2g9g6T+4ozStNeKA7cClCCOz8V1woq+drZcH9 0lXqfXsFUxjvx2WLJD9DA== X-UI-Out-Filterresults: notjunk:1;V01:K0:Jed+CB1rhwY=:Rerx27IejDYjvcFXs0n4gg of9kdXQslJKxcoOQtFbNFk4EosBpY2mamCyq51fadAQuedDzDFO0JOtQRwQz2O3kmY/EVzU8p 1wUmUWwLjrMmWptiu+unA8dHhNyVsRVygH806h9LWfaNZ/vuYpiGeWQVdiXtxKk2+B87Xxd17 ibZWQzOBd7i46UmpxUdIGe87yIkDpCA6rd8q5tEAye/WBjusuPeFNlBW81uHD9M7MWmM9dzY1 I56Qc0KEwx/AOMS7bFgzKtIAPhoApFQQTU3zCEHrxcI2bVYMFvkBWVZjOZfkRPA/7eb77QTFz 0hh9zoLeccRGG8lqP2SWSdERuLXk/YVRgUij0GgDf2DmE7s1fYlrCZEDPAaVsXJ1O6b2OSoME oiXoqWMN+V/r2jlbyCbZXqlEJ/9dtrZSegqF5Abi8bOVQBXxwWc2jqGCKOLItIxsyWupE1JFt JYOzUQlrYQDYm4JAGeAnU7qOKfDj/wJFnIhGsUYQLgksJqsB/DS4Q0aisE9amUAb3avVAu/Nf jZ2aQvytNHCNNaLf1Ic+gspfbbEuSPHnSFPSNJNHeZ9STYPYPWWVO+tu0gWt6GdNYFAjX7TH/ Vm+JisnoeWmd2sjka7/NlY9/PCa3wK07zswetvlGn7+FtdYhxVjcVZHDH+M4AG9qkYdPTekFU bJqS35g7cN8T1EakbTcZe3+ABmpH1DWXUiVVfqh7KfVVmziYTnK+TbtZw/OriBKOg/OI= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ip_vs_fill_iph_skb_off() may not find an IP header, and gcc has determined that ip_vs_sip_fill_param() then incorrectly accesses the protocol fields: net/netfilter/ipvs/ip_vs_pe_sip.c: In function 'ip_vs_sip_fill_param': net/netfilter/ipvs/ip_vs_pe_sip.c:76:5: error: 'iph.protocol' may be used uninitialized in this function [-Werror=maybe-uninitialized] if (iph.protocol != IPPROTO_UDP) ^ net/netfilter/ipvs/ip_vs_pe_sip.c:81:10: error: 'iph.len' may be used uninitialized in this function [-Werror=maybe-uninitialized] dataoff = iph.len + sizeof(struct udphdr); ^ This adds a check for the ip_vs_fill_iph_skb_off() return code before looking at the ip header data returned from it. Signed-off-by: Arnd Bergmann Fixes: b0e010c527de ("ipvs: replace ip_vs_fill_ip4hdr with ip_vs_fill_iph_skb_off") --- net/netfilter/ipvs/ip_vs_pe_sip.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/netfilter/ipvs/ip_vs_pe_sip.c b/net/netfilter/ipvs/ip_vs_pe_sip.c index 1b8d594e493a..c4e9ca016a88 100644 --- a/net/netfilter/ipvs/ip_vs_pe_sip.c +++ b/net/netfilter/ipvs/ip_vs_pe_sip.c @@ -70,10 +70,10 @@ ip_vs_sip_fill_param(struct ip_vs_conn_param *p, struct sk_buff *skb) const char *dptr; int retc; - ip_vs_fill_iph_skb(p->af, skb, false, &iph); + retc = ip_vs_fill_iph_skb(p->af, skb, false, &iph); /* Only useful with UDP */ - if (iph.protocol != IPPROTO_UDP) + if (!retc || iph.protocol != IPPROTO_UDP) return -EINVAL; /* todo: IPv6 fragments: * I think this only should be done for the first fragment. /HS -- 2.7.0