diff options
author | Andrew Bartlett <abartlet@samba.org> | 2002-01-15 01:02:13 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2002-01-15 01:02:13 +0000 |
commit | dbee612f7150ee2921c37fa331b38b86d2d63937 (patch) | |
tree | 3877bad9cca5ed6d1473c0ed15eb430d91fbc428 /source3/include | |
parent | 22e7da0a3d7b71ac188d5093ff5f48a5eb6e6478 (diff) | |
download | samba-dbee612f7150ee2921c37fa331b38b86d2d63937.tar.gz samba-dbee612f7150ee2921c37fa331b38b86d2d63937.tar.bz2 samba-dbee612f7150ee2921c37fa331b38b86d2d63937.zip |
Change the passdb interface to use allocated strings.
These strings are allocated using talloc(), either using its own memory context
stored on the SAM_ACCOUNT or one supplied by the caller.
The pdb_init_sam() and pdb_free_sam() function have been modifed so that a call
to pdb_free_sam() will either clean up (remove hashes from memory) and destroy
the TALLOC_CTX or just clean up depending on who supplied it.
The pdb_init_sam and pdb_free_sam functions now also return an NTSTATUS, and I
have modified the 3 places that actually checked these returns.
The only nasty thing about this patch is the small measure needed to maintin
interface compatability - strings set to NULL are actually set to "".
This is becouse there are too many places in Samba that do strlen() on these
strings without checking if they are NULL pointers.
A supp patch will follow to set all strings to "" in pdb_default_sam().
Andrew Bartlett
(This used to be commit 144345b41d39a6f68d01f62b7aee64ca0d328085)
Diffstat (limited to 'source3/include')
-rw-r--r-- | source3/include/smb.h | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h index 4a9a6ccd3b..4c13f0e4a6 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -664,7 +664,11 @@ typedef struct { typedef struct sam_passwd { - struct { + TALLOC_CTX *mem_ctx; + + void (*free_fn)(struct sam_passwd **); + + struct user_data { /* initiailization flags */ uint32 init_flag; @@ -675,18 +679,18 @@ typedef struct sam_passwd 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 */ |