summaryrefslogtreecommitdiff
path: root/source4/auth/ntlmssp/ntlmssp_server.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-10-01 01:04:34 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:39:16 -0500
commit69c7cd98ce8d2e529ce764a37a3b9b2a9d1917f7 (patch)
treef2b17423f590eaf238deffadd2110d973867e5df /source4/auth/ntlmssp/ntlmssp_server.c
parent67762d7965d74e4534a9dcb06276786fa9a37713 (diff)
downloadsamba-69c7cd98ce8d2e529ce764a37a3b9b2a9d1917f7.tar.gz
samba-69c7cd98ce8d2e529ce764a37a3b9b2a9d1917f7.tar.bz2
samba-69c7cd98ce8d2e529ce764a37a3b9b2a9d1917f7.zip
r10669: reverted jelmers commit 10663 as it was causing lots of panics in 'make test'
I also think the method of getting rid of pstring isn't the right one. I certainly do want to get rid of pstring/fstring, but the reason for removing them is the use of arbitrary sized fixed length strings on the stack and in structures. Changing to another fixed length stack string format isn't really a win, and moving to use strncpy() is actually worse than pstrcpy() as strncpy() has the absolutely awful semantics of always zeroing all remaining bytes, so it ends up taking a lot of cpu doing pointless memory writes. I'd rather move to more use of asprintf()/talloc_asprintf() and similar functions for dynamic string allocation. You also have to be very careful about some of these system defined string limits. One some systems PATH_MAX could be 64k or even larger, which can quickly blow the stack out when you allocate a few of them. (This used to be commit 194efd26e42d621b239052ed1fec8da916bd2144)
Diffstat (limited to 'source4/auth/ntlmssp/ntlmssp_server.c')
-rw-r--r--source4/auth/ntlmssp/ntlmssp_server.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/source4/auth/ntlmssp/ntlmssp_server.c b/source4/auth/ntlmssp/ntlmssp_server.c
index c448402a55..9f106da37c 100644
--- a/source4/auth/ntlmssp/ntlmssp_server.c
+++ b/source4/auth/ntlmssp/ntlmssp_server.c
@@ -26,6 +26,7 @@
#include "auth/auth.h"
#include "auth/ntlmssp/ntlmssp.h"
#include "lib/crypto/crypto.h"
+#include "pstring.h"
#include "system/filesys.h"
/**
@@ -106,7 +107,7 @@ static const char *ntlmssp_target_name(struct gensec_ntlmssp_state *gensec_ntlms
*/
static BOOL get_myfullname(char *my_name)
{
- char hostname[HOST_NAME_MAX];
+ pstring hostname;
*hostname = 0;
@@ -120,13 +121,13 @@ static BOOL get_myfullname(char *my_name)
hostname[sizeof(hostname)-1] = '\0';
if (my_name)
- strncpy(my_name, hostname, sizeof(hostname));
+ fstrcpy(my_name, hostname);
return True;
}
static BOOL get_mydomname(char *my_domname)
{
- char hostname[HOST_NAME_MAX];
+ pstring hostname;
char *p;
/* arrgh! relies on full name in system */
@@ -149,7 +150,7 @@ static BOOL get_mydomname(char *my_domname)
p++;
if (my_domname)
- strncpy(my_domname, p, sizeof(hostname));
+ fstrcpy(my_domname, p);
return True;
}
@@ -172,7 +173,7 @@ NTSTATUS ntlmssp_server_negotiate(struct gensec_security *gensec_security,
{
struct gensec_ntlmssp_state *gensec_ntlmssp_state = gensec_security->private_data;
DATA_BLOB struct_blob;
- char dnsname[HOST_NAME_MAX], dnsdomname[HOST_NAME_MAX];
+ fstring dnsname, dnsdomname;
uint32_t neg_flags = 0;
uint32_t ntlmssp_command, chal_flags;
char *cliname=NULL, *domname=NULL;