[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Sun Sep 11 21:53:03 UTC 2016
The branch, master has been updated
via 76360ca s3/smbd: use stat from smb_fname if valid in refuse_symlink()
via b13b3c1 s3/smbd: in call_trans2qfilepathinfo call lstat when dealing with posix pathnames
via 49c5e4f s3-registry: create winprint print processor entry for x64 as well.
via add8419 libgpo: accept more boolean matches in gp_inifile_getbool().
via 88fc7a7 s3-rpc_client: make it more clear printer driver version is a QWORD not a DWORD.
via 180fc18 s4-torture: also test NULL servername in spoolss_GetPrinterDriverPackagePath
via d6d7871 s3-spoolss: avoid referencing p->opnum in _spoolss_AddPrinterDriverEx
via f3e94b8 s3-rpcclient: add getdriverpackagepath command.
via 9123783 s3-waf: give rpcclient its own wscript_build.
via 149da58 s4-torture: use torture_comment in torture_rpc_connection()
via 24b5a44 s3-spoolss: add missing newline in debug message of _spoolss_OpenPrinterEx.
via bed0d84 s4-torture: add test for spoolss_LogJobInfoForBranchOffice
via 0d2dd7e spoolss: add IDL for spoolss_LogJobInfoForBranchOffice.
via 45748ae pidl: in s3 server templates, support default HRESULT error returns.
from dd8553b s4-kdc: Move kpasswd_make_pwchange_reply() to a helper file
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 76360caad20dae0389e3e78d58d5866e5657a6cd
Author: Ralph Boehme <slow at samba.org>
Date: Sat Sep 10 14:43:07 2016 +0200
s3/smbd: use stat from smb_fname if valid in refuse_symlink()
Now that refuse_symlink() gets passed in a smb_fname and not just a char
buffer, we can try to reuse its stat info and save one stat call here.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Sun Sep 11 23:52:17 CEST 2016 on sn-devel-144
commit b13b3c11054f918f18841186a6efc5dedd2ffd66
Author: Ralph Boehme <slow at samba.org>
Date: Sun Sep 11 15:35:37 2016 +0200
s3/smbd: in call_trans2qfilepathinfo call lstat when dealing with posix pathnames
This might be an info level SMB_INFO_QUERY_ALL_EAS which is not covered
by INFO_LEVEL_IS_UNIX(). If smb_fname is a symlink we would then stat it
in POSIX context.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 49c5e4fbceaeab7dcf83edda2020667b194e5545
Author: Günther Deschner <gd at samba.org>
Date: Sat Sep 10 11:07:54 2016 +0200
s3-registry: create winprint print processor entry for x64 as well.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit add8419783e76dee165feea9093571bd534bcfa1
Author: Günther Deschner <gd at samba.org>
Date: Thu Sep 8 21:28:22 2016 +0200
libgpo: accept more boolean matches in gp_inifile_getbool().
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 88fc7a74b5834c03f1f5947297df5effa414ee70
Author: Günther Deschner <gd at samba.org>
Date: Thu Sep 8 21:22:17 2016 +0200
s3-rpc_client: make it more clear printer driver version is a QWORD not a DWORD.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 180fc18f49181adf14714e1d0d59c0820ac23489
Author: Günther Deschner <gd at samba.org>
Date: Thu Sep 8 21:09:42 2016 +0200
s4-torture: also test NULL servername in spoolss_GetPrinterDriverPackagePath
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit d6d7871bde70459147fa79b27e88ffa9fb480cb6
Author: Günther Deschner <gd at samba.org>
Date: Thu Sep 8 21:06:41 2016 +0200
s3-spoolss: avoid referencing p->opnum in _spoolss_AddPrinterDriverEx
When called by another protocol, this call would fail when called with an
unexpected opnum... This change is in preparation for supporting MS-PAR.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit f3e94b88d7dbbc65a622a310602ec0a43f0e2a68
Author: Günther Deschner <gd at samba.org>
Date: Thu Sep 8 20:57:05 2016 +0200
s3-rpcclient: add getdriverpackagepath command.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 9123783d1be9449043f3aa65c57ed89b0b5d3069
Author: Günther Deschner <gd at samba.org>
Date: Thu Jan 10 13:53:56 2013 +0100
s3-waf: give rpcclient its own wscript_build.
Guenther
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 149da58ca63d03b6983b9927ca65cebd4a9bbefb
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 2 12:44:34 2016 +0200
s4-torture: use torture_comment in torture_rpc_connection()
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 24b5a44c7d5b39ec97bf75dbf8115e28e46d6006
Author: Günther Deschner <gd at samba.org>
Date: Thu Aug 25 17:10:09 2016 +0200
s3-spoolss: add missing newline in debug message of _spoolss_OpenPrinterEx.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit bed0d84550f80b5cf1f8c5265802e3bd690151a6
Author: Günther Deschner <gd at samba.org>
Date: Tue Sep 6 12:11:26 2016 +0200
s4-torture: add test for spoolss_LogJobInfoForBranchOffice
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 0d2dd7eb9b8ef8f9a373f51e13f218cac4d9db62
Author: Günther Deschner <gd at samba.org>
Date: Tue Aug 23 12:28:53 2016 +0200
spoolss: add IDL for spoolss_LogJobInfoForBranchOffice.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 45748aeb593398a39c3c1db3b6047cee960e95b5
Author: Günther Deschner <gd at samba.org>
Date: Mon Apr 7 15:47:43 2014 +0200
pidl: in s3 server templates, support default HRESULT error returns.
Guenther
Signed-off-by: Guenther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
libgpo/gpo_ini.c | 6 +-
librpc/idl/spoolss.idl | 97 +++++++++++++++++++++++++++++
pidl/lib/Parse/Pidl/Samba3/Template.pm | 2 +
selftest/knownfail | 1 +
source3/registry/reg_backend_db.c | 1 +
source3/rpc_client/cli_winreg_spoolss.c | 6 +-
source3/rpc_server/spoolss/srv_spoolss_nt.c | 54 +++++++++++-----
source3/rpcclient/cmd_spoolss.c | 69 ++++++++++++++++++++
source3/rpcclient/wscript_build | 54 ++++++++++++++++
source3/smbd/trans2.c | 14 +++--
source3/wscript_build | 53 +---------------
source4/torture/rpc/rpc.c | 2 +-
source4/torture/rpc/spoolss.c | 77 +++++++++++++++++++++++
13 files changed, 357 insertions(+), 79 deletions(-)
create mode 100644 source3/rpcclient/wscript_build
Changeset truncated at 500 lines:
diff --git a/libgpo/gpo_ini.c b/libgpo/gpo_ini.c
index a91bb92..c027612 100644
--- a/libgpo/gpo_ini.c
+++ b/libgpo/gpo_ini.c
@@ -197,12 +197,14 @@ NTSTATUS gp_inifile_getbool(struct gp_inifile_context *ctx, const char *key, boo
return result;
}
- if (strequal(value, "Yes")) {
+ if (strequal(value, "Yes") ||
+ strequal(value, "True")) {
if (ret) {
*ret = true;
}
return NT_STATUS_OK;
- } else if (strequal(value, "No")) {
+ } else if (strequal(value, "No") ||
+ strequal(value, "False")) {
if (ret) {
*ret = false;
}
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index ae10917..c9d9b36 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -3413,4 +3413,101 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
[out,ref] uint32 *pcProperties,
[out,ref,size_is(,*pcProperties)] RPC_PrintNamedProperty **ppProperties
);
+
+ /******************/
+ /* Function: 0x72 */
+ [todo] WERROR spoolss_72(
+ );
+
+ /******************/
+ /* Function: 0x73 */
+ [todo] WERROR spoolss_73(
+ );
+
+ /******************/
+ /* Function: 0x71 */
+ typedef enum {
+ kInvalidJobState = 0,
+ kLogJobPrinted = 1,
+ kLogJobRendered = 2,
+ kLogJobError = 3,
+ kLogJobPipelineError = 4,
+ kLogOfflineFileFull = 5
+ } EBranchOfficeJobEventType;
+
+ typedef struct {
+ DWORD Status;
+ [string,charset(UTF16)] uint16 *pDocumentName;
+ [string,charset(UTF16)] uint16 *pUserName;
+ [string,charset(UTF16)] uint16 *pMachineName;
+ [string,charset(UTF16)] uint16 *pPrinterName;
+ [string,charset(UTF16)] uint16 *pPortName;
+ hyper Size;
+ DWORD TotalPages;
+ } spoolss_BranchOfficeJobDataPrinted;
+
+ typedef struct {
+ hyper Size;
+ DWORD ICMMethod;
+ short Color;
+ short PrintQuality;
+ short YResolution;
+ short Copies;
+ short TTOption;
+ } spoolss_BranchOfficeJobDataRendered;
+
+ typedef struct {
+ WERROR LastError;
+ [string,charset(UTF16)] uint16 *pDocumentName;
+ [string,charset(UTF16)] uint16 *pUserName;
+ [string,charset(UTF16)] uint16 *pPrinterName;
+ [string,charset(UTF16)] uint16 *pDataType;
+ hyper TotalSize;
+ hyper PrintedSize;
+ DWORD TotalPages;
+ DWORD PrintedPages;
+ [string,charset(UTF16)] uint16 *pMachineName;
+ [string,charset(UTF16)] uint16 *pJobError;
+ [string,charset(UTF16)] uint16 *pErrorDescription;
+ } spoolss_BranchOfficeJobDataError;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *pDocumentName;
+ [string,charset(UTF16)] uint16 *pPrinterName;
+ [string,charset(UTF16)] uint16 *pExtraErrorInfo;
+ } spoolss_BranchOfficeJobDataPipelineFailed;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *pMachineName;
+ } spoolss_BranchOfficeLogOfflineFileFull;
+
+ typedef [ms_union,switch_type(EBranchOfficeJobEventType)] union {
+ [case(kLogJobPrinted)]
+ spoolss_BranchOfficeJobDataPrinted LogJobPrinted;
+ [case(kLogJobRendered)]
+ spoolss_BranchOfficeJobDataRendered LogJobRendered;
+ [case(kLogJobError)]
+ spoolss_BranchOfficeJobDataError LogJobError;
+ [case(kLogJobPipelineError)]
+ spoolss_BranchOfficeJobDataPipelineFailed LogPipelineFailed;
+ [case(kLogOfflineFileFull)]
+ spoolss_BranchOfficeLogOfflineFileFull LogOfflineFileFull;
+ } spoolss_BranchOfficeJobInfo;
+
+ typedef struct {
+ EBranchOfficeJobEventType eEventType;
+ DWORD JobId;
+ [switch_is(eEventType)] spoolss_BranchOfficeJobInfo JobInfo;
+ } spoolss_BranchOfficeJobData;
+
+ typedef struct {
+ DWORD cJobDataEntries;
+ [size_is(cJobDataEntries)] spoolss_BranchOfficeJobData JobData[];
+ } spoolss_BranchOfficeJobDataContainer;
+
+ WERROR spoolss_LogJobInfoForBranchOffice(
+ [in,ref] policy_handle *hPrinter,
+ [in,ref] spoolss_BranchOfficeJobDataContainer *pBranchOfficeJobDataContainer
+ );
+
}
diff --git a/pidl/lib/Parse/Pidl/Samba3/Template.pm b/pidl/lib/Parse/Pidl/Samba3/Template.pm
index 4750cef..d50f706 100644
--- a/pidl/lib/Parse/Pidl/Samba3/Template.pm
+++ b/pidl/lib/Parse/Pidl/Samba3/Template.pm
@@ -70,6 +70,8 @@ $pad"."struct $fname *r)
$res .= "\treturn NT_STATUS_NOT_IMPLEMENTED;\n";
} elsif ($d->{RETURN_TYPE} eq "WERROR") {
$res .= "\treturn WERR_NOT_SUPPORTED;\n";
+ } elsif ($d->{RETURN_TYPE} eq "HRESULT") {
+ $res .= "\treturn HRES_ERROR_NOT_SUPPORTED;\n";
}
$res .= "}
diff --git a/selftest/knownfail b/selftest/knownfail
index 1051518..076880f 100644
--- a/selftest/knownfail
+++ b/selftest/knownfail
@@ -180,6 +180,7 @@
^samba3.rpc.spoolss.printer.addprinter.driver_info_winreg # knownfail or flapping?
^samba3.rpc.spoolss.printer.addprinterex.driver_info_winreg # knownfail or flapping?
^samba3.rpc.spoolss.printer.*.publish_toggle\(.*\)$ # needs spoolss AD member env
+^samba3.rpc.spoolss.printer.*.log_jobinfo\(.*\)$ # not implemented yet
^samba3.rpc.spoolss.printserver.*.add_processor\(.*\)$
^samba3.rpc.spoolss.printserver.*.get_core_printer_drivers\(.*\)$
^samba3.rpc.spoolss.printserver.*.get_printer_driver_package_path\(.*\)$
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index bdfe7d2..45d74d5 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -126,6 +126,7 @@ static const char *builtin_registry_paths[] = {
KEY_PRINTING "\\Forms",
KEY_PRINTING "\\Printers",
KEY_PRINTING "\\Environments\\Windows NT x86\\Print Processors\\winprint",
+ KEY_PRINTING "\\Environments\\Windows x64\\Print Processors\\winprint",
KEY_SHARES,
KEY_EVENTLOG,
KEY_SMBCONF,
diff --git a/source3/rpc_client/cli_winreg_spoolss.c b/source3/rpc_client/cli_winreg_spoolss.c
index ac4fe86..8014e41 100644
--- a/source3/rpc_client/cli_winreg_spoolss.c
+++ b/source3/rpc_client/cli_winreg_spoolss.c
@@ -563,7 +563,7 @@ static WERROR winreg_printer_write_ver(TALLOC_CTX *mem_ctx,
return result;
}
-static WERROR winreg_printer_ver_to_dword(const char *str, uint64_t *data)
+static WERROR winreg_printer_ver_to_qword(const char *str, uint64_t *data)
{
unsigned int v1, v2, v3, v4;
@@ -3659,7 +3659,7 @@ WERROR winreg_get_driver(TALLOC_CTX *mem_ctx,
"DriverVersion",
&tmp_str);
if (W_ERROR_IS_OK(result)) {
- result = winreg_printer_ver_to_dword(tmp_str,
+ result = winreg_printer_ver_to_qword(tmp_str,
&info8->driver_version);
}
CHECK_ERROR(result);
@@ -3727,7 +3727,7 @@ WERROR winreg_get_driver(TALLOC_CTX *mem_ctx,
"MinInboxDriverVerVersion",
&tmp_str);
if (W_ERROR_IS_OK(result)) {
- result = winreg_printer_ver_to_dword(tmp_str,
+ result = winreg_printer_ver_to_qword(tmp_str,
&info8->min_inbox_driver_ver_version);
}
CHECK_ERROR(result);
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 7413d9d..90aac33 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -1819,9 +1819,8 @@ WERROR _spoolss_OpenPrinterEx(struct pipes_struct *p,
close_printer_handle(p, r->out.handle);
ZERO_STRUCTP(r->out.handle);
DEBUG(3,("access DENIED as user is not root, "
- "has no printoperator privilege, "
- "not a member of the printoperator builtin group and "
- "is not in printer admin list"));
+ "has no printoperator privilege and is "
+ "not a member of the printoperator builtin group\n"));
return WERR_ACCESS_DENIED;
}
@@ -8439,18 +8438,6 @@ WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p,
WERROR err = WERR_OK;
const char *driver_name = NULL;
uint32_t version;
- const char *fn;
-
- switch (p->opnum) {
- case NDR_SPOOLSS_ADDPRINTERDRIVER:
- fn = "_spoolss_AddPrinterDriver";
- break;
- case NDR_SPOOLSS_ADDPRINTERDRIVEREX:
- fn = "_spoolss_AddPrinterDriverEx";
- break;
- default:
- return WERR_INVALID_PARAM;
- }
/*
* we only support the semantics of AddPrinterDriver()
@@ -8469,7 +8456,7 @@ WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p,
if (r->in.info_ctr->level != 3 &&
r->in.info_ctr->level != 6 &&
r->in.info_ctr->level != 8) {
- DEBUG(0,("%s: level %d not yet implemented\n", fn,
+ DEBUG(0,("%s: level %d not yet implemented\n", __func__,
r->in.info_ctr->level));
return WERR_UNKNOWN_LEVEL;
}
@@ -8504,7 +8491,7 @@ WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p,
if (!srv_spoolss_drv_upgrade_printer(driver_name, p->msg_ctx)) {
DEBUG(0,("%s: Failed to send message about upgrading driver [%s]!\n",
- fn, driver_name));
+ __func__, driver_name));
}
done:
@@ -11303,3 +11290,36 @@ WERROR _spoolss_RpcEnumJobNamedProperties(struct pipes_struct *p,
p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
return WERR_NOT_SUPPORTED;
}
+
+/****************************************************************
+ _spoolss_72
+****************************************************************/
+
+WERROR _spoolss_72(struct pipes_struct *p,
+ struct spoolss_72 *r)
+{
+ p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
+ return WERR_NOT_SUPPORTED;
+}
+
+/****************************************************************
+ _spoolss_73
+****************************************************************/
+
+WERROR _spoolss_73(struct pipes_struct *p,
+ struct spoolss_73 *r)
+{
+ p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
+ return WERR_NOT_SUPPORTED;
+}
+
+/****************************************************************
+ _spoolss_RpcLogJobInfoForBranchOffice
+****************************************************************/
+
+WERROR _spoolss_LogJobInfoForBranchOffice(struct pipes_struct *p,
+ struct spoolss_LogJobInfoForBranchOffice *r)
+{
+ p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
+ return WERR_NOT_SUPPORTED;
+}
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 3191e80..91f328e 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -1600,6 +1600,74 @@ static WERROR cmd_spoolss_getdriverdir(struct rpc_pipe_client *cli,
/****************************************************************************
****************************************************************************/
+static WERROR cmd_spoolss_getdriverpackagepath(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ int argc, const char **argv)
+{
+ HRESULT hresult;
+ NTSTATUS status;
+ const char *env = SPOOLSS_ARCHITECTURE_NT_X86;
+ uint32_t offered;
+ uint32_t needed;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
+ const char *package_id = "";
+ const char *cab = NULL;
+
+ if (argc > 4) {
+ printf("Usage: %s [environment] [package_id]\n", argv[0]);
+ return WERR_OK;
+ }
+
+ /* Get the arguments need to open the printer handle */
+
+ if (argc >= 2) {
+ env = argv[1];
+ }
+
+ if (argc == 3) {
+ package_id = argv[2];
+ }
+
+ offered = 1;
+ cab = talloc_array(mem_ctx, char, offered);
+ status = dcerpc_spoolss_GetPrinterDriverPackagePath(b, mem_ctx,
+ cli->srv_name_slash,
+ env,
+ NULL,
+ package_id,
+ cab,
+ offered,
+ &needed,
+ &hresult);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
+
+ if (W_ERROR_EQUAL(W_ERROR(WIN32_FROM_HRESULT(hresult)), WERR_INSUFFICIENT_BUFFER)) {
+ offered = needed;
+ cab = talloc_zero_array(mem_ctx, char, offered);
+
+ status = dcerpc_spoolss_GetPrinterDriverPackagePath(b, mem_ctx,
+ cli->srv_name_slash,
+ env,
+ NULL,
+ package_id,
+ cab,
+ offered,
+ &needed,
+ &hresult);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
+ }
+
+ return W_ERROR(WIN32_FROM_HRESULT(hresult));
+}
+
+
+/****************************************************************************
+****************************************************************************/
+
static void set_drv_info_3_env(TALLOC_CTX *mem_ctx,
struct spoolss_AddDriverInfo3 *info,
const char *arch)
@@ -3866,6 +3934,7 @@ struct cmd_set spoolss_commands[] = {
{ "getdataex", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdataex, &ndr_table_spoolss, NULL, "Get printer driver data with keyname", ""},
{ "getdriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriver, &ndr_table_spoolss, NULL, "Get print driver information", "" },
{ "getdriverdir", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriverdir, &ndr_table_spoolss, NULL, "Get print driver upload directory", "" },
+ { "getdriverpackagepath", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriverpackagepath, &ndr_table_spoolss, NULL, "Get print driver package download directory", "" },
{ "getprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinter, &ndr_table_spoolss, NULL, "Get printer info", "" },
{ "openprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_open_printer, &ndr_table_spoolss, NULL, "Open printer handle", "" },
{ "openprinter_ex", RPC_RTYPE_WERROR, NULL, cmd_spoolss_open_printer_ex, &ndr_table_spoolss, NULL, "Open printer handle", "" },
diff --git a/source3/rpcclient/wscript_build b/source3/rpcclient/wscript_build
new file mode 100644
index 0000000..3e8791d
--- /dev/null
+++ b/source3/rpcclient/wscript_build
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+
+bld.SAMBA3_BINARY('rpcclient',
+ source='''rpcclient.c
+ cmd_lsarpc.c
+ cmd_samr.c
+ cmd_spoolss.c
+ cmd_netlogon.c
+ cmd_srvsvc.c
+ cmd_dfs.c
+ cmd_epmapper.c
+ cmd_dssetup.c
+ cmd_echo.c
+ cmd_shutdown.c
+ cmd_test.c
+ cmd_wkssvc.c
+ cmd_ntsvcs.c
+ cmd_drsuapi.c
+ cmd_eventlog.c
+ cmd_winreg.c
+ cmd_fss.c
+ cmd_clusapi.c
+ cmd_witness.c
+ ''',
+ deps='''
+ talloc
+ popt_samba3
+ pdb
+ libsmb
+ param
+ ndr-standard
+ msrpc3
+ SMBREADLINE
+ trusts_util
+ RPC_NDR_WINREG
+ RPC_NDR_ECHO
+ RPC_CLIENT_SCHANNEL
+ DCUTIL
+ LIBCLI_SAMR
+ libcli_lsa3
+ libcli_netlogon3
+ cli_spoolss
+ RPC_NDR_SRVSVC
+ RPC_NDR_WKSSVC
+ RPC_NDR_DSSETUP
+ RPC_NDR_DFS
+ RPC_NDR_DRSUAPI
+ RPC_NDR_NTSVCS
+ RPC_NDR_EVENTLOG
+ INIT_SAMR
+ RPC_NDR_FSRVP
+ RPC_NDR_CLUSAPI
+ RPC_NDR_WITNESS
+ ''')
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 1775316..6999b2d 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -55,7 +55,7 @@ static char *store_file_unix_basic_info2(connection_struct *conn,
const SMB_STRUCT_STAT *psbuf);
/****************************************************************************
- Check if an open file handle or pathname is a symlink.
+ Check if an open file handle or smb_fname is a symlink.
****************************************************************************/
static NTSTATUS refuse_symlink(connection_struct *conn,
@@ -68,6 +68,10 @@ static NTSTATUS refuse_symlink(connection_struct *conn,
if (fsp) {
pst = &fsp->fsp_name->st;
} else {
+ pst = &smb_fname->st;
+ }
+
+ if (!VALID_STAT(*pst)) {
int ret = vfs_stat_smb_basename(conn,
smb_fname,
&sbuf);
@@ -76,6 +80,7 @@ static NTSTATUS refuse_symlink(connection_struct *conn,
}
pst = &sbuf;
}
+
if (S_ISLNK(pst->st_ex_mode)) {
return NT_STATUS_ACCESS_DENIED;
}
@@ -5767,7 +5772,8 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
}
if (info_level == SMB_QUERY_FILE_UNIX_BASIC ||
info_level == SMB_QUERY_FILE_UNIX_INFO2 ||
- info_level == SMB_QUERY_FILE_UNIX_LINK) {
+ info_level == SMB_QUERY_FILE_UNIX_LINK ||
+ req->posix_pathnames) {
ucf_flags |= UCF_UNIX_NAME_LOOKUP;
}
}
@@ -5831,7 +5837,7 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
return;
}
- if (INFO_LEVEL_IS_UNIX(info_level)) {
+ if (INFO_LEVEL_IS_UNIX(info_level) || req->posix_pathnames) {
/* Always do lstat for UNIX calls. */
if (SMB_VFS_LSTAT(conn, smb_fname_base) != 0) {
DEBUG(3,("call_trans2qfilepathinfo: "
@@ -5877,7 +5883,7 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
}
}
- if (INFO_LEVEL_IS_UNIX(info_level)) {
+ if (INFO_LEVEL_IS_UNIX(info_level) || req->posix_pathnames) {
/* Always do lstat for UNIX calls. */
if (SMB_VFS_LSTAT(conn, smb_fname)) {
DEBUG(3,("call_trans2qfilepathinfo: "
diff --git a/source3/wscript_build b/source3/wscript_build
index e25b8d5..a59927a 100755
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -998,58 +998,6 @@ bld.SAMBA3_BINARY('winbindd/winbindd',
enabled=bld.env.build_winbind,
install_path='${SBINDIR}')
--
Samba Shared Repository
More information about the samba-cvs
mailing list