mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
r6635: Fix build of the various sql pdb backends after new talloc.
This commit is contained in:
parent
ca678b9690
commit
0a7eabd46d
@ -132,10 +132,10 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update, u
|
||||
return NT_STATUS_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
query = sql_account_query_select(data->location, update, SQL_SEARCH_NONE, NULL);
|
||||
query = sql_account_query_select(NULL, data->location, update, SQL_SEARCH_NONE, NULL);
|
||||
|
||||
ret = mysql_query(data->handle, query);
|
||||
SAFE_FREE(query);
|
||||
talloc_free(query);
|
||||
|
||||
if (ret) {
|
||||
DEBUG(0,
|
||||
@ -208,42 +208,45 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU
|
||||
int mysql_ret;
|
||||
struct pdb_mysql_data *data;
|
||||
char *tmp_sname;
|
||||
TALLOC_CTX *mem_ctx = talloc_init("mysqlsam_select_by_field");
|
||||
|
||||
SET_DATA(data, methods);
|
||||
|
||||
esc_sname = malloc(strlen(sname) * 2 + 1);
|
||||
esc_sname = talloc_array(mem_ctx, char, strlen(sname) * 2 + 1);
|
||||
if (!esc_sname) {
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
tmp_sname = smb_xstrdup(sname);
|
||||
tmp_sname = talloc_strdup(mem_ctx, sname);
|
||||
|
||||
/* Escape sname */
|
||||
mysql_real_escape_string(data->handle, esc_sname, tmp_sname,
|
||||
strlen(tmp_sname));
|
||||
|
||||
SAFE_FREE(tmp_sname);
|
||||
talloc_free(tmp_sname);
|
||||
|
||||
if (user == NULL) {
|
||||
DEBUG(0, ("pdb_getsampwnam: SAM_ACCOUNT is NULL.\n"));
|
||||
SAFE_FREE(esc_sname);
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
query = sql_account_query_select(data->location, True, field, esc_sname);
|
||||
query = sql_account_query_select(mem_ctx, data->location, True, field, esc_sname);
|
||||
|
||||
SAFE_FREE(esc_sname);
|
||||
talloc_free(esc_sname);
|
||||
|
||||
DEBUG(5, ("Executing query %s\n", query));
|
||||
|
||||
mysql_ret = mysql_query(data->handle, query);
|
||||
|
||||
SAFE_FREE(query);
|
||||
talloc_free(query);
|
||||
|
||||
if (mysql_ret) {
|
||||
DEBUG(0,
|
||||
("Error while executing MySQL query %s\n",
|
||||
mysql_error(data->handle)));
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
@ -251,11 +254,13 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU
|
||||
if (res == NULL) {
|
||||
DEBUG(0,
|
||||
("Error storing results: %s\n", mysql_error(data->handle)));
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
ret = row_to_sam_account(res, user);
|
||||
mysql_free_result(res);
|
||||
talloc_free(mem_ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -311,7 +316,7 @@ static NTSTATUS mysqlsam_delete_sam_account(struct pdb_methods *methods,
|
||||
int ret;
|
||||
struct pdb_mysql_data *data;
|
||||
char *tmp_sname;
|
||||
|
||||
TALLOC_CTX *mem_ctx;
|
||||
SET_DATA(data, methods);
|
||||
|
||||
if (!methods) {
|
||||
@ -330,36 +335,40 @@ static NTSTATUS mysqlsam_delete_sam_account(struct pdb_methods *methods,
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
mem_ctx = talloc_init("mysqlsam_delete_sam_account");
|
||||
|
||||
/* Escape sname */
|
||||
esc = malloc(strlen(sname) * 2 + 1);
|
||||
esc = talloc_array(mem_ctx, char, strlen(sname) * 2 + 1);
|
||||
if (!esc) {
|
||||
DEBUG(0, ("Can't allocate memory to store escaped name\n"));
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
tmp_sname = smb_xstrdup(sname);
|
||||
tmp_sname = talloc_strdup(mem_ctx, sname);
|
||||
|
||||
mysql_real_escape_string(data->handle, esc, tmp_sname,
|
||||
strlen(tmp_sname));
|
||||
|
||||
SAFE_FREE(tmp_sname);
|
||||
talloc_free(tmp_sname);
|
||||
|
||||
query = sql_account_query_delete(data->location, esc);
|
||||
query = sql_account_query_delete(mem_ctx, data->location, esc);
|
||||
|
||||
SAFE_FREE(esc);
|
||||
talloc_free(esc);
|
||||
|
||||
ret = mysql_query(data->handle, query);
|
||||
|
||||
SAFE_FREE(query);
|
||||
talloc_free(query);
|
||||
|
||||
if (ret) {
|
||||
DEBUG(0,
|
||||
("Error while executing query: %s\n",
|
||||
mysql_error(data->handle)));
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
DEBUG(5, ("User '%s' deleted\n", sname));
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
@ -381,16 +390,18 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods,
|
||||
return NT_STATUS_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
query = sql_account_query_update(data->location, newpwd, isupdate);
|
||||
query = sql_account_query_update(NULL, data->location, newpwd, isupdate);
|
||||
|
||||
/* Execute the query */
|
||||
if (mysql_query(data->handle, query)) {
|
||||
DEBUG(0,
|
||||
("Error executing %s, %s\n", query,
|
||||
mysql_error(data->handle)));
|
||||
talloc_free(query);
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
SAFE_FREE(query);
|
||||
|
||||
talloc_free(query);
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
@ -441,7 +452,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
|
||||
(*pdb_method)->update_sam_account = mysqlsam_update_sam_account;
|
||||
(*pdb_method)->delete_sam_account = mysqlsam_delete_sam_account;
|
||||
|
||||
data = talloc(pdb_context->mem_ctx, sizeof(struct pdb_mysql_data));
|
||||
data = talloc(pdb_context->mem_ctx, struct pdb_mysql_data);
|
||||
(*pdb_method)->private_data = data;
|
||||
data->handle = NULL;
|
||||
data->pwent = NULL;
|
||||
|
@ -131,7 +131,7 @@ static NTSTATUS pgsqlsam_setsampwent(struct pdb_methods *methods, BOOL update, u
|
||||
|
||||
SET_DATA( data, methods ) ;
|
||||
|
||||
query = sql_account_query_select(data->location, update, SQL_SEARCH_NONE, NULL);
|
||||
query = sql_account_query_select(NULL, data->location, update, SQL_SEARCH_NONE, NULL);
|
||||
|
||||
/* Do it */
|
||||
DEBUG( 5, ("Executing query %s\n", query) ) ;
|
||||
@ -155,7 +155,7 @@ static NTSTATUS pgsqlsam_setsampwent(struct pdb_methods *methods, BOOL update, u
|
||||
retval = NT_STATUS_OK ;
|
||||
}
|
||||
|
||||
SAFE_FREE(query);
|
||||
talloc_free(query);
|
||||
return retval ;
|
||||
}
|
||||
|
||||
@ -224,7 +224,7 @@ static NTSTATUS pgsqlsam_select_by_field ( struct pdb_methods *methods, SAM_ACCO
|
||||
DEBUG( 5, ("pgsqlsam_select_by_field: getting data where %d = %s(nonescaped)\n", field, sname) ) ;
|
||||
|
||||
/* Escape sname */
|
||||
esc = malloc(strlen(sname) * 2 + 1);
|
||||
esc = talloc_array(NULL, char, strlen(sname) * 2 + 1);
|
||||
if ( !esc )
|
||||
{
|
||||
DEBUG(0, ("Can't allocate memory to store escaped name\n"));
|
||||
@ -234,7 +234,7 @@ static NTSTATUS pgsqlsam_select_by_field ( struct pdb_methods *methods, SAM_ACCO
|
||||
//tmp_sname = smb_xstrdup(sname);
|
||||
PQescapeString( esc, sname, strlen(sname) ) ;
|
||||
|
||||
query = sql_account_query_select(data->location, True, field, esc);
|
||||
query = sql_account_query_select(NULL, data->location, True, field, esc);
|
||||
|
||||
/* Do it */
|
||||
DEBUG( 5, ("Executing query %s\n", query) ) ;
|
||||
@ -256,8 +256,8 @@ static NTSTATUS pgsqlsam_select_by_field ( struct pdb_methods *methods, SAM_ACCO
|
||||
retval = row_to_sam_account( result, 0, user ) ;
|
||||
}
|
||||
|
||||
SAFE_FREE( esc ) ;
|
||||
SAFE_FREE( query ) ;
|
||||
talloc_free( esc ) ;
|
||||
talloc_free( query ) ;
|
||||
|
||||
PQclear( result ) ;
|
||||
|
||||
@ -324,7 +324,7 @@ static NTSTATUS pgsqlsam_delete_sam_account( struct pdb_methods *methods, SAM_AC
|
||||
}
|
||||
|
||||
/* Escape sname */
|
||||
esc = malloc(strlen(sname) * 2 + 1);
|
||||
esc = talloc_array(NULL, char, strlen(sname) * 2 + 1);
|
||||
if ( !esc )
|
||||
{
|
||||
DEBUG(0, ("Can't allocate memory to store escaped name\n"));
|
||||
@ -333,7 +333,7 @@ static NTSTATUS pgsqlsam_delete_sam_account( struct pdb_methods *methods, SAM_AC
|
||||
|
||||
PQescapeString( esc, sname, strlen(sname) ) ;
|
||||
|
||||
query = sql_account_query_delete(data->location, esc);
|
||||
query = sql_account_query_delete(NULL, data->location, esc);
|
||||
|
||||
/* Do it */
|
||||
result = PQexec( data->handle, query ) ;
|
||||
@ -354,8 +354,8 @@ static NTSTATUS pgsqlsam_delete_sam_account( struct pdb_methods *methods, SAM_AC
|
||||
retval = NT_STATUS_OK ;
|
||||
}
|
||||
|
||||
SAFE_FREE( esc ) ;
|
||||
SAFE_FREE( query ) ;
|
||||
talloc_free( esc ) ;
|
||||
talloc_free( query ) ;
|
||||
|
||||
return retval ;
|
||||
}
|
||||
@ -380,7 +380,7 @@ static NTSTATUS pgsqlsam_replace_sam_account( struct pdb_methods *methods, const
|
||||
return NT_STATUS_INVALID_HANDLE ;
|
||||
}
|
||||
|
||||
query = sql_account_query_update(data->location, newpwd, isupdate);
|
||||
query = sql_account_query_update(NULL, data->location, newpwd, isupdate);
|
||||
|
||||
result = PQexec( data->handle, query ) ;
|
||||
|
||||
@ -396,7 +396,7 @@ static NTSTATUS pgsqlsam_replace_sam_account( struct pdb_methods *methods, const
|
||||
DEBUG( 0, ("Error executing %s, %s\n", query, PQresultErrorMessage( result ) ) ) ;
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
SAFE_FREE(query);
|
||||
talloc_free(query);
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
@ -438,7 +438,7 @@ static NTSTATUS pgsqlsam_init ( struct pdb_context *pdb_context, struct pdb_meth
|
||||
(*pdb_method)->update_sam_account = pgsqlsam_update_sam_account ;
|
||||
(*pdb_method)->delete_sam_account = pgsqlsam_delete_sam_account ;
|
||||
|
||||
data = talloc( pdb_context->mem_ctx, sizeof( struct pdb_pgsql_data ) ) ;
|
||||
data = talloc( pdb_context->mem_ctx, struct pdb_pgsql_data ) ;
|
||||
(*pdb_method)->private_data = data ;
|
||||
data->handle = NULL ;
|
||||
data->pwent = NULL ;
|
||||
|
@ -54,7 +54,6 @@
|
||||
|
||||
typedef struct pdb_sql_query {
|
||||
char update;
|
||||
TALLOC_CTX *mem_ctx;
|
||||
char *part1;
|
||||
char *part2;
|
||||
} pdb_sql_query;
|
||||
@ -66,19 +65,19 @@ static void pdb_sql_int_field(struct pdb_sql_query *q, const char *name, int val
|
||||
|
||||
if (q->update) {
|
||||
q->part1 =
|
||||
talloc_asprintf_append(q->mem_ctx, q->part1,
|
||||
talloc_asprintf_append(q->part1,
|
||||
"%s = %d,", name, value);
|
||||
} else {
|
||||
q->part1 =
|
||||
talloc_asprintf_append(q->mem_ctx, q->part1, "%s,", name);
|
||||
talloc_asprintf_append(q->part1, "%s,", name);
|
||||
q->part2 =
|
||||
talloc_asprintf_append(q->mem_ctx, q->part2, "%d,", value);
|
||||
talloc_asprintf_append(q->part2, "%d,", value);
|
||||
}
|
||||
}
|
||||
|
||||
char *sql_escape_string(const char *unesc)
|
||||
char *sql_escape_string(TALLOC_CTX *mem_ctx, const char *unesc)
|
||||
{
|
||||
char *esc = SMB_MALLOC(strlen(unesc) * 2 + 3);
|
||||
char *esc = talloc_array(mem_ctx, char, strlen(unesc) * 2 + 3);
|
||||
size_t pos_unesc = 0, pos_esc = 0;
|
||||
|
||||
for(pos_unesc = 0; unesc[pos_unesc]; pos_unesc++) {
|
||||
@ -106,21 +105,21 @@ static NTSTATUS pdb_sql_string_field(struct pdb_sql_query *q,
|
||||
if (!name || !value || !strcmp(value, "") || strchr(name, '\''))
|
||||
return NT_STATUS_INVALID_PARAMETER; /* This field shouldn't be set by module */
|
||||
|
||||
esc_value = sql_escape_string(value);
|
||||
esc_value = sql_escape_string(q, value);
|
||||
|
||||
if (q->update) {
|
||||
q->part1 =
|
||||
talloc_asprintf_append(q->mem_ctx, q->part1,
|
||||
talloc_asprintf_append(q->part1,
|
||||
"%s = '%s',", name, esc_value);
|
||||
} else {
|
||||
q->part1 =
|
||||
talloc_asprintf_append(q->mem_ctx, q->part1, "%s,", name);
|
||||
talloc_asprintf_append(q->part1, "%s,", name);
|
||||
q->part2 =
|
||||
talloc_asprintf_append(q->mem_ctx, q->part2, "'%s',",
|
||||
talloc_asprintf_append(q->part2, "'%s',",
|
||||
esc_value);
|
||||
}
|
||||
|
||||
SAFE_FREE(esc_value);
|
||||
talloc_free(esc_value);
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
@ -187,7 +186,7 @@ static const char * config_value_read(const char *location, const char *name, co
|
||||
return (const char *)v;
|
||||
}
|
||||
|
||||
char *sql_account_query_select(const char *data, BOOL update, enum sql_search_field field, const char *value)
|
||||
char *sql_account_query_select(TALLOC_CTX *mem_ctx, const char *data, BOOL update, enum sql_search_field field, const char *value)
|
||||
{
|
||||
const char *field_string;
|
||||
char *query;
|
||||
@ -212,7 +211,7 @@ char *sql_account_query_select(const char *data, BOOL update, enum sql_search_fi
|
||||
break;
|
||||
}
|
||||
|
||||
asprintf(&query,
|
||||
query = talloc_asprintf(mem_ctx,
|
||||
"SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s WHERE %s = '%s'",
|
||||
config_value_read(data, "logon time column",
|
||||
CONFIG_LOGON_TIME_DEFAULT),
|
||||
@ -278,52 +277,52 @@ char *sql_account_query_select(const char *data, BOOL update, enum sql_search_fi
|
||||
return query;
|
||||
}
|
||||
|
||||
char *sql_account_query_delete(const char *data, const char *esc)
|
||||
char *sql_account_query_delete(TALLOC_CTX *mem_ctx, const char *data, const char *esc)
|
||||
{
|
||||
char *query;
|
||||
|
||||
asprintf(&query, "DELETE FROM %s WHERE %s = '%s'",
|
||||
query = talloc_asprintf(mem_ctx, "DELETE FROM %s WHERE %s = '%s'",
|
||||
config_value(data, "table", CONFIG_TABLE_DEFAULT),
|
||||
config_value_read(data, "username column",
|
||||
CONFIG_USERNAME_DEFAULT), esc);
|
||||
return query;
|
||||
}
|
||||
|
||||
char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd, char isupdate)
|
||||
char *sql_account_query_update(TALLOC_CTX *mem_ctx, const char *location, const SAM_ACCOUNT *newpwd, char isupdate)
|
||||
{
|
||||
char *ret;
|
||||
pstring temp;
|
||||
pdb_sql_query query;
|
||||
fstring sid_str;
|
||||
pdb_sql_query *query;
|
||||
|
||||
query.update = isupdate;
|
||||
query = talloc(mem_ctx, pdb_sql_query);
|
||||
query->update = isupdate;
|
||||
|
||||
/* I know this is somewhat overkill but only the talloc
|
||||
* functions have asprint_append and the 'normal' asprintf
|
||||
* is a GNU extension */
|
||||
query.mem_ctx = talloc_init("sql_query_update");
|
||||
query.part2 = talloc_asprintf(query.mem_ctx, "%s", "");
|
||||
if (query.update) {
|
||||
query.part1 =
|
||||
talloc_asprintf(query.mem_ctx, "UPDATE %s SET ",
|
||||
query->part2 = talloc_asprintf(query, "%s", "");
|
||||
if (query->update) {
|
||||
query->part1 =
|
||||
talloc_asprintf(query, "UPDATE %s SET ",
|
||||
config_value(location, "table",
|
||||
CONFIG_TABLE_DEFAULT));
|
||||
} else {
|
||||
query.part1 =
|
||||
talloc_asprintf(query.mem_ctx, "INSERT INTO %s (",
|
||||
query->part1 =
|
||||
talloc_asprintf(query, "INSERT INTO %s (",
|
||||
config_value(location, "table",
|
||||
CONFIG_TABLE_DEFAULT));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_ACCTCTRL)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location, "acct ctrl column",
|
||||
CONFIG_ACCT_CTRL_DEFAULT),
|
||||
pdb_get_acct_ctrl(newpwd));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_LOGONTIME)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"logon time column",
|
||||
CONFIG_LOGON_TIME_DEFAULT),
|
||||
@ -331,7 +330,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_LOGOFFTIME)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"logoff time column",
|
||||
CONFIG_LOGOFF_TIME_DEFAULT),
|
||||
@ -339,7 +338,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_KICKOFFTIME)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"kickoff time column",
|
||||
CONFIG_KICKOFF_TIME_DEFAULT),
|
||||
@ -347,7 +346,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_CANCHANGETIME)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"pass can change time column",
|
||||
CONFIG_PASS_CAN_CHANGE_TIME_DEFAULT),
|
||||
@ -355,7 +354,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_MUSTCHANGETIME)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"pass must change time column",
|
||||
CONFIG_PASS_MUST_CHANGE_TIME_DEFAULT),
|
||||
@ -363,7 +362,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_PASSLASTSET)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"pass last set time column",
|
||||
CONFIG_PASS_LAST_SET_TIME_DEFAULT),
|
||||
@ -371,7 +370,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_HOURSLEN)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"hours len column",
|
||||
CONFIG_HOURS_LEN_DEFAULT),
|
||||
@ -379,7 +378,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_LOGONDIVS)) {
|
||||
pdb_sql_int_field(&query,
|
||||
pdb_sql_int_field(query,
|
||||
config_value_write(location,
|
||||
"logon divs column",
|
||||
CONFIG_LOGON_DIVS_DEFAULT),
|
||||
@ -387,7 +386,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_USERSID)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "user sid column",
|
||||
CONFIG_USER_SID_DEFAULT),
|
||||
sid_to_string(sid_str,
|
||||
@ -395,7 +394,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_GROUPSID)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "group sid column",
|
||||
CONFIG_GROUP_SID_DEFAULT),
|
||||
sid_to_string(sid_str,
|
||||
@ -403,21 +402,21 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_USERNAME)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "username column",
|
||||
CONFIG_USERNAME_DEFAULT),
|
||||
pdb_get_username(newpwd));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_DOMAIN)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "domain column",
|
||||
CONFIG_DOMAIN_DEFAULT),
|
||||
pdb_get_domain(newpwd));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_USERNAME)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location,
|
||||
"nt username column",
|
||||
CONFIG_NT_USERNAME_DEFAULT),
|
||||
@ -425,14 +424,14 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_FULLNAME)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "fullname column",
|
||||
CONFIG_FULLNAME_DEFAULT),
|
||||
pdb_get_fullname(newpwd));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_LOGONSCRIPT)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location,
|
||||
"logon script column",
|
||||
CONFIG_LOGON_SCRIPT_DEFAULT),
|
||||
@ -440,7 +439,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_PROFILE)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location,
|
||||
"profile path column",
|
||||
CONFIG_PROFILE_PATH_DEFAULT),
|
||||
@ -448,21 +447,21 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_DRIVE)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "dir drive column",
|
||||
CONFIG_DIR_DRIVE_DEFAULT),
|
||||
pdb_get_dir_drive(newpwd));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_SMBHOME)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "home dir column",
|
||||
CONFIG_HOME_DIR_DEFAULT),
|
||||
pdb_get_homedir(newpwd));
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_WORKSTATIONS)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location,
|
||||
"workstations column",
|
||||
CONFIG_WORKSTATIONS_DEFAULT),
|
||||
@ -470,7 +469,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
}
|
||||
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_UNKNOWNSTR)) {
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location,
|
||||
"unknown string column",
|
||||
CONFIG_UNKNOWN_STR_DEFAULT),
|
||||
@ -480,7 +479,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_LMPASSWD)) {
|
||||
pdb_sethexpwd(temp, pdb_get_lanman_passwd(newpwd),
|
||||
pdb_get_acct_ctrl(newpwd));
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location,
|
||||
"lanman pass column",
|
||||
CONFIG_LM_PW_DEFAULT), temp);
|
||||
@ -489,30 +488,30 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
|
||||
if (IS_SAM_CHANGED(newpwd, PDB_NTPASSWD)) {
|
||||
pdb_sethexpwd(temp, pdb_get_nt_passwd(newpwd),
|
||||
pdb_get_acct_ctrl(newpwd));
|
||||
pdb_sql_string_field(&query,
|
||||
pdb_sql_string_field(query,
|
||||
config_value_write(location, "nt pass column",
|
||||
CONFIG_NT_PW_DEFAULT), temp);
|
||||
}
|
||||
|
||||
if (query.update) {
|
||||
query.part1[strlen(query.part1) - 1] = '\0';
|
||||
query.part1 =
|
||||
talloc_asprintf_append(query.mem_ctx, query.part1,
|
||||
if (query->update) {
|
||||
query->part1[strlen(query->part1) - 1] = '\0';
|
||||
query->part1 =
|
||||
talloc_asprintf_append(query->part1,
|
||||
" WHERE %s = '%s'",
|
||||
config_value_read(location,
|
||||
"user sid column",
|
||||
CONFIG_USER_SID_DEFAULT),
|
||||
sid_to_string(sid_str, pdb_get_user_sid (newpwd)));
|
||||
} else {
|
||||
query.part2[strlen(query.part2) - 1] = ')';
|
||||
query.part1[strlen(query.part1) - 1] = ')';
|
||||
query.part1 =
|
||||
talloc_asprintf_append(query.mem_ctx, query.part1,
|
||||
" VALUES (%s", query.part2);
|
||||
query->part2[strlen(query->part2) - 1] = ')';
|
||||
query->part1[strlen(query->part1) - 1] = ')';
|
||||
query->part1 =
|
||||
talloc_asprintf_append(query->part1,
|
||||
" VALUES (%s", query->part2);
|
||||
}
|
||||
|
||||
ret = SMB_STRDUP(query.part1);
|
||||
talloc_destroy(query.mem_ctx);
|
||||
ret = talloc_strdup(mem_ctx, query->part1);
|
||||
talloc_free(query);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user