s4-client: Don't leak file descriptor.
authorAndreas Schneider <asn@samba.org>
Wed, 20 Feb 2013 08:23:37 +0000 (09:23 +0100)
committerAlexander Bokovoy <ab@samba.org>
Fri, 22 Feb 2013 15:36:13 +0000 (16:36 +0100)
Reviewed-by: Alexander Bokovoy <ab@samba.org>
source4/client/client.c

index 1dc5b6dd017e892ccb7339cf65a8766d66ba051f..5e8f5ca8aebf3edddfb1e63376fd6613a4540733 100644 (file)
@@ -722,6 +722,7 @@ static int do_get(struct smbclient_context *ctx, char *rname, const char *p_lnam
                                start = lseek(handle, 0, SEEK_END);
                                if (start == -1) {
                                        d_printf("Error seeking local file\n");
+                                       close(handle);
                                        return 1;
                                }
                        }
@@ -741,6 +742,9 @@ static int do_get(struct smbclient_context *ctx, char *rname, const char *p_lnam
            NT_STATUS_IS_ERR(smbcli_getattrE(ctx->cli->tree, fnum, 
                          &attr, &size, NULL, NULL, NULL))) {
                d_printf("getattrib: %s\n",smbcli_errstr(ctx->cli->tree));
+               if (newhandle) {
+                       close(handle);
+               }
                return 1;
        }
 
@@ -750,6 +754,9 @@ static int do_get(struct smbclient_context *ctx, char *rname, const char *p_lnam
        if(!(data = (uint8_t *)malloc(read_size))) { 
                d_printf("malloc fail for size %d\n", read_size);
                smbcli_close(ctx->cli->tree, fnum);
+               if (newhandle) {
+                       close(handle);
+               }
                return 1;
        }