diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-06-10 14:30:56 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-06-15 12:12:38 +0200 |
commit | 8f4de3888ce74607d4754fe5a1a8f470af409c09 (patch) | |
tree | 7ea9c708919c990a496aaf2478acc346e9338360 /src/set_elem.c | |
parent | 844541f4c43c2469b9955b78480cbe36fde653d0 (diff) |
src: return value on setters that internally allocate memory
So the client can bail out of memory allocation errors. Or in case of
daemon, make sure things are left in consistent state before bailing
out.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/set_elem.c')
-rw-r--r-- | src/set_elem.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/set_elem.c b/src/set_elem.c index 36289e5..7e3a995 100644 --- a/src/set_elem.c +++ b/src/set_elem.c @@ -99,8 +99,8 @@ void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr) } EXPORT_SYMBOL_ALIAS(nftnl_set_elem_unset, nft_set_elem_attr_unset); -void nftnl_set_elem_set(struct nftnl_set_elem *s, uint16_t attr, - const void *data, uint32_t data_len) +int nftnl_set_elem_set(struct nftnl_set_elem *s, uint16_t attr, + const void *data, uint32_t data_len) { switch(attr) { case NFTNL_SET_ELEM_FLAGS: @@ -132,14 +132,13 @@ void nftnl_set_elem_set(struct nftnl_set_elem *s, uint16_t attr, s->user.data = malloc(data_len); if (!s->user.data) - return; + return -1; memcpy(s->user.data, data, data_len); s->user.len = data_len; break; - default: - return; } s->flags |= (1 << attr); + return -1; } EXPORT_SYMBOL_ALIAS(nftnl_set_elem_set, nft_set_elem_attr_set); @@ -155,9 +154,9 @@ void nftnl_set_elem_set_u64(struct nftnl_set_elem *s, uint16_t attr, uint64_t va } EXPORT_SYMBOL_ALIAS(nftnl_set_elem_set_u64, nft_set_elem_attr_set_u64); -void nftnl_set_elem_set_str(struct nftnl_set_elem *s, uint16_t attr, const char *str) +int nftnl_set_elem_set_str(struct nftnl_set_elem *s, uint16_t attr, const char *str) { - nftnl_set_elem_set(s, attr, str, strlen(str)); + return nftnl_set_elem_set(s, attr, str, strlen(str)); } EXPORT_SYMBOL_ALIAS(nftnl_set_elem_set_str, nft_set_elem_attr_set_str); |