Copyright (C) John H Terpstra 1996-2000
Copyright (C) Luke Kenneth Casson Leighton 1996-2000
Copyright (C) Paul Ashton 1998-2000
+ Copyright (C) Simo Sorce 2001-2002
Copyright (C) Martin Pool 2002
This program is free software; you can redistribute it and/or modify
-#ifndef _PSTRING
-
-#define PSTRING_LEN 1024
-#define FSTRING_LEN 256
-
-#ifdef PSTRING_SANCTIFY
-
-/* If you define this, pstring and fstring become distinguished types,
- * so that it's harder to accidentally overflow them by for example
- * passing an fstring on the lhs of pstrcpy.
- *
- * The types are defined as one-element union arrays so that with
- * "fstring f" the name "f" will be a pointer and with a big hammer
- * you can cast it to (char *). So code that tries to just use it
- * directly will get a loud warning, but hopefully nothing worse.
- *
- * To pass them to non-pstring-aware functions, use PSTR and check
- * that the function takes a const. They should almost never be
- * modified except by special calls. In those unusual cases, use
- * PSTR_MUTABLE.
- *
- * This is off by default so as not to produce too many warnings. As
- * the code is vetted it can become the default. */
-
-typedef union { char pstring_contents[PSTRING_LEN]; } pstring[1];
-typedef union { char fstring_contents[FSTRING_LEN]; } fstring[1];
-
-# define PSTR(p) ((const char *) ((p)->pstring_contents))
-# define FSTR(f) ((const char *) ((f)->fstring_contents))
-
-/* You should not normally use these. Instead, use pstrcpy, etc. */
-# define PSTR_MUTABLE(p) ((p)->pstring_contents)
-# define FSTR_MUTABLE(f) ((f)->fstring_contents)
-
-/* See also safe_string.h */
-
-#else /* ndef PSTRING_SANCTIFY */
-
-/* Old interface. */
-
-typedef char pstring[PSTRING_LEN];
-typedef char fstring[FSTRING_LEN];
-
-#define PSTR(p) (p)
-#define FSTR(f) (f)
-#define PSTR_MUTABLE(p) (p)
-#define FSTR_MUTABLE(f) (f)
-
-#endif /* ndef PSTRING_SANCTIFY */
-
-#define _PSTRING
-
-#endif /* ndef _PSTRING */
+#include "pstring.h"
typedef struct
{
- smb_ucs2_t *path;
- smb_ucs2_t *name;
- smb_ucs2_t *unixname;
- smb_ucs2_t *dosname;
+ smb_ucs2_t *origname;
+ smb_ucs2_t *filename;
SMB_STRUCT_STAT *statinfo;
} smb_filename;
typedef struct sam_passwd
{
- struct {
+ TALLOC_CTX *mem_ctx;
+
+ void (*free_fn)(struct sam_passwd **);
+
+ struct user_data {
/* initiailization flags */
uint32 init_flag;
time_t pass_can_change_time; /* password can change time */
time_t pass_must_change_time; /* password must change time */
- pstring username; /* UNIX username string */
- pstring domain; /* Windows Domain name */
- pstring nt_username; /* Windows username string */
- pstring full_name; /* user's full name string */
- pstring home_dir; /* home directory string */
- pstring dir_drive; /* home directory drive string */
- pstring logon_script; /* logon script string */
- pstring profile_path; /* profile path string */
- pstring acct_desc ; /* user description string */
- pstring workstations; /* login from workstations string */
- pstring unknown_str ; /* don't know what this is, yet. */
- pstring munged_dial ; /* munged path name and dial-back tel number */
+ char * username; /* UNIX username string */
+ char * domain; /* Windows Domain name */
+ char * nt_username; /* Windows username string */
+ char * full_name; /* user's full name string */
+ char * home_dir; /* home directory string */
+ char * dir_drive; /* home directory drive string */
+ char * logon_script; /* logon script string */
+ char * profile_path; /* profile path string */
+ char * acct_desc ; /* user description string */
+ char * workstations; /* login from workstations string */
+ char * unknown_str ; /* don't know what this is, yet. */
+ char * munged_dial ; /* munged path name and dial-back tel number */
uid_t uid; /* this is a unix uid_t */
gid_t gid; /* this is a unix gid_t */
gid_t gid; /* gid of a validated user */
userdom_struct user;
+ char *homedir;
+
BOOL guest;
/* following groups stuff added by ih */
NT_USER_TOKEN *nt_user_token;
+ uint8 session_key[16];
+
int session_id; /* used by utmp and pam session code */
} user_struct;
+struct unix_error_map {
+ int unix_error;
+ int dos_class;
+ int dos_code;
+ NTSTATUS nt_error;
+};
+
#include "ntdomain.h"
#include "client.h"