From 0298f9c14163f0a255662a7bfc4749f82ecb77ff Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 19 Dec 2010 03:09:56 +0100 Subject: libipset: ipset_strncpy is really a strlcpy-type operation --- lib/data.c | 14 +++++++------- lib/types.c | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/data.c b/lib/data.c index 2872c0d..6bc423b 100644 --- a/lib/data.c +++ b/lib/data.c @@ -85,7 +85,7 @@ copy_addr(uint8_t family, union nf_inet_addr *ip, const void *value) } /** - * ipset_strncpy - copy the string from src to dst + * ipset_strlcpy - copy the string from src to dst * @dst: the target string buffer * @src: the source string buffer * @len: the length of bytes to copy, including the terminating null byte. @@ -94,7 +94,7 @@ copy_addr(uint8_t family, union nf_inet_addr *ip, const void *value) * copied. The target is unconditionally terminated by the null byte. */ void -ipset_strncpy(char *dst, const char *src, size_t len) +ipset_strlcpy(char *dst, const char *src, size_t len) { assert(dst); assert(src); @@ -199,7 +199,7 @@ ipset_data_set(struct ipset_data *data, enum ipset_opt opt, const void *value) switch (opt) { /* Common ones */ case IPSET_SETNAME: - ipset_strncpy(data->setname, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->setname, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_TYPE: data->type = value; @@ -265,7 +265,7 @@ ipset_data_set(struct ipset_data *data, enum ipset_opt opt, const void *value) break; /* Create-specific options, type */ case IPSET_OPT_TYPENAME: - ipset_strncpy(data->u.create.typename, value, + ipset_strlcpy(data->u.create.typename, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_REVISION: @@ -279,10 +279,10 @@ ipset_data_set(struct ipset_data *data, enum ipset_opt opt, const void *value) memcpy(data->u.adt.ether, value, ETH_ALEN); break; case IPSET_OPT_NAME: - ipset_strncpy(data->u.adt.name, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->u.adt.name, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_NAMEREF: - ipset_strncpy(data->u.adt.nameref, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->u.adt.nameref, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_IP2: if (!(data->family == AF_INET || data->family == AF_INET6)) @@ -297,7 +297,7 @@ ipset_data_set(struct ipset_data *data, enum ipset_opt opt, const void *value) break; /* Swap/rename */ case IPSET_OPT_SETNAME2: - ipset_strncpy(data->u.setname2, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->u.setname2, value, IPSET_MAXNAMELEN); break; /* flags */ case IPSET_OPT_EXIST: diff --git a/lib/types.c b/lib/types.c index 3034477..d979c24 100644 --- a/lib/types.c +++ b/lib/types.c @@ -54,7 +54,7 @@ ipset_cache_add(const char *name, const struct ipset_type *type, if (n == NULL) return -ENOMEM; - ipset_strncpy(n->name, name, IPSET_MAXNAMELEN); + ipset_strlcpy(n->name, name, IPSET_MAXNAMELEN); n->type = type; n->family = family; n->next = NULL; @@ -133,7 +133,7 @@ ipset_cache_rename(const char *from, const char *to) for (s = setlist; s != NULL; s = s->next) { if (STREQ(s->name, from)) { - ipset_strncpy(s->name, to, IPSET_MAXNAMELEN); + ipset_strlcpy(s->name, to, IPSET_MAXNAMELEN); return 0; } } @@ -164,8 +164,8 @@ ipset_cache_swap(const char *from, const char *to) b = s; } if (a != NULL && b != NULL) { - ipset_strncpy(a->name, to, IPSET_MAXNAMELEN); - ipset_strncpy(b->name, from, IPSET_MAXNAMELEN); + ipset_strlcpy(a->name, to, IPSET_MAXNAMELEN); + ipset_strlcpy(b->name, from, IPSET_MAXNAMELEN); return 0; } -- cgit v1.2.3 From bab610b39445a95ea2d566bc41d4be14074bf1c8 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 19 Dec 2010 03:13:06 +0100 Subject: libipset: remove redundant indirection via union name There are no uses of C99 static initializers, so let's make the union anonymous and reduce accessor lengths. --- lib/data.c | 82 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) (limited to 'lib') diff --git a/lib/data.c b/lib/data.c index 6bc423b..2719b84 100644 --- a/lib/data.c +++ b/lib/data.c @@ -72,7 +72,7 @@ struct ipset_data { char name[IPSET_MAXNAMELEN]; char nameref[IPSET_MAXNAMELEN]; } adt; - } u; + }; }; static void @@ -233,71 +233,71 @@ ipset_data_set(struct ipset_data *data, enum ipset_opt opt, const void *value) break; /* Create-specific options */ case IPSET_OPT_GC: - data->u.create.gc = *(const uint32_t *) value; + data->create.gc = *(const uint32_t *) value; break; case IPSET_OPT_HASHSIZE: - data->u.create.hashsize = *(const uint32_t *) value; + data->create.hashsize = *(const uint32_t *) value; break; case IPSET_OPT_MAXELEM: - data->u.create.maxelem = *(const uint32_t *) value; + data->create.maxelem = *(const uint32_t *) value; break; case IPSET_OPT_NETMASK: - data->u.create.netmask = *(const uint8_t *) value; + data->create.netmask = *(const uint8_t *) value; break; case IPSET_OPT_PROBES: - data->u.create.probes = *(const uint8_t *) value; + data->create.probes = *(const uint8_t *) value; break; case IPSET_OPT_RESIZE: - data->u.create.resize = *(const uint8_t *) value; + data->create.resize = *(const uint8_t *) value; break; case IPSET_OPT_SIZE: - data->u.create.size = *(const uint32_t *) value; + data->create.size = *(const uint32_t *) value; break; /* Create-specific options, filled out by the kernel */ case IPSET_OPT_ELEMENTS: - data->u.create.elements = *(const uint32_t *) value; + data->create.elements = *(const uint32_t *) value; break; case IPSET_OPT_REFERENCES: - data->u.create.references = *(const uint32_t *) value; + data->create.references = *(const uint32_t *) value; break; case IPSET_OPT_MEMSIZE: - data->u.create.memsize = *(const uint32_t *) value; + data->create.memsize = *(const uint32_t *) value; break; /* Create-specific options, type */ case IPSET_OPT_TYPENAME: - ipset_strlcpy(data->u.create.typename, value, + ipset_strlcpy(data->create.typename, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_REVISION: - data->u.create.revision = *(const uint8_t *) value; + data->create.revision = *(const uint8_t *) value; break; case IPSET_OPT_REVISION_MIN: - data->u.create.revision_min = *(const uint8_t *) value; + data->create.revision_min = *(const uint8_t *) value; break; /* ADT-specific options */ case IPSET_OPT_ETHER: - memcpy(data->u.adt.ether, value, ETH_ALEN); + memcpy(data->adt.ether, value, ETH_ALEN); break; case IPSET_OPT_NAME: - ipset_strlcpy(data->u.adt.name, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->adt.name, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_NAMEREF: - ipset_strlcpy(data->u.adt.nameref, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->adt.nameref, value, IPSET_MAXNAMELEN); break; case IPSET_OPT_IP2: if (!(data->family == AF_INET || data->family == AF_INET6)) return -1; - copy_addr(data->family, &data->u.adt.ip2, value); + copy_addr(data->family, &data->adt.ip2, value); break; case IPSET_OPT_CIDR2: - data->u.adt.cidr2 = *(const uint8_t *) value; + data->adt.cidr2 = *(const uint8_t *) value; break; case IPSET_OPT_PROTO: - data->u.adt.proto = *(const uint8_t *) value; + data->adt.proto = *(const uint8_t *) value; break; /* Swap/rename */ case IPSET_OPT_SETNAME2: - ipset_strlcpy(data->u.setname2, value, IPSET_MAXNAMELEN); + ipset_strlcpy(data->setname2, value, IPSET_MAXNAMELEN); break; /* flags */ case IPSET_OPT_EXIST: @@ -348,7 +348,7 @@ ipset_data_get(const struct ipset_data *data, enum ipset_opt opt) if (ipset_data_test(data, IPSET_OPT_TYPE)) return data->type->name; else if (ipset_data_test(data, IPSET_OPT_TYPENAME)) - return data->u.create.typename; + return data->create.typename; return NULL; case IPSET_OPT_FAMILY: return &data->family; @@ -367,47 +367,47 @@ ipset_data_get(const struct ipset_data *data, enum ipset_opt opt) return &data->timeout; /* Create-specific options */ case IPSET_OPT_GC: - return &data->u.create.gc; + return &data->create.gc; case IPSET_OPT_HASHSIZE: - return &data->u.create.hashsize; + return &data->create.hashsize; case IPSET_OPT_MAXELEM: - return &data->u.create.maxelem; + return &data->create.maxelem; case IPSET_OPT_NETMASK: - return &data->u.create.netmask; + return &data->create.netmask; case IPSET_OPT_PROBES: - return &data->u.create.probes; + return &data->create.probes; case IPSET_OPT_RESIZE: - return &data->u.create.resize; + return &data->create.resize; case IPSET_OPT_SIZE: - return &data->u.create.size; + return &data->create.size; /* Create-specific options, filled out by the kernel */ case IPSET_OPT_ELEMENTS: - return &data->u.create.elements; + return &data->create.elements; case IPSET_OPT_REFERENCES: - return &data->u.create.references; + return &data->create.references; case IPSET_OPT_MEMSIZE: - return &data->u.create.memsize; + return &data->create.memsize; /* Create-specific options, TYPE */ case IPSET_OPT_REVISION: - return &data->u.create.revision; + return &data->create.revision; case IPSET_OPT_REVISION_MIN: - return &data->u.create.revision_min; + return &data->create.revision_min; /* ADT-specific options */ case IPSET_OPT_ETHER: - return data->u.adt.ether; + return data->adt.ether; case IPSET_OPT_NAME: - return data->u.adt.name; + return data->adt.name; case IPSET_OPT_NAMEREF: - return data->u.adt.nameref; + return data->adt.nameref; case IPSET_OPT_IP2: - return &data->u.adt.ip2; + return &data->adt.ip2; case IPSET_OPT_CIDR2: - return &data->u.adt.cidr2; + return &data->adt.cidr2; case IPSET_OPT_PROTO: - return &data->u.adt.proto; + return &data->adt.proto; /* Swap/rename */ case IPSET_OPT_SETNAME2: - return data->u.setname2; + return data->setname2; /* flags */ case IPSET_OPT_FLAGS: case IPSET_OPT_EXIST: -- cgit v1.2.3 From 8673a740e4279e553e31e1b82ac8e4061ab5dc6f Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 19 Dec 2010 03:09:09 +0100 Subject: libipset: remove redundant casts --- lib/data.c | 4 ++-- lib/parse.c | 8 ++++---- lib/session.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/data.c b/lib/data.c index 2719b84..022e4b4 100644 --- a/lib/data.c +++ b/lib/data.c @@ -79,9 +79,9 @@ static void copy_addr(uint8_t family, union nf_inet_addr *ip, const void *value) { if (family == AF_INET) - in4cpy(&ip->in, (const struct in_addr *)value); + in4cpy(&ip->in, value); else - in6cpy(&ip->in6, (const struct in6_addr *)value); + in6cpy(&ip->in6, value); } /** diff --git a/lib/parse.c b/lib/parse.c index 01b0ccf..437ff61 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -48,7 +48,7 @@ ipset_strchr(const char *str, const char *sep) assert(sep); for (; *sep != '\0'; sep++) - if ((match = strchr(str, (int)sep[0])) != NULL + if ((match = strchr(str, sep[0])) != NULL && str[0] != sep[0] && str[strlen(str)-1] != sep[0]) return match; @@ -103,7 +103,7 @@ string_to_u8(struct ipset_session *session, unsigned long long num = 0; err = string_to_number_ll(session, str, 0, 255, &num); - *ret = (uint8_t) num; + *ret = num; return err; } @@ -129,7 +129,7 @@ string_to_u16(struct ipset_session *session, unsigned long long num = 0; err = string_to_number_ll(session, str, 0, USHRT_MAX, &num); - *ret = (uint16_t) num; + *ret = num; return err; } @@ -142,7 +142,7 @@ string_to_u32(struct ipset_session *session, unsigned long long num = 0; err = string_to_number_ll(session, str, 0, UINT_MAX, &num); - *ret = (uint32_t) num; + *ret = num; return err; } diff --git a/lib/session.c b/lib/session.c index babd881..d043806 100644 --- a/lib/session.c +++ b/lib/session.c @@ -468,7 +468,7 @@ static int generic_data_attr_cb(const struct nlattr *attr, void *data, int attr_max, const struct ipset_attr_policy *policy) { - const struct nlattr **tb = (const struct nlattr **)data; + const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); D("attr type: %u, len %u", type, attr->nla_len); @@ -1464,7 +1464,7 @@ static int build_send_private_msg(struct ipset_session *session, enum ipset_cmd cmd) { char buffer[PRIVATE_MSG_BUFLEN] __attribute__ ((aligned)); - struct nlmsghdr *nlh = (struct nlmsghdr *) (void *) buffer; + struct nlmsghdr *nlh = (void *)buffer; struct ipset_data *data = session->data; int len = PRIVATE_MSG_BUFLEN, ret; enum ipset_cmd saved = session->cmd; @@ -1521,7 +1521,7 @@ may_aggregate_ad(struct ipset_session *session, struct ipset_data *data, static int build_msg(struct ipset_session *session, bool aggregate) { - struct nlmsghdr *nlh = (struct nlmsghdr *) session->buffer; + struct nlmsghdr *nlh = session->buffer; struct ipset_data *data = session->data; /* Public commands */ @@ -1678,7 +1678,7 @@ ipset_commit(struct ipset_session *session) assert(session); - nlh = (struct nlmsghdr *) session->buffer; + nlh = session->buffer; D("send buffer: len %u, cmd %s", nlh->nlmsg_len, cmd2name[session->cmd]); if (nlh->nlmsg_len == 0) /* Nothing to do */ -- cgit v1.2.3 From 404c46381d01088867fdcd92ea6b97978f4c95a7 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 19 Dec 2010 05:56:19 +0100 Subject: libipset: const annotations --- lib/mnl.c | 2 +- lib/parse.c | 2 +- lib/print.c | 2 +- lib/session.c | 8 ++++---- lib/types.c | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/mnl.c b/lib/mnl.c index aa98a7c..683dba2 100644 --- a/lib/mnl.c +++ b/lib/mnl.c @@ -31,7 +31,7 @@ struct ipset_handle { }; /* Netlink flags of the commands */ -static uint16_t cmdflags[] = { +static const uint16_t cmdflags[] = { [IPSET_CMD_CREATE-1] = NLM_F_REQUEST|NLM_F_ACK|NLM_F_CREATE|NLM_F_EXCL, [IPSET_CMD_DESTROY-1] = NLM_F_REQUEST|NLM_F_ACK, [IPSET_CMD_FLUSH-1] = NLM_F_REQUEST|NLM_F_ACK, diff --git a/lib/parse.c b/lib/parse.c index 437ff61..169d2e0 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -345,7 +345,7 @@ int ipset_parse_proto(struct ipset_session *session, enum ipset_opt opt, const char *str) { - struct protoent *protoent; + const struct protoent *protoent; uint8_t proto = 0; assert(session); diff --git a/lib/print.c b/lib/print.c index 87a9f2b..767fd04 100644 --- a/lib/print.c +++ b/lib/print.c @@ -454,7 +454,7 @@ ipset_print_proto(char *buf, unsigned int len, const struct ipset_data *data, enum ipset_opt opt, uint8_t env UNUSED) { - struct protoent *protoent; + const struct protoent *protoent; uint8_t proto; assert(buf); diff --git a/lib/session.c b/lib/session.c index d043806..628c1b9 100644 --- a/lib/session.c +++ b/lib/session.c @@ -690,7 +690,7 @@ retry: static int list_adt(struct ipset_session *session, struct nlattr *nla[]) { - struct ipset_data *data = session->data; + const struct ipset_data *data = session->data; const struct ipset_type *type; const struct ipset_arg *arg; uint8_t family; @@ -774,7 +774,7 @@ list_adt(struct ipset_session *session, struct nlattr *nla[]) static int list_create(struct ipset_session *session, struct nlattr *nla[]) { - struct ipset_data *data = session->data; + const struct ipset_data *data = session->data; const struct ipset_type *type; const struct ipset_arg *arg; uint8_t family; @@ -1016,7 +1016,7 @@ static int callback_header(struct ipset_session *session, struct nlattr *nla[]) { const char *setname; - struct ipset_data *data = session->data; + const struct ipset_data *data = session->data; if (!nla[IPSET_ATTR_SETNAME]) FAILURE("Broken HEADER kernel message: missing setname!"); @@ -1047,7 +1047,7 @@ callback_header(struct ipset_session *session, struct nlattr *nla[]) static int callback_type(struct ipset_session *session, struct nlattr *nla[]) { - struct ipset_data *data = session->data; + const struct ipset_data *data = session->data; const char *typename, *orig; if (!(nla[IPSET_ATTR_TYPENAME] diff --git a/lib/types.c b/lib/types.c index d979c24..1bd4274 100644 --- a/lib/types.c +++ b/lib/types.c @@ -393,7 +393,7 @@ ipset_type_get(struct ipset_session *session, enum ipset_cmd cmd) const struct ipset_type * ipset_type_check(struct ipset_session *session) { - struct ipset_type *t, *match = NULL; + const struct ipset_type *t, *match = NULL; struct ipset_data *data; const char *typename; uint8_t family, revision; -- cgit v1.2.3 From 95b9dfb393232f384ccfc671971a0a9387e138d4 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 19 Dec 2010 05:57:52 +0100 Subject: libipset: static annotations --- lib/session.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/session.c b/lib/session.c index 628c1b9..5d341ab 100644 --- a/lib/session.c +++ b/lib/session.c @@ -273,7 +273,7 @@ struct ipset_attr_policy { }; /* Attribute policies and mapping to options */ -const struct ipset_attr_policy cmd_attrs[] = { +static const struct ipset_attr_policy cmd_attrs[] = { [IPSET_ATTR_PROTOCOL] = { .type = MNL_TYPE_U8, }, @@ -317,7 +317,7 @@ const struct ipset_attr_policy cmd_attrs[] = { }, }; -const struct ipset_attr_policy create_attrs[] = { +static const struct ipset_attr_policy create_attrs[] = { [IPSET_ATTR_IP] = { .type = MNL_TYPE_NESTED, .opt = IPSET_OPT_IP, @@ -392,7 +392,7 @@ const struct ipset_attr_policy create_attrs[] = { }, }; -const struct ipset_attr_policy adt_attrs[] = { +static const struct ipset_attr_policy adt_attrs[] = { [IPSET_ATTR_IP] = { .type = MNL_TYPE_NESTED, .opt = IPSET_OPT_IP, @@ -454,7 +454,7 @@ const struct ipset_attr_policy adt_attrs[] = { }, }; -const struct ipset_attr_policy ipaddr_attrs[] = { +static const struct ipset_attr_policy ipaddr_attrs[] = { [IPSET_ATTR_IPADDR_IPV4] = { .type = MNL_TYPE_U32, }, -- cgit v1.2.3