From 6c13a46732f61b596273e2bd7ff3c78a4b953195 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 11 Jun 2012 13:29:10 +0200 Subject: [PATCH] s3-libsmbclient: Add OptionUseNTHash Signed-off-by: Stefan Metzmacher --- source3/include/libsmb_internal.h | 4 ++++ source3/include/libsmbclient.h | 8 ++++++++ source3/libsmb/libsmb_server.c | 4 ++++ source3/libsmb/libsmb_setget.c | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/source3/include/libsmb_internal.h b/source3/include/libsmb_internal.h index 92694f35c8d..aba159ada24 100644 --- a/source3/include/libsmb_internal.h +++ b/source3/include/libsmb_internal.h @@ -48,6 +48,10 @@ typedef struct DOS_ATTR_DESC { SMB_INO_T inode; } DOS_ATTR_DESC; +/* + * Extension of libsmbclient.h's #defines + */ +#define SMB_CTX_FLAG_USE_NT_HASH (1 << 4) /* * Internal flags for extended attributes diff --git a/source3/include/libsmbclient.h b/source3/include/libsmbclient.h index ccf80da72d0..61ff6a3b3bd 100644 --- a/source3/include/libsmbclient.h +++ b/source3/include/libsmbclient.h @@ -743,6 +743,14 @@ smbc_getOptionUseCCache(SMBCCTX *c); void smbc_setOptionUseCCache(SMBCCTX *c, smbc_bool b); +/** Get indication that the password supplied is the NT hash */ +smbc_bool +smbc_getOptionUseNTHash(SMBCCTX *c); + +/** Set indication that the password supplied is the NT hash */ +void +smbc_setOptionUseNTHash(SMBCCTX *c, smbc_bool b); + /************************************* diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c index 7ec3eb52108..99aa74c67b9 100644 --- a/source3/libsmb/libsmb_server.c +++ b/source3/libsmb/libsmb_server.c @@ -417,6 +417,10 @@ SMBC_server_internal(TALLOC_CTX *ctx, flags |= CLI_FULL_CONNECTION_USE_CCACHE; } + if (smbc_getOptionUseNTHash(context)) { + flags |= CLI_FULL_CONNECTION_USE_NT_HASH; + } + if (share == NULL || *share == '\0' || is_ipc) { /* * Try 139 first for IPC$ diff --git a/source3/libsmb/libsmb_setget.c b/source3/libsmb/libsmb_setget.c index 0a023467525..60bbc8bc5ef 100644 --- a/source3/libsmb/libsmb_setget.c +++ b/source3/libsmb/libsmb_setget.c @@ -457,6 +457,24 @@ smbc_setOptionUseCCache(SMBCCTX *c, smbc_bool b) } } +/** Get whether to enable use of the winbind ccache */ +smbc_bool +smbc_getOptionUseNTHash(SMBCCTX *c) +{ + return (c->flags & SMB_CTX_FLAG_USE_NT_HASH) != 0; +} + +/** Set indication that the password supplied is the NT hash */ +void +smbc_setOptionUseNTHash(SMBCCTX *c, smbc_bool b) +{ + if (b) { + c->flags |= SMB_CTX_FLAG_USE_NT_HASH; + } else { + c->flags &= ~SMB_CTX_FLAG_USE_NT_HASH; + } +} + /** Get the function for obtaining authentication data */ smbc_get_auth_data_fn smbc_getFunctionAuthData(SMBCCTX *c) -- 2.11.4.GIT