From cf629dc4957b6d1d49c841c62cf68549e955bd9a Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 19 Jan 2007 14:33:36 +0000 Subject: r20904: This is a placeholder fix. Apparently Windows 2000 is sharing the IDL for the SAMR pipe with Windows 2003 but returning NT_STATUS_NOT_SUPPORTED rather than a DCE/RCE fault. We need to catch this in the general sense by looking at the returned PDU size. But this immediate change fixes password changes via pam_winbind against Windows 2000 DCs. (This used to be commit a3602cc6d4926852a21b13d4b731419f70477f5c) --- source3/rpc_parse/parse_samr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'source3/rpc_parse') diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c index 4173b0169b..5b276d9870 100644 --- a/source3/rpc_parse/parse_samr.c +++ b/source3/rpc_parse/parse_samr.c @@ -6,7 +6,7 @@ * Copyright (C) Paul Ashton 1997-2000, * Copyright (C) Elrond 2000, * Copyright (C) Jeremy Allison 2001, - * Copyright (C) Jean François Micouleau 1998-2001, + * Copyright (C) Jean François Micouleau 1998-2001, * Copyright (C) Jim McDonough 2002. * * This program is free software; you can redistribute it and/or modify @@ -7780,6 +7780,14 @@ BOOL samr_io_r_chgpasswd_user3(const char *desc, SAMR_R_CHGPASSWD_USER3 *r_u, if (!prs_uint32("ptr_info", ps, depth, &r_u->ptr_info)) return False; + /* special case: Windows 2000 can return stub data here saying + NT_STATUS_NOT_SUPPORTED */ + + if ( NT_STATUS_EQUAL( NT_STATUS_NOT_SUPPORTED, NT_STATUS(r_u->ptr_info)) ) { + r_u->status = NT_STATUS_NOT_SUPPORTED; + return True; + } + if (r_u->ptr_info && r_u->info != NULL) { /* SAM_UNK_INFO_1 */ if (!sam_io_unk_info1("info", r_u->info, ps, depth)) -- cgit