}
-static NTSTATUS idmap_autorid_id_to_sid(TALLOC_CTX * memctx,
- struct autorid_global_config *cfg,
+static NTSTATUS idmap_autorid_id_to_sid(struct autorid_global_config *cfg,
struct id_map *map)
{
uint32_t range;
/* determine the range of this uid */
range = ((map->xid.id - cfg->minvalue) / cfg->rangesize);
- keystr = talloc_asprintf(memctx, "%u", range);
+ keystr = talloc_asprintf(talloc_tos(), "%u", range);
if (!keystr) {
return NT_STATUS_NO_MEMORY;
}
- data = dbwrap_fetch_bystring(autorid_db, memctx, keystr);
+ data = dbwrap_fetch_bystring(autorid_db, talloc_tos(), keystr);
+ TALLOC_FREE(keystr);
if (!data.dptr) {
DEBUG(4, ("id %d belongs to range %d which does not have "
"domain mapping, ignoring mapping request\n",
map->xid.id, range));
- } else {
- string_to_sid(&sid, (const char *)data.dptr);
+ return NT_STATUS_OK;
+ }
- sid_compose(map->sid, &sid,
- (map->xid.id - cfg->minvalue -
- range * cfg->rangesize));
+ string_to_sid(&sid, (const char *)data.dptr);
+ TALLOC_FREE(data.dptr);
- /* We **really** should have some way of validating
- the SID exists and is the correct type here. But
- that is a deficiency in the idmap_rid design. */
+ sid_compose(map->sid, &sid,
+ (map->xid.id - cfg->minvalue -
+ range * cfg->rangesize));
- map->status = ID_MAPPED;
- }
+ /* We **really** should have some way of validating
+ the SID exists and is the correct type here. But
+ that is a deficiency in the idmap_rid design. */
+
+ map->status = ID_MAPPED;
return NT_STATUS_OK;
}
for (i = 0; ids[i]; i++) {
- ret = idmap_autorid_id_to_sid(ctx, globalcfg, ids[i]);
+ ret = idmap_autorid_id_to_sid(globalcfg, ids[i]);
if ((!NT_STATUS_IS_OK(ret)) &&
(!NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
struct id_map **ids)
{
struct autorid_global_config *global;
- TALLOC_CTX *ctx;
NTSTATUS ret;
int i;
- ctx = talloc_new(dom);
- if (!ctx) {
- DEBUG(0, ("Out of memory!\n"));
- ret = NT_STATUS_NO_MEMORY;
- goto failure;
- }
-
/* initialize the status to avoid surprise */
for (i = 0; ids[i]; i++) {
ids[i]->status = ID_UNKNOWN;
goto failure;
}
}
-
- talloc_free(ctx);
return NT_STATUS_OK;
failure:
- talloc_free(ctx);
return ret;
}