From patchwork Wed Jan 8 08:22:23 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kristian Evensen X-Patchwork-Id: 308088 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 8F0562C00A7 for ; Wed, 8 Jan 2014 19:22:39 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755140AbaAHIWh (ORCPT ); Wed, 8 Jan 2014 03:22:37 -0500 Received: from mail-ea0-f179.google.com ([209.85.215.179]:56699 "EHLO mail-ea0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754987AbaAHIWh (ORCPT ); Wed, 8 Jan 2014 03:22:37 -0500 Received: by mail-ea0-f179.google.com with SMTP id r15so632850ead.24 for ; Wed, 08 Jan 2014 00:22:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=aibnHGGzbouuof3LDJRJnKMz2F3dst1z67WWIQilfN0=; b=claF65v/BRgWCqNh5i3TEp/F+bgf4vS9dv/LBnMTVhR1V1G/oBgyTK9QBgd+kIUim9 OSf+Z0o5tuD8hDIOFadHNfCZ419YfROYYM5tVXpZSsAMsDF8q2AE+EgvQqb7orepDIp6 MYe5n8HaLd88c3NDr/L0uu7XJAHBT/yTLsNpBPWBttN7uevwoPoOEA2n/j39FjL8vgRL d6w3Dik3TUO3rQ2+mNo76yBrBOkRTREwHygOhIms21n4A5e6ldf8BpVMqYegfccEhqPX Yd/rtZ73Jj2yaZoTZpiyv1EXM5cag04xzgaiZUdpsEdMKICsWABkFJh/7llRvYqR44Wx NeAw== X-Received: by 10.15.22.137 with SMTP id f9mr44722180eeu.30.1389169355836; Wed, 08 Jan 2014 00:22:35 -0800 (PST) Received: from armstrong.simula.no ([77.88.71.158]) by mx.google.com with ESMTPSA id p45sm187060479eeg.1.2014.01.08.00.22.33 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 08 Jan 2014 00:22:34 -0800 (PST) From: Kristian Evensen To: netfilter-devel@vger.kernel.org Cc: Kristian Evensen Subject: [PATCH libnftables] Improved error handling and minor clean-up Date: Wed, 8 Jan 2014 09:22:23 +0100 Message-Id: <1389169343-5705-1-git-send-email-kristian.evensen@gmail.com> X-Mailer: git-send-email 1.8.3.2 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org From: Kristian Evensen XML parsing already fails when neither sreg nor dreg is sent. Add this behavior to json_parse and meta_parse. Also, remove a redundant argument (flags) that was passed to the snprintf-functions. Reported-by: Arturo Borrero Gonzalez Signed-off-by: Kristian Evensen --- src/expr/meta.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/expr/meta.c b/src/expr/meta.c index 6899d69..45250f1 100644 --- a/src/expr/meta.c +++ b/src/expr/meta.c @@ -131,6 +131,8 @@ nft_rule_expr_meta_parse(struct nft_rule_expr *e, struct nlattr *attr) } else if (tb[NFTA_META_SREG]) { meta->sreg = ntohl(mnl_attr_get_u32(tb[NFTA_META_SREG])); e->flags |= (1 << NFT_EXPR_META_SREG); + } else { + return -1; } return 0; @@ -203,6 +205,8 @@ static int nft_rule_expr_meta_json_parse(struct nft_rule_expr *e, json_t *root) return -1; nft_rule_expr_set_u32(e, NFT_EXPR_META_SREG, sreg); + } else { + return -1; } return 0; @@ -254,7 +258,7 @@ static int nft_rule_expr_meta_xml_parse(struct nft_rule_expr *e, mxml_node_t *tr } static int -nft_rule_expr_meta_snprintf_default(char *buf, size_t len, uint32_t flags, +nft_rule_expr_meta_snprintf_default(char *buf, size_t len, struct nft_rule_expr *e) { struct nft_expr_meta *meta = nft_expr_data(e); @@ -268,7 +272,7 @@ nft_rule_expr_meta_snprintf_default(char *buf, size_t len, uint32_t flags, } static int -nft_rule_expr_meta_snprintf_xml(char *buf, size_t len, uint32_t flags, +nft_rule_expr_meta_snprintf_xml(char *buf, size_t len, struct nft_rule_expr *e) { struct nft_expr_meta *meta = nft_expr_data(e); @@ -282,7 +286,7 @@ nft_rule_expr_meta_snprintf_xml(char *buf, size_t len, uint32_t flags, } static int -nft_rule_expr_meta_snprintf_json(char *buf, size_t len, uint32_t flags, +nft_rule_expr_meta_snprintf_json(char *buf, size_t len, struct nft_rule_expr *e) { struct nft_expr_meta *meta = nft_expr_data(e); @@ -302,14 +306,11 @@ nft_rule_expr_meta_snprintf(char *buf, size_t len, uint32_t type, { switch(type) { case NFT_OUTPUT_DEFAULT: - return nft_rule_expr_meta_snprintf_default(buf, len, - flags, e); + return nft_rule_expr_meta_snprintf_default(buf, len, e); case NFT_OUTPUT_XML: - return nft_rule_expr_meta_snprintf_xml(buf, len, - flags, e); + return nft_rule_expr_meta_snprintf_xml(buf, len, e); case NFT_OUTPUT_JSON: - return nft_rule_expr_meta_snprintf_json(buf, len, - flags, e); + return nft_rule_expr_meta_snprintf_json(buf, len, e); default: break; }