mirror of
https://github.com/samba-team/samba.git
synced 2024-12-31 17:18:04 +03:00
a0ba234cf9
one horrible cut / paste job from smbd, plus a code split of shared
components between the two.
the job is not _yet_ complete, as i need to be able to do a become_user()
call for security reasons. i picked lsarpcd first because you don't
_need_ security on it (microsoft botched so badly on this one, it's not
real. at least they fixed this in nt5 with restrictanonymous=0x2).
fixing this involves sending the current smb and unix credentials down
the unix pipe so that the daemon it eventually goes to can pick them
up at the other end.
i can't believe this all worked!!!
(This used to be commit 2245b0c6d1
)
62 lines
2.0 KiB
C
62 lines
2.0 KiB
C
/*
|
|
Unix SMB/Netbios implementation.
|
|
Version 1.9.
|
|
Password and authentication handling
|
|
Copyright (C) Andrew Tridgell 1992-1998
|
|
|
|
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 2 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, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#include "includes.h"
|
|
|
|
extern int DEBUGLEVEL;
|
|
|
|
/* Data to do lanman1/2 password challenge. */
|
|
static unsigned char saved_challenge[8];
|
|
static BOOL challenge_sent=False;
|
|
|
|
/*******************************************************************
|
|
Get the next challenge value - no repeats.
|
|
********************************************************************/
|
|
void generate_next_challenge(char *challenge)
|
|
{
|
|
unsigned char buf[8];
|
|
generate_random_buffer(buf,8,False);
|
|
memcpy(saved_challenge, buf, 8);
|
|
memcpy(challenge,buf,8);
|
|
challenge_sent = True;
|
|
}
|
|
|
|
/*******************************************************************
|
|
set the last challenge sent, usually from a password server
|
|
********************************************************************/
|
|
BOOL set_challenge(unsigned char *challenge)
|
|
{
|
|
memcpy(saved_challenge,challenge,8);
|
|
challenge_sent = True;
|
|
return(True);
|
|
}
|
|
|
|
/*******************************************************************
|
|
get the last challenge sent
|
|
********************************************************************/
|
|
BOOL last_challenge(unsigned char *challenge)
|
|
{
|
|
if (!challenge_sent) return False;
|
|
memcpy(challenge,saved_challenge,8);
|
|
return(True);
|
|
}
|
|
|