1
0
mirror of https://github.com/samba-team/samba.git synced 2025-09-20 17:44:21 +03:00

r6635: Fix build of the various sql pdb backends after new talloc.

This commit is contained in:
Jelmer Vernooij
2005-05-06 16:21:20 +00:00
committed by Gerald (Jerry) Carter
parent ca678b9690
commit 0a7eabd46d
3 changed files with 101 additions and 91 deletions

View File

@@ -132,10 +132,10 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update, u
return NT_STATUS_INVALID_HANDLE; 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); ret = mysql_query(data->handle, query);
SAFE_FREE(query); talloc_free(query);
if (ret) { if (ret) {
DEBUG(0, DEBUG(0,
@@ -208,42 +208,45 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU
int mysql_ret; int mysql_ret;
struct pdb_mysql_data *data; struct pdb_mysql_data *data;
char *tmp_sname; char *tmp_sname;
TALLOC_CTX *mem_ctx = talloc_init("mysqlsam_select_by_field");
SET_DATA(data, methods); 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) { if (!esc_sname) {
talloc_free(mem_ctx);
return NT_STATUS_NO_MEMORY; return NT_STATUS_NO_MEMORY;
} }
tmp_sname = smb_xstrdup(sname); tmp_sname = talloc_strdup(mem_ctx, sname);
/* Escape sname */ /* Escape sname */
mysql_real_escape_string(data->handle, esc_sname, tmp_sname, mysql_real_escape_string(data->handle, esc_sname, tmp_sname,
strlen(tmp_sname)); strlen(tmp_sname));
SAFE_FREE(tmp_sname); talloc_free(tmp_sname);
if (user == NULL) { if (user == NULL) {
DEBUG(0, ("pdb_getsampwnam: SAM_ACCOUNT is NULL.\n")); DEBUG(0, ("pdb_getsampwnam: SAM_ACCOUNT is NULL.\n"));
SAFE_FREE(esc_sname); talloc_free(mem_ctx);
return NT_STATUS_INVALID_PARAMETER; 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)); DEBUG(5, ("Executing query %s\n", query));
mysql_ret = mysql_query(data->handle, query); mysql_ret = mysql_query(data->handle, query);
SAFE_FREE(query); talloc_free(query);
if (mysql_ret) { if (mysql_ret) {
DEBUG(0, DEBUG(0,
("Error while executing MySQL query %s\n", ("Error while executing MySQL query %s\n",
mysql_error(data->handle))); mysql_error(data->handle)));
talloc_free(mem_ctx);
return NT_STATUS_UNSUCCESSFUL; return NT_STATUS_UNSUCCESSFUL;
} }
@@ -251,11 +254,13 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU
if (res == NULL) { if (res == NULL) {
DEBUG(0, DEBUG(0,
("Error storing results: %s\n", mysql_error(data->handle))); ("Error storing results: %s\n", mysql_error(data->handle)));
talloc_free(mem_ctx);
return NT_STATUS_UNSUCCESSFUL; return NT_STATUS_UNSUCCESSFUL;
} }
ret = row_to_sam_account(res, user); ret = row_to_sam_account(res, user);
mysql_free_result(res); mysql_free_result(res);
talloc_free(mem_ctx);
return ret; return ret;
} }
@@ -311,7 +316,7 @@ static NTSTATUS mysqlsam_delete_sam_account(struct pdb_methods *methods,
int ret; int ret;
struct pdb_mysql_data *data; struct pdb_mysql_data *data;
char *tmp_sname; char *tmp_sname;
TALLOC_CTX *mem_ctx;
SET_DATA(data, methods); SET_DATA(data, methods);
if (!methods) { if (!methods) {
@@ -330,36 +335,40 @@ static NTSTATUS mysqlsam_delete_sam_account(struct pdb_methods *methods,
return NT_STATUS_INVALID_PARAMETER; return NT_STATUS_INVALID_PARAMETER;
} }
mem_ctx = talloc_init("mysqlsam_delete_sam_account");
/* Escape sname */ /* Escape sname */
esc = malloc(strlen(sname) * 2 + 1); esc = talloc_array(mem_ctx, char, strlen(sname) * 2 + 1);
if (!esc) { if (!esc) {
DEBUG(0, ("Can't allocate memory to store escaped name\n")); DEBUG(0, ("Can't allocate memory to store escaped name\n"));
return NT_STATUS_NO_MEMORY; 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, mysql_real_escape_string(data->handle, esc, tmp_sname,
strlen(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); ret = mysql_query(data->handle, query);
SAFE_FREE(query); talloc_free(query);
if (ret) { if (ret) {
DEBUG(0, DEBUG(0,
("Error while executing query: %s\n", ("Error while executing query: %s\n",
mysql_error(data->handle))); mysql_error(data->handle)));
talloc_free(mem_ctx);
return NT_STATUS_UNSUCCESSFUL; return NT_STATUS_UNSUCCESSFUL;
} }
DEBUG(5, ("User '%s' deleted\n", sname)); DEBUG(5, ("User '%s' deleted\n", sname));
talloc_free(mem_ctx);
return NT_STATUS_OK; return NT_STATUS_OK;
} }
@@ -381,16 +390,18 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods,
return NT_STATUS_INVALID_HANDLE; 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 */ /* Execute the query */
if (mysql_query(data->handle, query)) { if (mysql_query(data->handle, query)) {
DEBUG(0, DEBUG(0,
("Error executing %s, %s\n", query, ("Error executing %s, %s\n", query,
mysql_error(data->handle))); mysql_error(data->handle)));
talloc_free(query);
return NT_STATUS_INVALID_PARAMETER; return NT_STATUS_INVALID_PARAMETER;
} }
SAFE_FREE(query);
talloc_free(query);
return NT_STATUS_OK; 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)->update_sam_account = mysqlsam_update_sam_account;
(*pdb_method)->delete_sam_account = mysqlsam_delete_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; (*pdb_method)->private_data = data;
data->handle = NULL; data->handle = NULL;
data->pwent = NULL; data->pwent = NULL;

View File

@@ -131,7 +131,7 @@ static NTSTATUS pgsqlsam_setsampwent(struct pdb_methods *methods, BOOL update, u
SET_DATA( data, methods ) ; 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 */ /* Do it */
DEBUG( 5, ("Executing query %s\n", query) ) ; 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 ; retval = NT_STATUS_OK ;
} }
SAFE_FREE(query); talloc_free(query);
return retval ; 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) ) ; DEBUG( 5, ("pgsqlsam_select_by_field: getting data where %d = %s(nonescaped)\n", field, sname) ) ;
/* Escape sname */ /* Escape sname */
esc = malloc(strlen(sname) * 2 + 1); esc = talloc_array(NULL, char, strlen(sname) * 2 + 1);
if ( !esc ) if ( !esc )
{ {
DEBUG(0, ("Can't allocate memory to store escaped name\n")); 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); //tmp_sname = smb_xstrdup(sname);
PQescapeString( esc, sname, strlen(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 */ /* Do it */
DEBUG( 5, ("Executing query %s\n", query) ) ; 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 ) ; retval = row_to_sam_account( result, 0, user ) ;
} }
SAFE_FREE( esc ) ; talloc_free( esc ) ;
SAFE_FREE( query ) ; talloc_free( query ) ;
PQclear( result ) ; PQclear( result ) ;
@@ -324,7 +324,7 @@ static NTSTATUS pgsqlsam_delete_sam_account( struct pdb_methods *methods, SAM_AC
} }
/* Escape sname */ /* Escape sname */
esc = malloc(strlen(sname) * 2 + 1); esc = talloc_array(NULL, char, strlen(sname) * 2 + 1);
if ( !esc ) if ( !esc )
{ {
DEBUG(0, ("Can't allocate memory to store escaped name\n")); 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) ) ; PQescapeString( esc, sname, strlen(sname) ) ;
query = sql_account_query_delete(data->location, esc); query = sql_account_query_delete(NULL, data->location, esc);
/* Do it */ /* Do it */
result = PQexec( data->handle, query ) ; 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 ; retval = NT_STATUS_OK ;
} }
SAFE_FREE( esc ) ; talloc_free( esc ) ;
SAFE_FREE( query ) ; talloc_free( query ) ;
return retval ; return retval ;
} }
@@ -380,7 +380,7 @@ static NTSTATUS pgsqlsam_replace_sam_account( struct pdb_methods *methods, const
return NT_STATUS_INVALID_HANDLE ; 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 ) ; 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 ) ) ) ; DEBUG( 0, ("Error executing %s, %s\n", query, PQresultErrorMessage( result ) ) ) ;
return NT_STATUS_INVALID_PARAMETER; return NT_STATUS_INVALID_PARAMETER;
} }
SAFE_FREE(query); talloc_free(query);
return NT_STATUS_OK; 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)->update_sam_account = pgsqlsam_update_sam_account ;
(*pdb_method)->delete_sam_account = pgsqlsam_delete_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 ; (*pdb_method)->private_data = data ;
data->handle = NULL ; data->handle = NULL ;
data->pwent = NULL ; data->pwent = NULL ;

