The branch, master has been updated via dc280f88bec samba-tool: fetch "no such subcommand" error and print error message via ae5cb7346bf librpc: Provide clearer debug messages for malformed DCE/RPC bind from c7a4578d064 s3: pass DCE RPC handle type to create_policy_hnd
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit dc280f88becc6679cd95bf8914f80812358338cc Author: Björn Baumbach <b...@sernet.de> Date: Tue Apr 28 17:09:56 2020 +0200 samba-tool: fetch "no such subcommand" error and print error message This patch especially improves the case where extra arguments are used. Without this patch just the attributes are mentioned as invalid, if samba-tool is called with an invalid/unknown subcommand. Example without this patch: # samba-tool sites list --all Usage: samba-tool sites <subcommand> samba-tool sites: error: no such option: --all This can be deceptive for users. Is looks like the "list" command does not provide a "--all" option. Example with this patch: # samba-tool sites list --all samba-tool sites: no such subcommand: list Usage: samba-tool sites <subcommand> (...) Signed-off-by: Björn Baumbach <b...@sernet.de> Reviewed-by: Andrew Bartlett <abart...@samba.org> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Wed Apr 29 08:08:21 UTC 2020 on sn-devel-184 commit ae5cb7346bf6f7759c88d7df6a5c1bd7965ee284 Author: Andrew Bartlett <abart...@samba.org> Date: Fri Apr 24 11:04:00 2020 +1200 librpc: Provide clearer debug messages for malformed DCE/RPC bind REF: https://lists.samba.org/archive/samba/2020-April/229334.html BUG: https://bugzilla.samba.org/show_bug.cgi?id=14356 Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> ----------------------------------------------------------------------- Summary of changes: librpc/rpc/dcerpc_util.c | 37 +++++++++++++++++++++++++++++-------- python/samba/netcmd/__init__.py | 3 +++ 2 files changed, 32 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/librpc/rpc/dcerpc_util.c b/librpc/rpc/dcerpc_util.c index f7596cb1ac1..cf6cb942b1c 100644 --- a/librpc/rpc/dcerpc_util.c +++ b/librpc/rpc/dcerpc_util.c @@ -357,20 +357,41 @@ NTSTATUS dcerpc_pull_auth_trailer(const struct ncacn_packet *pkt, } if (data_and_pad < auth->auth_pad_length) { - DEBUG(1, (__location__ ": ERROR: pad length mismatch. " - "Calculated %u got %u\n", - (unsigned)data_and_pad, - (unsigned)auth->auth_pad_length)); + DBG_WARNING(__location__ ": ERROR: pad length too long. " + "Calculated %u (pkt_trailer->length=%u - auth_length=%u) " + "was less than auth_pad_length=%u\n", + (unsigned)data_and_pad, + (unsigned)pkt_trailer->length, + (unsigned)auth_length, + (unsigned)auth->auth_pad_length); + talloc_free(ndr); + ZERO_STRUCTP(auth); + return NT_STATUS_RPC_PROTOCOL_ERROR; + } + + if (auth_data_only && data_and_pad > auth->auth_pad_length) { + DBG_WARNING(__location__ ": ERROR: auth_data_only pad length mismatch. " + "Client sent a longer BIND packet than expected by %u bytes " + "(pkt_trailer->length=%u - auth_length=%u) " + "= %u auth_pad_length=%u\n", + (unsigned)data_and_pad - (unsigned)auth->auth_pad_length, + (unsigned)pkt_trailer->length, + (unsigned)auth_length, + (unsigned)data_and_pad, + (unsigned)auth->auth_pad_length); talloc_free(ndr); ZERO_STRUCTP(auth); return NT_STATUS_RPC_PROTOCOL_ERROR; } if (auth_data_only && data_and_pad != auth->auth_pad_length) { - DEBUG(1, (__location__ ": ERROR: pad length mismatch. " - "Calculated %u got %u\n", - (unsigned)data_and_pad, - (unsigned)auth->auth_pad_length)); + DBG_WARNING(__location__ ": ERROR: auth_data_only pad length mismatch. " + "Calculated %u (pkt_trailer->length=%u - auth_length=%u) " + "but auth_pad_length=%u\n", + (unsigned)data_and_pad, + (unsigned)pkt_trailer->length, + (unsigned)auth_length, + (unsigned)auth->auth_pad_length); talloc_free(ndr); ZERO_STRUCTP(auth); return NT_STATUS_RPC_PROTOCOL_ERROR; diff --git a/python/samba/netcmd/__init__.py b/python/samba/netcmd/__init__.py index 57df46343e9..620e3751e7f 100644 --- a/python/samba/netcmd/__init__.py +++ b/python/samba/netcmd/__init__.py @@ -234,6 +234,9 @@ class SuperCommand(Command): if subcommand in self.subcommands: return self.subcommands[subcommand]._run( "%s %s" % (myname, subcommand), *args) + elif subcommand not in [ '--help', 'help', None ]: + print("%s: no such subcommand: %s\n" % (myname, subcommand)) + args = [] if subcommand == 'help': # pass the request down -- Samba Shared Repository