summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2012-05-04 22:06:50 +0200
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2012-05-06 22:10:14 +0200
commita9dcf6937ede801effaf64f03470fa838246278b (patch)
tree6ca80812bacfe8ca9e34c345bc0b88f964f08894
parent8bb3abe5e008062730548f66d0c3df3c5390bd0f (diff)
Fix invalid assignment to const void pointer
gcc 4.7 and above ignore such assignments which leads to a broken ipset binary (bug reported by Seblu).
-rw-r--r--lib/session.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/session.c b/lib/session.c
index 01a2413..6700ea1 100644
--- a/lib/session.c
+++ b/lib/session.c
@@ -1464,21 +1464,21 @@ rawdata2attr(struct ipset_session *session, struct nlmsghdr *nlh,
return 1;
switch (attr->type) {
- case MNL_TYPE_NUL_STRING:
- alen = strlen((const char *)d) + 1;
- break;
case MNL_TYPE_U32: {
uint32_t value = htonl(*(const uint32_t *)d);
- d = &value;
- break;
+ mnl_attr_put(nlh, type | flags, alen, &value);
+ return 0;
}
case MNL_TYPE_U16: {
uint16_t value = htons(*(const uint16_t *)d);
- d = &value;
- break;
+ mnl_attr_put(nlh, type | flags, alen, &value);
+ return 0;
}
+ case MNL_TYPE_NUL_STRING:
+ alen = strlen((const char *)d) + 1;
+ break;
default:
break;
}