]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Cleaned up error handling in cli_initialise() to fix a memleak found by
authorTim Potter <tpot@samba.org>
Mon, 6 Aug 2001 02:18:40 +0000 (02:18 +0000)
committerTim Potter <tpot@samba.org>
Mon, 6 Aug 2001 02:18:40 +0000 (02:18 +0000)
Claudia Moroder <claudiamoroder@st-ulrich.suedtirol.net>

source/libsmb/clientgen.c

index e9f55850ac18ee42615414018c0a558376c7a3a4..79fa224e8f0fda4afc891c780a647f8f7cd18f15 100644 (file)
@@ -180,24 +180,28 @@ struct cli_state *cli_initialise(struct cli_state *cli)
        cli->oplock_handler = cli_oplock_ack;
 
        if (!cli->outbuf || !cli->inbuf)
-       {
-               return NULL;
-       }
+                goto error;
 
-       if ((cli->mem_ctx = talloc_init()) == NULL) {
-               free(cli->outbuf);
-               free(cli->inbuf);
-               return NULL;
-       }
+       if ((cli->mem_ctx = talloc_init()) == NULL)
+                goto error;
 
-       memset(cli->outbuf, '\0', cli->bufsize);
-       memset(cli->inbuf, '\0', cli->bufsize);
+       memset(cli->outbuf, 0, cli->bufsize);
+       memset(cli->inbuf, 0, cli->bufsize);
 
        cli->nt_pipe_fnum = 0;
 
        cli->initialised = 1;
 
        return cli;
+
+        /* Clean up after malloc() error */
+
+ error:
+
+        safe_free(cli->inbuf);
+        safe_free(cli->outbuf);
+
+        return NULL;
 }
 
 /****************************************************************************