summaryrefslogtreecommitdiff
path: root/src/ipcpd/shim-udp/main.c
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2017-02-03 20:38:39 +0100
committerdimitri staessens <[email protected]>2017-02-03 20:50:48 +0100
commita30e244407655d16429ef442ac23db43a548bf95 (patch)
tree3a47f2b2db895173a1e3605df3fbdc925b7b127b /src/ipcpd/shim-udp/main.c
parent29fe780c782b74f516a47521297848095a8f5ede (diff)
downloadouroboros-a30e244407655d16429ef442ac23db43a548bf95.tar.gz
ouroboros-a30e244407655d16429ef442ac23db43a548bf95.zip
ipcpd: Remove strdup() from ipcp main loop
Diffstat (limited to 'src/ipcpd/shim-udp/main.c')
-rw-r--r--src/ipcpd/shim-udp/main.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c
index e9c15579..c2f86067 100644
--- a/src/ipcpd/shim-udp/main.c
+++ b/src/ipcpd/shim-udp/main.c
@@ -776,17 +776,25 @@ static int ipcp_udp_name_reg(char * name)
uint32_t dns_addr;
uint32_t ip_addr;
#endif
+ char * name_dup;
if (strlen(name) > 24) {
LOG_ERR("DNS names cannot be longer than 24 chars.");
return -1;
}
+ name_dup = strdup(name);
+ if (name_dup == NULL) {
+ LOG_ERR("Failed to duplicate name.");
+ return -ENOMEM;
+ }
+
pthread_rwlock_rdlock(&ipcpi.state_lock);
- if (ipcp_data_reg_add_entry(ipcpi.data, name)) {
+ if (ipcp_data_reg_add_entry(ipcpi.data, name_dup)) {
pthread_rwlock_unlock(&ipcpi.state_lock);
LOG_ERR("Failed to add %s to local registry.", name);
+ free(name_dup);
return -1;
}