[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Mon Dec 2 22:48:02 UTC 2019
The branch, master has been updated
via 1b583bff72c auth3: Remove auth_script
via a82ab4a7b3b s3: smbclient doc fix
via 77d3a98aa63 smbd: Fix a typo
via 4cd6c87a3d5 libndr: Fix a talloc context leak
via 8d8d2bdfa4f smbd: Avoid leaking share_entries.tdb records
via 18d7bb06983 smbd: Use share_mode_do_locked() in smbd_do_unlocking()
via 39f96183169 lib: Remove unused smb_xvasprintf()
via 6d1ce7dc172 winbind: Use vasprintf() in winbindd_cache
via 34c269ad02c lib: Remove a duplicate fdprintf() prototype
via 6ab4b87a7e6 lib: Remove duplicate get_pass() prototypes
via 7093356440d lib: Make stdin_new_passwd() static
from 27fc062d7ea heimdal-build: avoid hard-coded /usr/include/heimdal in asn1_compile-generated code.
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 1b583bff72cb47860abc5168cc96d9087df16604
Author: Volker Lendecke <vl at samba.org>
Date: Sun Dec 1 10:07:06 2019 +0100
auth3: Remove auth_script
Did this ever really work?
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Mon Dec 2 22:47:24 UTC 2019 on sn-devel-184
commit a82ab4a7b3baaafab91b3e8f0746de70b07c306d
Author: Puran Chand <pchand at vmware.com>
Date: Thu Oct 31 21:02:47 2019 +0530
s3: smbclient doc fix
Signed-off-by: Puran Chand <pchand at vmware.com>
Reviewed-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 77d3a98aa63f37a8ced01c65fdb9b05ca68c6281
Author: Volker Lendecke <vl at samba.org>
Date: Fri Nov 29 15:44:00 2019 +0100
smbd: Fix a typo
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 4cd6c87a3d54e37b86c03b5d4bc0c24386fdfffb
Author: Volker Lendecke <vl at samba.org>
Date: Fri Nov 29 14:00:51 2019 +0100
libndr: Fix a talloc context leak
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 8d8d2bdfa4f988bf5fdc9e05f7f3d1b4b6c54d0d
Author: Volker Lendecke <vl at samba.org>
Date: Fri Nov 29 21:30:39 2019 +0100
smbd: Avoid leaking share_entries.tdb records
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 18d7bb0698361900593bfe33c8655ba32a3671cd
Author: Volker Lendecke <vl at samba.org>
Date: Thu Nov 28 16:07:40 2019 +0100
smbd: Use share_mode_do_locked() in smbd_do_unlocking()
We don't really need the share mode data here
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 39f9618316946783bf7ceb5baf8667e139f3301c
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 27 19:02:43 2019 +0100
lib: Remove unused smb_xvasprintf()
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Martin Schwenke <martins at samba.org>
commit 6d1ce7dc1723e0c9f63b6b5ec08141f198049a56
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 27 19:00:26 2019 +0100
winbind: Use vasprintf() in winbindd_cache
Don't need to panic, we can do explicit checks in these few callers
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Martin Schwenke <martins at samba.org>
commit 34c269ad02cbb6fae0d9b9db43d6700d06de1842
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 27 18:55:53 2019 +0100
lib: Remove a duplicate fdprintf() prototype
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Martin Schwenke <martins at samba.org>
commit 6ab4b87a7e61d5af6e7980380c0f307bc310e5f0
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 27 08:36:59 2019 +0100
lib: Remove duplicate get_pass() prototypes
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Martin Schwenke <martins at samba.org>
commit 7093356440d0828f133fe652b090125af51cd01a
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 27 08:35:05 2019 +0100
lib: Make stdin_new_passwd() static
It's only used in one place
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Martin Schwenke <martins at samba.org>
-----------------------------------------------------------------------
Summary of changes:
librpc/ndr/ndr_basic.c | 5 +-
source3/auth/auth_script.c | 187 --------------------------------------
source3/auth/wscript_build | 7 --
source3/include/includes.h | 4 -
source3/include/libsmbclient.h | 4 +-
source3/include/proto.h | 5 -
source3/lib/util.c | 19 ----
source3/locking/share_mode_lock.c | 11 ++-
source3/smbd/reply.c | 84 +++++++++++------
source3/utils/net.c | 1 +
source3/utils/net_proto.h | 5 -
source3/utils/passwd_proto.h | 1 -
source3/utils/passwd_util.c | 3 +-
source3/utils/pdbedit.c | 1 +
source3/utils/smbpasswd.c | 1 +
source3/winbindd/winbindd_cache.c | 21 ++++-
source3/wscript | 2 +-
17 files changed, 93 insertions(+), 268 deletions(-)
delete mode 100644 source3/auth/auth_script.c
Changeset truncated at 500 lines:
diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c
index 0bce1322265..5c717e69858 100644
--- a/librpc/ndr/ndr_basic.c
+++ b/librpc/ndr/ndr_basic.c
@@ -1466,8 +1466,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_timespec(struct ndr_pull *ndr,
_PUBLIC_ void ndr_print_timespec(struct ndr_print *ndr, const char *name,
const struct timespec *t)
{
- ndr->print(ndr, "%-25s: %s.%ld", name, timestring(ndr, t->tv_sec),
- (long)t->tv_nsec);
+ char *str = timestring(ndr, t->tv_sec);
+ ndr->print(ndr, "%-25s: %s.%ld", name, str, t->tv_nsec);
+ TALLOC_FREE(str);
}
_PUBLIC_ enum ndr_err_code ndr_push_timeval(struct ndr_push *ndr,
diff --git a/source3/auth/auth_script.c b/source3/auth/auth_script.c
deleted file mode 100644
index fae55e98c24..00000000000
--- a/source3/auth/auth_script.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- Call out to a shell script for an authentication check.
-
- Copyright (C) Jeremy Allison 2005.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "auth.h"
-
-#undef malloc
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_AUTH
-
-/* Create a string containing the supplied :
- * domain\n
- * user\n
- * ascii hex challenge\n
- * ascii hex LM response\n
- * ascii hex NT response\n\0
- * and execute a shell script to check this.
- * Allows external programs to create users on demand.
- * Script returns zero on success, non-zero on fail.
- */
-
-static NTSTATUS script_check_user_credentials(const struct auth_context *auth_context,
- void *my_private_data,
- TALLOC_CTX *mem_ctx,
- const struct auth_usersupplied_info *user_info,
- struct auth_serversupplied_info **server_info)
-{
- const char *script = lp_parm_const_string( GLOBAL_SECTION_SNUM, "auth_script", "script", NULL);
- char *secret_str;
- size_t secret_str_len;
- char hex_str[49];
- int ret, i;
-
- if (!script) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!user_info) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!auth_context) {
- DEBUG(3,("script_check_user_credentials: no auth_info !\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- secret_str_len = strlen(user_info->mapped.domain_name) + 1 +
- strlen(user_info->client.account_name) + 1 +
- 16 + 1 + /* 8 bytes of challenge going to 16 */
- 48 + 1 + /* 24 bytes of challenge going to 48 */
- 48 + 1;
-
- secret_str = (char *)malloc(secret_str_len);
- if (!secret_str) {
- return NT_STATUS_NO_MEMORY;
- }
-
- if (strlcpy( secret_str, user_info->mapped.domain_name, secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
- if (strlcat( secret_str, "\n", secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
- if (strlcat( secret_str, user_info->client.account_name, secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
- if (strlcat( secret_str, "\n", secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
-
- for (i = 0; i < 8; i++) {
- slprintf(&hex_str[i*2], 3, "%02X", auth_context->challenge.data[i]);
- }
- if (strlcat( secret_str, hex_str, secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
- if (strlcat( secret_str, "\n", secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
-
- if (user_info->password.response.lanman.data) {
- for (i = 0; i < 24; i++) {
- slprintf(&hex_str[i*2], 3, "%02X", user_info->password.response.lanman.data[i]);
- }
- if (strlcat( secret_str, hex_str, secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
- }
- if (strlcat( secret_str, "\n", secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
-
- if (user_info->password.response.nt.data) {
- for (i = 0; i < 24; i++) {
- slprintf(&hex_str[i*2], 3, "%02X", user_info->password.response.nt.data[i]);
- }
- if (strlcat( secret_str, hex_str, secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
- }
- if (strlcat( secret_str, "\n", secret_str_len) >= secret_str_len) {
- /* Truncate. */
- goto cat_out;
- }
-
- DEBUG(10,("script_check_user_credentials: running %s with parameters:\n%s\n",
- script, secret_str ));
-
- ret = smbrunsecret( script, secret_str);
-
- SAFE_FREE(secret_str);
-
- if (ret) {
- DEBUG(1,("script_check_user_credentials: failed to authenticate %s\\%s\n",
- user_info->mapped.domain_name, user_info->client.account_name ));
- /* auth failed. */
- return NT_STATUS_NO_SUCH_USER;
- }
-
- /* Cause the auth system to keep going.... */
- return NT_STATUS_NOT_IMPLEMENTED;
-
- cat_out:
-
- SAFE_FREE(secret_str);
- return NT_STATUS_NO_MEMORY;
-}
-
-/* module initialisation */
-static NTSTATUS auth_init_script(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
-{
- struct auth_methods *result;
-
- result = talloc_zero(auth_context, struct auth_methods);
- if (result == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
- result->name = "script";
- result->auth = script_check_user_credentials;
-
- if (param && *param) {
- /* we load the 'fallback' module - if script isn't here, call this
- module */
- auth_methods *priv;
- if (!load_auth_module(auth_context, param, &priv)) {
- return NT_STATUS_UNSUCCESSFUL;
- }
- result->private_data = (void *)priv;
- }
-
- *auth_method = result;
- return NT_STATUS_OK;
-}
-
-NTSTATUS auth_script_init(TALLOC_CTX *);
-NTSTATUS auth_script_init(TALLOC_CTX *ctx)
-{
- return smb_register_auth(AUTH_INTERFACE_VERSION, "script", auth_init_script);
-}
diff --git a/source3/auth/wscript_build b/source3/auth/wscript_build
index c1062199aa8..277c4306557 100644
--- a/source3/auth/wscript_build
+++ b/source3/auth/wscript_build
@@ -53,13 +53,6 @@ bld.SAMBA3_MODULE('auth_builtin',
init_function='',
internal_module=True)
-bld.SAMBA3_MODULE('auth_script',
- subsystem='auth',
- source='auth_script.c',
- init_function='',
- internal_module=bld.SAMBA3_IS_STATIC_MODULE('auth_script'),
- enabled=bld.SAMBA3_IS_ENABLED_MODULE('auth_script'))
-
bld.SAMBA3_MODULE('auth_samba4',
subsystem='auth',
source='auth_samba4.c',
diff --git a/source3/include/includes.h b/source3/include/includes.h
index abe12ac0930..2dafc65f41a 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -339,8 +339,6 @@ typedef char fstring[FSTRING_LEN];
/* add varargs prototypes with printf checking */
-/*PRINTFLIKE2 */
-int fdprintf(int , const char *, ...) PRINTF_ATTRIBUTE(2,3);
/*PRINTFLIKE1 */
int d_printf(const char *, ...) PRINTF_ATTRIBUTE(1,2);
/*PRINTFLIKE2 */
@@ -349,8 +347,6 @@ int d_fprintf(FILE *f, const char *, ...) PRINTF_ATTRIBUTE(2,3);
/* PRINTFLIKE2 */
int fstr_sprintf(fstring s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
-int smb_xvasprintf(char **ptr, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0);
-
int asprintf_strupper_m(char **strp, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
diff --git a/source3/include/libsmbclient.h b/source3/include/libsmbclient.h
index 835c832b76a..5846550eb29 100644
--- a/source3/include/libsmbclient.h
+++ b/source3/include/libsmbclient.h
@@ -1647,7 +1647,7 @@ int smbc_getdents(unsigned int dh, struct smbc_dirent *dirp, int count);
struct smbc_dirent* smbc_readdir(unsigned int dh);
/**@ingroup directory
- * Works similar as smbc_readdir but returns more information about file.
+ * Works similar as smbc_readdir() but returns more information about file.
*
* @param dh Valid directory as returned by smbc_opendir()
*
@@ -1661,7 +1661,7 @@ struct smbc_dirent* smbc_readdir(unsigned int dh);
const struct libsmb_file_info *smbc_readdirplus(unsigned int dh);
/**@ingroup directory
- * Works similar as smbc_readdirplus as well as fills up stat structure if
+ * Works similar as smbc_readdirplus() as well as fills up stat structure if
* provided.
*
* @param dh Valid directory as returned by smbc_opendir()
diff --git a/source3/include/proto.h b/source3/include/proto.h
index ebb956c0d5e..7d81038c670 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -909,11 +909,6 @@ NTSTATUS sessionid_traverse_read(int (*fn)(const char *key,
void *private_data),
void *private_data);
-/* The following definitions come from utils/passwd_util.c */
-
-char *stdin_new_passwd( void);
-char *get_pass( const char *prompt, bool stdin_get);
-
/* The following definitions come from lib/avahi.c */
struct AvahiPoll *tevent_avahi_poll(TALLOC_CTX *mem_ctx,
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 9c8717172a6..e9a7368b290 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -1516,25 +1516,6 @@ void *smb_xmalloc_array(size_t size, unsigned int count)
return p;
}
-/*
- vasprintf that aborts on malloc fail
-*/
-
- int smb_xvasprintf(char **ptr, const char *format, va_list ap)
-{
- int n;
- va_list ap2;
-
- va_copy(ap2, ap);
-
- n = vasprintf(ptr, format, ap2);
- va_end(ap2);
- if (n == -1 || ! *ptr) {
- smb_panic("smb_xvasprintf: out of memory");
- }
- return n;
-}
-
/*****************************************************************
Get local hostname and cache result.
*****************************************************************/
diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c
index defa538b452..c42cafe17e4 100644
--- a/source3/locking/share_mode_lock.c
+++ b/source3/locking/share_mode_lock.c
@@ -1823,7 +1823,7 @@ bool share_mode_forall_entries(
state.ok = true;
}
if (!NT_STATUS_IS_OK(status)) {
- DBG_DEBUG("dbwrap_parse_record returned %s\n",
+ DBG_DEBUG("dbwrap_do_locked failed: %s\n",
nt_errstr(status));
return false;
}
@@ -1923,6 +1923,15 @@ static void share_mode_entry_do_fn(
state->num_share_modes -= 1;
}
+ if (state->num_share_modes == 0) {
+ state->status = dbwrap_record_delete(rec);
+ if (!NT_STATUS_IS_OK(state->status)) {
+ DBG_DEBUG("dbwrap_record_delete failed: %s\n",
+ nt_errstr(state->status));
+ }
+ return;
+ }
+
state->status = dbwrap_record_storev(rec, dbufs, num_dbufs, 0);
if (!NT_STATUS_IS_OK(state->status)) {
DBG_DEBUG("dbwrap_record_storev failed: %s\n",
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 386283f46c9..5c173539aad 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -8362,20 +8362,24 @@ uint64_t get_lock_offset(const uint8_t *data, int data_offset,
return offset;
}
-NTSTATUS smbd_do_unlocking(struct smb_request *req,
- files_struct *fsp,
- uint16_t num_ulocks,
- struct smbd_lock_element *ulocks,
- enum brl_flavour lock_flav)
+struct smbd_do_unlocking_state {
+ struct files_struct *fsp;
+ uint16_t num_ulocks;
+ struct smbd_lock_element *ulocks;
+ enum brl_flavour lock_flav;
+ NTSTATUS status;
+};
+
+static void smbd_do_unlocking_fn(
+ TDB_DATA value, bool *pmodified_dependent, void *private_data)
{
- struct share_mode_lock *lck;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
+ struct smbd_do_unlocking_state *state = private_data;
+ struct files_struct *fsp = state->fsp;
+ enum brl_flavour lock_flav = state->lock_flav;
uint16_t i;
- lck = get_existing_share_mode_lock(talloc_tos(), fsp->file_id);
-
- for(i = 0; i < num_ulocks; i++) {
- struct smbd_lock_element *e = &ulocks[i];
+ for (i = 0; i < state->num_ulocks; i++) {
+ struct smbd_lock_element *e = &state->ulocks[i];
DBG_DEBUG("unlock start=%"PRIu64", len=%"PRIu64" for "
"pid %"PRIu64", file %s\n",
@@ -8386,35 +8390,55 @@ NTSTATUS smbd_do_unlocking(struct smb_request *req,
if (e->brltype != UNLOCK_LOCK) {
/* this can only happen with SMB2 */
- status = NT_STATUS_INVALID_PARAMETER;
- goto done;
+ state->status = NT_STATUS_INVALID_PARAMETER;
+ return;
}
- status = do_unlock(
- fsp,
- e->smblctx,
- e->count,
- e->offset,
- lock_flav);
+ state->status = do_unlock(
+ fsp, e->smblctx, e->count, e->offset, lock_flav);
- DEBUG(10, ("%s: unlock returned %s\n", __func__,
- nt_errstr(status)));
+ DBG_DEBUG("do_unlock returned %s\n",
+ nt_errstr(state->status));
- if (!NT_STATUS_IS_OK(status)) {
- goto done;
+ if (!NT_STATUS_IS_OK(state->status)) {
+ return;
}
}
- DEBUG(3, ("%s: %s num_ulocks=%d\n", __func__, fsp_fnum_dbg(fsp),
- num_ulocks));
+ *pmodified_dependent = true;
+}
-done:
- if (NT_STATUS_IS_OK(status) && (lck != NULL)) {
- lck->data->modified = true;
+NTSTATUS smbd_do_unlocking(struct smb_request *req,
+ files_struct *fsp,
+ uint16_t num_ulocks,
+ struct smbd_lock_element *ulocks,
+ enum brl_flavour lock_flav)
+{
+ struct smbd_do_unlocking_state state = {
+ .fsp = fsp,
+ .num_ulocks = num_ulocks,
+ .ulocks = ulocks,
+ .lock_flav = lock_flav,
+ };
+ NTSTATUS status;
+
+ DBG_NOTICE("%s num_ulocks=%"PRIu16"\n", fsp_fnum_dbg(fsp), num_ulocks);
+
+ status = share_mode_do_locked(
+ fsp->file_id, smbd_do_unlocking_fn, &state);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ DBG_DEBUG("share_mode_do_locked failed: %s\n",
+ nt_errstr(status));
+ return status;
+ }
+ if (!NT_STATUS_IS_OK(state.status)) {
+ DBG_DEBUG("smbd_do_unlocking_fn failed: %s\n",
+ nt_errstr(status));
+ return state.status;
}
- TALLOC_FREE(lck);
- return status;
+ return NT_STATUS_OK;
}
/****************************************************************************
diff --git a/source3/utils/net.c b/source3/utils/net.c
index 71b9b07d7d7..683b46794e4 100644
--- a/source3/utils/net.c
+++ b/source3/utils/net.c
@@ -51,6 +51,7 @@
#include "cmdline_contexts.h"
#include "lib/gencache.h"
#include "auth/credentials/credentials.h"
+#include "source3/utils/passwd_proto.h"
#ifdef WITH_FAKE_KASERVER
#include "utils/net_afs.h"
diff --git a/source3/utils/net_proto.h b/source3/utils/net_proto.h
index 13058be8b8b..d5387f50e46 100644
--- a/source3/utils/net_proto.h
+++ b/source3/utils/net_proto.h
@@ -439,11 +439,6 @@ NTSTATUS net_lookup_name_from_sid(struct net_context *c,
NTSTATUS net_lookup_sid_from_name(struct net_context *c, TALLOC_CTX *ctx,
const char *full_name, struct dom_sid *pret_sid);
-/* The following definitions come from utils/passwd_util.c */
-
-char *stdin_new_passwd( void);
-char *get_pass( const char *prompt, bool stdin_get);
-
/* The following definitions come from utils/net_g_lock.c */
int net_g_lock(struct net_context *c, int argc, const char **argv);
diff --git a/source3/utils/passwd_proto.h b/source3/utils/passwd_proto.h
index 104e00a65c3..40998998ae7 100644
--- a/source3/utils/passwd_proto.h
+++ b/source3/utils/passwd_proto.h
@@ -26,7 +26,6 @@
/* The following definitions come from utils/passwd_util.c */
-char *stdin_new_passwd( void);
char *get_pass( const char *prompt, bool stdin_get);
--
Samba Shared Repository
More information about the samba-cvs
mailing list