From cf4f500f828ccc8720a19c211bc9ffc478c1463a Mon Sep 17 00:00:00 2001 From: Arturo Borrero Gonzalez Date: Mon, 3 Jun 2013 05:58:38 +0000 Subject: src: xml: add versioning Add version to XML chunks in case of future changes. Signed-off-by: Arturo Borrero Gonzalez Signed-off-by: Pablo Neira Ayuso --- src/chain.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/chain.c') diff --git a/src/chain.c b/src/chain.c index 4146e6a..093e3ea 100644 --- a/src/chain.c +++ b/src/chain.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -469,6 +470,17 @@ static int nft_chain_xml_parse(struct nft_chain *c, char *xml) if (tree == NULL) return -1; + /* Validate version */ + if (mxmlElementGetAttr(tree, "version") == NULL) { + mxmlDelete(tree); + return -1; + } + tmp = strtoll(mxmlElementGetAttr(tree, "version"), &endptr, 10); + if (tmp == LLONG_MAX || *endptr || tmp != NFT_CHAIN_XML_VERSION) { + mxmlDelete(tree); + return -1; + } + /* Get and set */ if (mxmlElementGetAttr(tree, "name") == NULL) { mxmlDelete(tree); @@ -643,7 +655,7 @@ static int nft_chain_snprintf_xml(char *buf, size_t size, struct nft_chain *c) { return snprintf(buf, size, "" + " bytes=\"%lu\" packets=\"%lu\" version=\"%d\">" "" "%s" "%s
" @@ -655,8 +667,8 @@ static int nft_chain_snprintf_xml(char *buf, size_t size, struct nft_chain *c) "
" "
", c->name, c->handle, c->bytes, c->packets, - c->type, c->table, c->prio, c->use, c->hooknum, - c->policy, c->family); + NFT_CHAIN_XML_VERSION, c->type, c->table, + c->prio, c->use, c->hooknum, c->policy, c->family); } static int nft_chain_snprintf_default(char *buf, size_t size, struct nft_chain *c) -- cgit v1.2.3