diff options
author | Jeremy Allison <jra@samba.org> | 2007-12-07 17:32:32 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2007-12-07 17:32:32 -0800 |
commit | 42cfffae80480eae4381902fff3f7c61f858a933 (patch) | |
tree | 2fc1bc486fa988a4f2854310bcf91943db1aa566 /source3/groupdb | |
parent | 25288b0e4472c728fc5a3a70c6c3e1f621ffae5f (diff) | |
download | samba-42cfffae80480eae4381902fff3f7c61f858a933.tar.gz samba-42cfffae80480eae4381902fff3f7c61f858a933.tar.bz2 samba-42cfffae80480eae4381902fff3f7c61f858a933.zip |
Remove next_token - all uses must now be next_token_talloc.
No more temptations to use static length strings.
Jeremy.
(This used to be commit ec003f39369910dee852b7cafb883ddaa321c2de)
Diffstat (limited to 'source3/groupdb')
-rw-r--r-- | source3/groupdb/mapping_ldb.c | 9 | ||||
-rw-r--r-- | source3/groupdb/mapping_tdb.c | 22 |
2 files changed, 19 insertions, 12 deletions
diff --git a/source3/groupdb/mapping_ldb.c b/source3/groupdb/mapping_ldb.c index ab7ac0b913..205111e5ac 100644 --- a/source3/groupdb/mapping_ldb.c +++ b/source3/groupdb/mapping_ldb.c @@ -578,8 +578,9 @@ static int upgrade_alias_record(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data, void *state) { const char *p = (const char *)data.dptr; - fstring string_sid; + char *string_sid; DOM_SID member; + TALLOC_CTX *frame; if (strncmp((char *)key.dptr, MEMBEROF_PREFIX, MIN(key.dsize, strlen(MEMBEROF_PREFIX))) != 0) { @@ -592,7 +593,8 @@ static int upgrade_alias_record(TDB_CONTEXT *tdb_ctx, TDB_DATA key, *(int *)state = -1; } - while (next_token(&p, string_sid, " ", sizeof(string_sid))) { + frame = talloc_stackframe(); + while (next_token_talloc(frame,&p, &string_sid, " ")) { DOM_SID alias; NTSTATUS status; string_to_sid(&alias, string_sid); @@ -604,10 +606,11 @@ static int upgrade_alias_record(TDB_CONTEXT *tdb_ctx, TDB_DATA key, DEBUG(0,("Failed to add alias member during upgrade - %s\n", nt_errstr(status))); *(int *)state = -1; + TALLOC_FREE(frame); return -1; } } - + TALLOC_FREE(frame); return 0; } diff --git a/source3/groupdb/mapping_tdb.c b/source3/groupdb/mapping_tdb.c index 539b02e54b..2e4ed4623e 100644 --- a/source3/groupdb/mapping_tdb.c +++ b/source3/groupdb/mapping_tdb.c @@ -388,9 +388,11 @@ static bool enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_ static NTSTATUS one_alias_membership(const DOM_SID *member, DOM_SID **sids, size_t *num) { - fstring key, string_sid; + fstring key; + char *string_sid; TDB_DATA dbuf; const char *p; + TALLOC_CTX *frame; sid_to_string(string_sid, member); slprintf(key, sizeof(key), "%s%s", MEMBEROF_PREFIX, string_sid); @@ -402,19 +404,20 @@ static NTSTATUS one_alias_membership(const DOM_SID *member, } p = (const char *)dbuf.dptr; - - while (next_token(&p, string_sid, " ", sizeof(string_sid))) { - + frame = talloc_stackframe(); + while (next_token_talloc(frame, &p, &string_sid, " ")) { DOM_SID alias; if (!string_to_sid(&alias, string_sid)) continue; if (!add_sid_to_array_unique(NULL, &alias, sids, num)) { + TALLOC_FREE(frame); return NT_STATUS_NO_MEMORY; } } + TALLOC_FREE(frame); SAFE_FREE(dbuf.dptr); return NT_STATUS_OK; } @@ -518,7 +521,8 @@ static int collect_aliasmem(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data, { struct aliasmem_closure *closure = (struct aliasmem_closure *)state; const char *p; - fstring alias_string; + char *alias_string; + TALLOC_CTX *frame; if (strncmp((const char *)key.dptr, MEMBEROF_PREFIX, strlen(MEMBEROF_PREFIX)) != 0) @@ -526,11 +530,10 @@ static int collect_aliasmem(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data, p = (const char *)data.dptr; - while (next_token(&p, alias_string, " ", sizeof(alias_string))) { - + frame = talloc_stackframe(); + while (next_token_talloc(frame, &p, &alias_string, " ")) { DOM_SID alias, member; const char *member_string; - if (!string_to_sid(&alias, alias_string)) continue; @@ -552,13 +555,14 @@ static int collect_aliasmem(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data, if (!string_to_sid(&member, member_string)) continue; - + if (!add_sid_to_array(NULL, &member, closure->sids, closure->num)) { /* talloc fail. */ break; } } + TALLOC_FREE(frame); return 0; } |