diff options
Diffstat (limited to 'src/libnetfilter_acct.c')
-rw-r--r-- | src/libnetfilter_acct.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/libnetfilter_acct.c b/src/libnetfilter_acct.c index 5dc402e..26e5dfa 100644 --- a/src/libnetfilter_acct.c +++ b/src/libnetfilter_acct.c @@ -181,13 +181,16 @@ const void *nfacct_attr_get(struct nfacct *nfacct, enum nfacct_attr_type type) switch(type) { case NFACCT_ATTR_NAME: - ret = nfacct->name; + if (nfacct->bitset & (1 << NFACCT_ATTR_NAME)) + ret = nfacct->name; break; case NFACCT_ATTR_PKTS: - ret = &nfacct->pkts; + if (nfacct->bitset & (1 << NFACCT_ATTR_PKTS)) + ret = &nfacct->pkts; break; case NFACCT_ATTR_BYTES: - ret = &nfacct->bytes; + if (nfacct->bitset & (1 << NFACCT_ATTR_BYTES)) + ret = &nfacct->bytes; break; } return ret; @@ -219,7 +222,8 @@ EXPORT_SYMBOL(nfacct_attr_get_str); */ uint64_t nfacct_attr_get_u64(struct nfacct *nfacct, enum nfacct_attr_type type) { - return *((uint64_t *)nfacct_attr_get(nfacct, type)); + const void *ret = nfacct_attr_get(nfacct, type); + return ret ? *((uint64_t *)ret) : 0; } EXPORT_SYMBOL(nfacct_attr_get_u64); |