mirror of
https://github.com/samba-team/samba.git
synced 2025-02-04 17:47:26 +03:00
Fix a bug and warn when configuration file values are incorrect. Thanks to
Wilco Baan Hofman <wilco@andoburg.nl> (This used to be commit 2c584efae69f328581d4f863a8f8ef3ff8228423)
This commit is contained in:
parent
bcf25cbcfc
commit
52e27c4a58
@ -156,7 +156,7 @@ static const char * config_value_write(pdb_mysql_data * data, const char *name,
|
||||
if (!v)
|
||||
return NULL;
|
||||
|
||||
swrite = strchr(v, ':');
|
||||
swrite = strrchr(v, ':');
|
||||
|
||||
/* Default to the same field as read field */
|
||||
if (!swrite)
|
||||
@ -182,7 +182,7 @@ static const char * config_value_read(pdb_mysql_data * data, const char *name, c
|
||||
if (!v)
|
||||
return "NULL";
|
||||
|
||||
swrite = strchr(v, ':');
|
||||
swrite = strrchr(v, ':');
|
||||
|
||||
/* If no write is specified, there are no problems */
|
||||
if (!swrite) {
|
||||
@ -241,14 +241,20 @@ static NTSTATUS row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u)
|
||||
pdb_set_unknown_str(u, row[16], PDB_SET);
|
||||
pdb_set_munged_dial(u, row[17], PDB_SET);
|
||||
|
||||
if(row[18])string_to_sid(&sid, row[18]);
|
||||
pdb_set_user_sid(u, &sid, PDB_SET);
|
||||
if(row[19])string_to_sid(&sid, row[19]);
|
||||
pdb_set_group_sid(u, &sid, PDB_SET);
|
||||
if(!row[18] || !string_to_sid(&sid, row[18])) {
|
||||
DEBUG(0,("No user SID retrieved from database!\n"));
|
||||
} else {
|
||||
pdb_set_user_sid(u, &sid, PDB_SET);
|
||||
}
|
||||
|
||||
if (pdb_gethexpwd(row[20], temp), PDB_SET)
|
||||
if(row[19]) {
|
||||
string_to_sid(&sid, row[19]);
|
||||
pdb_set_group_sid(u, &sid, PDB_SET);
|
||||
}
|
||||
|
||||
if (pdb_gethexpwd(row[20], temp))
|
||||
pdb_set_lanman_passwd(u, temp, PDB_SET);
|
||||
if (pdb_gethexpwd(row[21], temp), PDB_SET)
|
||||
if (pdb_gethexpwd(row[21], temp))
|
||||
pdb_set_nt_passwd(u, temp, PDB_SET);
|
||||
|
||||
/* Only use plaintext password storage when lanman and nt are
|
||||
@ -335,9 +341,9 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update)
|
||||
CONFIG_LOGON_DIVS_DEFAULT),
|
||||
config_value_read(data, "hours len column",
|
||||
CONFIG_HOURS_LEN_DEFAULT),
|
||||
config_value_read(data, "bad_password_count column",
|
||||
config_value_read(data, "bad password count column",
|
||||
CONFIG_BAD_PASSWORD_COUNT_DEFAULT),
|
||||
config_value_read(data, "logon_count column",
|
||||
config_value_read(data, "logon count column",
|
||||
CONFIG_LOGON_COUNT_DEFAULT),
|
||||
config_value_read(data, "unknown 6 column",
|
||||
CONFIG_UNKNOWN_6_DEFAULT),
|
||||
@ -651,6 +657,7 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods,
|
||||
const SAM_ACCOUNT * newpwd, char isupdate)
|
||||
{
|
||||
pstring temp;
|
||||
char *field;
|
||||
struct pdb_mysql_data *data;
|
||||
pdb_mysql_query query;
|
||||
fstring sid_str;
|
||||
@ -661,6 +668,7 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods,
|
||||
}
|
||||
|
||||
data = (struct pdb_mysql_data *) methods->private_data;
|
||||
|
||||
if (data == NULL || data->handle == NULL) {
|
||||
DEBUG(0, ("invalid handle!\n"));
|
||||
return NT_STATUS_INVALID_HANDLE;
|
||||
@ -878,6 +886,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
|
||||
{
|
||||
NTSTATUS nt_status;
|
||||
struct pdb_mysql_data *data;
|
||||
const char *sid_column, *username_column;
|
||||
|
||||
mysqlsam_debug_level = debug_add_class("mysqlsam");
|
||||
if (mysqlsam_debug_level == -1) {
|
||||
@ -886,6 +895,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
|
||||
("mysqlsam: Couldn't register custom debugging class!\n"));
|
||||
}
|
||||
|
||||
|
||||
if (!pdb_context) {
|
||||
DEBUG(0, ("invalid pdb_methods specified\n"));
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
@ -933,6 +943,14 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
|
||||
DEBUG(0, ("Failed to connect to server\n"));
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
sid_column = config_value_read(data, "user sid column", CONFIG_USER_SID_DEFAULT);
|
||||
username_column = config_value_read(data, "username column", CONFIG_USERNAME_DEFAULT);
|
||||
if(!strcmp(sid_column,"NULL") || !strcmp(username_column, "NULL")) {
|
||||
DEBUG(0,("Please specify both a valid 'user sid column' and a valid 'username column' in smb.conf\n"));
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
/* Process correct entry in $HOME/.my.conf */
|
||||
if (!mysql_real_connect(data->handle,
|
||||
config_value(data, "mysql host", CONFIG_HOST_DEFAULT),
|
||||
|
Loading…
x
Reference in New Issue
Block a user