View File

@@ -54,7 +54,6 @@
typedef struct pdb_sql_query { typedef struct pdb_sql_query {
char update; char update;
TALLOC_CTX *mem_ctx;
char *part1; char *part1;
char *part2; char *part2;
} pdb_sql_query; } 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) { if (q->update) {
q->part1 = q->part1 =
talloc_asprintf_append(q->mem_ctx, q->part1, talloc_asprintf_append(q->part1,
"%s = %d,", name, value); "%s = %d,", name, value);
} else { } else {
q->part1 = q->part1 =
talloc_asprintf_append(q->mem_ctx, q->part1, "%s,", name); talloc_asprintf_append(q->part1, "%s,", name);
q->part2 = 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; size_t pos_unesc = 0, pos_esc = 0;
for(pos_unesc = 0; unesc[pos_unesc]; pos_unesc++) { 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, '\'')) if (!name || !value || !strcmp(value, "") || strchr(name, '\''))
return NT_STATUS_INVALID_PARAMETER; /* This field shouldn't be set by module */ 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) { if (q->update) {
q->part1 = q->part1 =
talloc_asprintf_append(q->mem_ctx, q->part1, talloc_asprintf_append(q->part1,
"%s = '%s',", name, esc_value); "%s = '%s',", name, esc_value);
} else { } else {
q->part1 = q->part1 =
talloc_asprintf_append(q->mem_ctx, q->part1, "%s,", name); talloc_asprintf_append(q->part1, "%s,", name);
q->part2 = q->part2 =
talloc_asprintf_append(q->mem_ctx, q->part2, "'%s',", talloc_asprintf_append(q->part2, "'%s',",
esc_value); esc_value);
} }
SAFE_FREE(esc_value); talloc_free(esc_value);
return NT_STATUS_OK; 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; 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; const char *field_string;
char *query; char *query;
@@ -212,7 +211,7 @@ char *sql_account_query_select(const char *data, BOOL update, enum sql_search_fi
break; 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'", "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_value_read(data, "logon time column",
CONFIG_LOGON_TIME_DEFAULT), CONFIG_LOGON_TIME_DEFAULT),
@@ -278,52 +277,52 @@ char *sql_account_query_select(const char *data, BOOL update, enum sql_search_fi
return query; 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; 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(data, "table", CONFIG_TABLE_DEFAULT),
config_value_read(data, "username column", config_value_read(data, "username column",
CONFIG_USERNAME_DEFAULT), esc); CONFIG_USERNAME_DEFAULT), esc);
return query; 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; char *ret;
pstring temp; pstring temp;
pdb_sql_query query;
fstring sid_str; 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 /* I know this is somewhat overkill but only the talloc
* functions have asprint_append and the 'normal' asprintf * functions have asprint_append and the 'normal' asprintf
* is a GNU extension */ * is a GNU extension */
query.mem_ctx = talloc_init("sql_query_update"); query->part2 = talloc_asprintf(query, "%s", "");
query.part2 = talloc_asprintf(query.mem_ctx, "%s", ""); if (query->update) {
if (query.update) { query->part1 =
query.part1 = talloc_asprintf(query, "UPDATE %s SET ",
talloc_asprintf(query.mem_ctx, "UPDATE %s SET ",
config_value(location, "table", config_value(location, "table",
CONFIG_TABLE_DEFAULT)); CONFIG_TABLE_DEFAULT));
} else { } else {
query.part1 = query->part1 =
talloc_asprintf(query.mem_ctx, "INSERT INTO %s (", talloc_asprintf(query, "INSERT INTO %s (",
config_value(location, "table", config_value(location, "table",
CONFIG_TABLE_DEFAULT)); CONFIG_TABLE_DEFAULT));
} }
if (IS_SAM_CHANGED(newpwd, PDB_ACCTCTRL)) { 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_value_write(location, "acct ctrl column",
CONFIG_ACCT_CTRL_DEFAULT), CONFIG_ACCT_CTRL_DEFAULT),
pdb_get_acct_ctrl(newpwd)); pdb_get_acct_ctrl(newpwd));
} }
if (IS_SAM_CHANGED(newpwd, PDB_LOGONTIME)) { if (IS_SAM_CHANGED(newpwd, PDB_LOGONTIME)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"logon time column", "logon time column",
CONFIG_LOGON_TIME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_LOGOFFTIME)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"logoff time column", "logoff time column",
CONFIG_LOGOFF_TIME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_KICKOFFTIME)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"kickoff time column", "kickoff time column",
CONFIG_KICKOFF_TIME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_CANCHANGETIME)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"pass can change time column", "pass can change time column",
CONFIG_PASS_CAN_CHANGE_TIME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_MUSTCHANGETIME)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"pass must change time column", "pass must change time column",
CONFIG_PASS_MUST_CHANGE_TIME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_PASSLASTSET)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"pass last set time column", "pass last set time column",
CONFIG_PASS_LAST_SET_TIME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_HOURSLEN)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"hours len column", "hours len column",
CONFIG_HOURS_LEN_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_LOGONDIVS)) {
pdb_sql_int_field(&query, pdb_sql_int_field(query,
config_value_write(location, config_value_write(location,
"logon divs column", "logon divs column",
CONFIG_LOGON_DIVS_DEFAULT), 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)) { 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_value_write(location, "user sid column",
CONFIG_USER_SID_DEFAULT), CONFIG_USER_SID_DEFAULT),
sid_to_string(sid_str, 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)) { 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_value_write(location, "group sid column",
CONFIG_GROUP_SID_DEFAULT), CONFIG_GROUP_SID_DEFAULT),
sid_to_string(sid_str, 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)) { if (IS_SAM_CHANGED(newpwd, PDB_USERNAME)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, "username column", config_value_write(location, "username column",
CONFIG_USERNAME_DEFAULT), CONFIG_USERNAME_DEFAULT),
pdb_get_username(newpwd)); pdb_get_username(newpwd));
} }
if (IS_SAM_CHANGED(newpwd, PDB_DOMAIN)) { if (IS_SAM_CHANGED(newpwd, PDB_DOMAIN)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, "domain column", config_value_write(location, "domain column",
CONFIG_DOMAIN_DEFAULT), CONFIG_DOMAIN_DEFAULT),
pdb_get_domain(newpwd)); pdb_get_domain(newpwd));
} }
if (IS_SAM_CHANGED(newpwd, PDB_USERNAME)) { if (IS_SAM_CHANGED(newpwd, PDB_USERNAME)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, config_value_write(location,
"nt username column", "nt username column",
CONFIG_NT_USERNAME_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_FULLNAME)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, "fullname column", config_value_write(location, "fullname column",
CONFIG_FULLNAME_DEFAULT), CONFIG_FULLNAME_DEFAULT),
pdb_get_fullname(newpwd)); pdb_get_fullname(newpwd));
} }
if (IS_SAM_CHANGED(newpwd, PDB_LOGONSCRIPT)) { if (IS_SAM_CHANGED(newpwd, PDB_LOGONSCRIPT)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, config_value_write(location,
"logon script column", "logon script column",
CONFIG_LOGON_SCRIPT_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_PROFILE)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, config_value_write(location,
"profile path column", "profile path column",
CONFIG_PROFILE_PATH_DEFAULT), 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)) { 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_value_write(location, "dir drive column",
CONFIG_DIR_DRIVE_DEFAULT), CONFIG_DIR_DRIVE_DEFAULT),
pdb_get_dir_drive(newpwd)); pdb_get_dir_drive(newpwd));
} }
if (IS_SAM_CHANGED(newpwd, PDB_SMBHOME)) { 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_value_write(location, "home dir column",
CONFIG_HOME_DIR_DEFAULT), CONFIG_HOME_DIR_DEFAULT),
pdb_get_homedir(newpwd)); pdb_get_homedir(newpwd));
} }
if (IS_SAM_CHANGED(newpwd, PDB_WORKSTATIONS)) { if (IS_SAM_CHANGED(newpwd, PDB_WORKSTATIONS)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, config_value_write(location,
"workstations column", "workstations column",
CONFIG_WORKSTATIONS_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_UNKNOWNSTR)) {
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, config_value_write(location,
"unknown string column", "unknown string column",
CONFIG_UNKNOWN_STR_DEFAULT), 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)) { if (IS_SAM_CHANGED(newpwd, PDB_LMPASSWD)) {
pdb_sethexpwd(temp, pdb_get_lanman_passwd(newpwd), pdb_sethexpwd(temp, pdb_get_lanman_passwd(newpwd),
pdb_get_acct_ctrl(newpwd)); pdb_get_acct_ctrl(newpwd));
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, config_value_write(location,
"lanman pass column", "lanman pass column",
CONFIG_LM_PW_DEFAULT), temp); 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)) { if (IS_SAM_CHANGED(newpwd, PDB_NTPASSWD)) {
pdb_sethexpwd(temp, pdb_get_nt_passwd(newpwd), pdb_sethexpwd(temp, pdb_get_nt_passwd(newpwd),
pdb_get_acct_ctrl(newpwd)); pdb_get_acct_ctrl(newpwd));
pdb_sql_string_field(&query, pdb_sql_string_field(query,
config_value_write(location, "nt pass column", config_value_write(location, "nt pass column",
CONFIG_NT_PW_DEFAULT), temp); CONFIG_NT_PW_DEFAULT), temp);
} }
if (query.update) { if (query->update) {
query.part1[strlen(query.part1) - 1] = '\0'; query->part1[strlen(query->part1) - 1] = '\0';
query.part1 = query->part1 =
talloc_asprintf_append(query.mem_ctx, query.part1, talloc_asprintf_append(query->part1,
" WHERE %s = '%s'", " WHERE %s = '%s'",
config_value_read(location, config_value_read(location,
"user sid column", "user sid column",
CONFIG_USER_SID_DEFAULT), CONFIG_USER_SID_DEFAULT),
sid_to_string(sid_str, pdb_get_user_sid (newpwd))); sid_to_string(sid_str, pdb_get_user_sid (newpwd)));
} else { } else {
query.part2[strlen(query.part2) - 1] = ')'; query->part2[strlen(query->part2) - 1] = ')';
query.part1[strlen(query.part1) - 1] = ')'; query->part1[strlen(query->part1) - 1] = ')';
query.part1 = query->part1 =
talloc_asprintf_append(query.mem_ctx, query.part1, talloc_asprintf_append(query->part1,
" VALUES (%s", query.part2); " VALUES (%s", query->part2);
} }
ret = SMB_STRDUP(query.part1); ret = talloc_strdup(mem_ctx, query->part1);
talloc_destroy(query.mem_ctx); talloc_free(query);
return ret; return ret;
} }