From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arturo Borrero Subject: [libnftables PATCH 1/5] data_reg: xml: fix bytes movements Date: Mon, 03 Jun 2013 22:44:51 +0200 Message-ID: <20130603204451.27713.51887.stgit@nfdev.cica.es> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: pablo@netfilter.org To: netfilter-devel@vger.kernel.org Return-path: Received: from smtp3.cica.es ([150.214.5.190]:42339 "EHLO smtp.cica.es" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757088Ab3FCUoz (ORCPT ); Mon, 3 Jun 2013 16:44:55 -0400 Sender: netfilter-devel-owner@vger.kernel.org List-ID: There was bad bits movements and calcules when XML printing/parsing. Signed-off-by: Arturo Borrero Gonzalez --- src/expr/data_reg.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c index 74ebe76..7d26175 100644 --- a/src/expr/data_reg.c +++ b/src/expr/data_reg.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -205,7 +206,7 @@ static int nft_data_reg_value_xml_parse(union nft_data_reg *reg, char *xml) reg->val[i] = utmp; } - reg->len = sizeof(reg->val); + reg->len = len*sizeof(reg->val[0]); mxmlDelete(tree); return 0; @@ -259,8 +260,9 @@ int nft_data_reg_value_snprintf_xml(char *buf, size_t size, union nft_data_reg *reg, uint32_t flags) { int len = size, offset = 0, ret, i, j; + uint32_t be; uint8_t *tmp; - int data_len = reg->len/sizeof(uint32_t); + int data_len = reg->len/sizeof(reg->val[0]); ret = snprintf(buf, len, ""); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); @@ -272,15 +274,17 @@ int nft_data_reg_value_snprintf_xml(char *buf, size_t size, ret = snprintf(buf+offset, len, "0x", i); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - tmp = (uint8_t *)®->val[i]; + be = htonl(reg->val[i]); + tmp = (uint8_t *)&be; - for (j=0; j", i); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); + } ret = snprintf(buf+offset, len, "");