Don't leak memory in libnet_smbconf_getparm().
authorMichael Adam <obnox@samba.org>
Sun, 23 Dec 2007 23:47:43 +0000 (00:47 +0100)
committerMichael Adam <obnox@samba.org>
Sun, 23 Dec 2007 23:47:43 +0000 (00:47 +0100)
Michael

source/libnet/libnet_conf.c

index 3a64c3d84499a12f7a106a04d8c88931cd1422ac..d9a9e7de9b254466e9933b20508631314ec2f6d7 100644 (file)
@@ -280,18 +280,24 @@ WERROR libnet_smbconf_getparm(TALLOC_CTX *mem_ctx,
        struct registry_key *key = NULL;
 
        if (!libnet_smbconf_key_exists(mem_ctx, service)) {
-               return WERR_NO_SUCH_SERVICE;
+               werr = WERR_NO_SUCH_SERVICE;
+               goto done;
        }
 
        werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_READ, &key);
-       W_ERROR_NOT_OK_RETURN(werr);
+       if (!W_ERROR_IS_OK(werr)) {
+               goto done;
+       }
 
        if (!libnet_smbconf_value_exists(mem_ctx, key, param)) {
-               return WERR_INVALID_PARAM;
+               werr = WERR_INVALID_PARAM;
+               goto done;
        }
 
        werr = reg_queryvalue(mem_ctx, key, param, value);
 
+done:
+       TALLOC_FREE(key);
        return werr;
 }