diff --git a/src/libmsc/smpp_smsc.c b/src/libmsc/smpp_smsc.c index a5c6165f0..4581865b9 100644 --- a/src/libmsc/smpp_smsc.c +++ b/src/libmsc/smpp_smsc.c @@ -987,14 +987,8 @@ int smpp_smsc_conf(struct smsc *smsc, const char *bind_addr, uint16_t port) /* Avoid use-after-free if bind_addr == smsc->bind_addr */ if (smsc->bind_addr == bind_addr) return 0; + osmo_talloc_replace_string(smsc, &smsc->bind_addr, bind_addr); - talloc_free((void*)smsc->bind_addr); - smsc->bind_addr = NULL; - if (bind_addr) { - smsc->bind_addr = bind_addr ? talloc_strdup(smsc, bind_addr) : NULL; - if (!smsc->bind_addr) - return -ENOMEM; - } return 0; }