diff options
author | Phil Sutter <phil@nwl.cc> | 2024-03-07 14:07:21 +0100 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2024-04-11 01:27:07 +0200 |
commit | bb5e75be9d28c37096c90d9ae9fcc7ad0841f2c2 (patch) | |
tree | 85ffe860079dbfe0ec612a5baf09568ba3a07b35 /src/object.c | |
parent | 5d94baba0f43426120ce025aacaa74406659ad7f (diff) |
utils: Introduce and use nftnl_set_str_attr()
The function consolidates the necessary code when assigning to string
pointer attributes, namely:
* Conditional free of the previous value
* Allocation of new value
* Checking for memory allocation errors
* Setting respective flag bit
A new feature previously missing in all call sites is respecting
data_len in case the buffer up to that point did not contain a NUL-char.
Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'src/object.c')
-rw-r--r-- | src/object.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/object.c b/src/object.c index 2ddaa29..19cb7d0 100644 --- a/src/object.c +++ b/src/object.c @@ -113,17 +113,12 @@ int nftnl_obj_set_data(struct nftnl_obj *obj, uint16_t attr, switch (attr) { case NFTNL_OBJ_TABLE: - xfree(obj->table); - obj->table = strdup(data); - if (!obj->table) - return -1; + return nftnl_set_str_attr(&obj->table, &obj->flags, + attr, data, data_len); break; case NFTNL_OBJ_NAME: - xfree(obj->name); - obj->name = strdup(data); - if (!obj->name) - return -1; - break; + return nftnl_set_str_attr(&obj->name, &obj->flags, + attr, data, data_len); case NFTNL_OBJ_TYPE: obj->ops = nftnl_obj_ops_lookup(*((uint32_t *)data)); if (!obj->ops) |