if (!settings || !*settings) {
error("missing argument");
- return;
+ goto out;
}
/* parse settings */
priv->dl_handle = dlopen(priv->filename, RTLD_LAZY);
if (!priv->dl_handle) {
error("%s", dlerror());
- return;
+ goto out;
}
/* find nsswitch entry points */
try_symbol_pattern(query, priv, (void *) &priv->gethostbyname4_r, "_nss_%s_gethostbyname4_r", "gethostbyname4");
try_symbol_pattern(query, priv, (void *) &priv->getaddrinfo, "_nss_%s_getaddrinfo", "getaddrinfo");
+out:
free(priv->name);
priv->name = NULL;
free(priv->filename);