mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
s3:idmap_tdb2: don't check whether sid is already mapped in idmap_tdb2_new_mapping().
idmap_tdb2_new_mapping() is called from inside a transaction only with sids, that have been verified not to be mapped directly before that in the same transaction.
This commit is contained in:
parent
1a52e0d25b
commit
39079acc57
@ -848,12 +848,6 @@ done:
|
||||
static NTSTATUS idmap_tdb2_new_mapping(struct idmap_domain *dom, struct id_map *map)
|
||||
{
|
||||
NTSTATUS ret;
|
||||
char *sidstr;
|
||||
TDB_DATA data;
|
||||
TALLOC_CTX *mem_ctx = talloc_stackframe();
|
||||
struct idmap_tdb2_context *ctx;
|
||||
|
||||
ctx = talloc_get_type(dom->private_data, struct idmap_tdb2_context);
|
||||
|
||||
if (map == NULL) {
|
||||
ret = NT_STATUS_INVALID_PARAMETER;
|
||||
@ -870,21 +864,6 @@ static NTSTATUS idmap_tdb2_new_mapping(struct idmap_domain *dom, struct id_map *
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* check wheter the SID is already mapped in the db */
|
||||
sidstr = sid_string_talloc(mem_ctx, map->sid);
|
||||
if (sidstr == NULL) {
|
||||
DEBUG(0, ("Out of memory!\n"));
|
||||
ret = NT_STATUS_NO_MEMORY;
|
||||
goto done;
|
||||
}
|
||||
|
||||
data = dbwrap_fetch_bystring(ctx->db, mem_ctx, sidstr);
|
||||
if (data.dptr) {
|
||||
ret = NT_STATUS_OBJECT_NAME_COLLISION;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* unmapped - get a new id */
|
||||
ret = idmap_tdb2_get_new_id(dom, &map->xid);
|
||||
if (!NT_STATUS_IS_OK(ret)) {
|
||||
DEBUG(3, ("Could not allocate id: %s\n", nt_errstr(ret)));
|
||||
@ -906,7 +885,6 @@ static NTSTATUS idmap_tdb2_new_mapping(struct idmap_domain *dom, struct id_map *
|
||||
}
|
||||
|
||||
done:
|
||||
talloc_free(mem_ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user