From: Andreas Schneider Date: Tue, 4 Sep 2018 14:08:58 +0000 (+0200) Subject: s3:libsmbclient: Do not call cli_RNetShareEnum if SMB1 is disabled X-Git-Tag: tdb-1.3.17~1764 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50f89bcdc9473abf69da1fee6f9014df63adc3e3;p=thirdparty%2Fsamba.git s3:libsmbclient: Do not call cli_RNetShareEnum if SMB1 is disabled Signed-off-by: Andreas Schneider Reviewed-by: Jeremy Allison --- diff --git a/source3/libsmb/libsmb_dir.c b/source3/libsmb/libsmb_dir.c index ff19ed57f14..886aa626509 100644 --- a/source3/libsmb/libsmb_dir.c +++ b/source3/libsmb/libsmb_dir.c @@ -825,6 +825,7 @@ SMBC_opendir_ctx(SMBCCTX *context, } } else if (srv || (resolve_name(server, &rem_ss, 0x20, false))) { + int rc; /* * If we hadn't found the server, get one now @@ -851,24 +852,24 @@ SMBC_opendir_ctx(SMBCCTX *context, /* List the shares ... */ - if (net_share_enum_rpc( - srv->cli, - list_fn, - (void *) dir) < 0 && - cli_RNetShareEnum( - srv->cli, - list_fn, - (void *)dir) < 0) { - - errno = cli_errno(srv->cli); - if (dir) { - SAFE_FREE(dir->fname); - SAFE_FREE(dir); - } + rc = net_share_enum_rpc(srv->cli, + list_fn, + (void *)dir); + if (rc != 0 && + lp_client_min_protocol() <= PROTOCOL_NT1) { + rc = cli_RNetShareEnum(srv->cli, + list_fn, + (void *)dir); + } + if (rc != 0) { + errno = cli_errno(srv->cli); + if (dir != NULL) { + SAFE_FREE(dir->fname); + SAFE_FREE(dir); + } TALLOC_FREE(frame); - return NULL; - - } + return NULL; + } } else { /* Neither the workgroup nor server exists */ errno = ECONNREFUSED;