-static NTSTATUS idmap_rid_id_to_sid(struct idmap_rid_context *ctx, struct id_map *map)
+static NTSTATUS idmap_rid_id_to_sid(TALLOC_CTX *memctx, struct idmap_rid_context *ctx, struct id_map *map)
{
char *domname, *name;
enum lsa_SidType sid_type;
{
char *domname, *name;
enum lsa_SidType sid_type;
+ if (!memctx || !ctx || !map) {
return NT_STATUS_INVALID_PARAMETER;
}
return NT_STATUS_INVALID_PARAMETER;
}
sid_compose(map->sid, &ctx->dom_sid, map->xid.id - ctx->low_id + ctx->base_rid);
sid_compose(map->sid, &ctx->dom_sid, map->xid.id - ctx->low_id + ctx->base_rid);
- if (winbindd_lookup_name_by_sid(ctx, map->sid, &domname, &name, &sid_type)) {
+ if (winbindd_lookup_name_by_sid(memctx, map->sid, &domname, &name, &sid_type)) {
switch (sid_type) {
case SID_NAME_USER:
if (map->xid.type != ID_TYPE_UID) {
switch (sid_type) {
case SID_NAME_USER:
if (map->xid.type != ID_TYPE_UID) {
Single sid to id lookup function.
**********************************/
Single sid to id lookup function.
**********************************/
-static NTSTATUS idmap_rid_sid_to_id(struct idmap_rid_context *ctx, struct id_map *map)
+static NTSTATUS idmap_rid_sid_to_id(TALLOC_CTX *memctx, struct idmap_rid_context *ctx, struct id_map *map)
{
char *domname, *name;
enum lsa_SidType sid_type;
uint32_t rid;
{
char *domname, *name;
enum lsa_SidType sid_type;
uint32_t rid;
+ if (!memctx || !ctx || !map) {
return NT_STATUS_INVALID_PARAMETER;
}
return NT_STATUS_INVALID_PARAMETER;
}
map->xid.id = rid - ctx->base_rid + ctx->low_id;
/* check if this is a valid SID and set the type */
map->xid.id = rid - ctx->base_rid + ctx->low_id;
/* check if this is a valid SID and set the type */
- if (winbindd_lookup_name_by_sid(ctx, map->sid, &domname, &name, &sid_type)) {
+ if (winbindd_lookup_name_by_sid(memctx, map->sid, &domname, &name, &sid_type)) {
switch (sid_type) {
case SID_NAME_USER:
map->xid.type = ID_TYPE_UID;
switch (sid_type) {
case SID_NAME_USER:
map->xid.type = ID_TYPE_UID;
static NTSTATUS idmap_rid_unixids_to_sids(struct idmap_domain *dom, struct id_map **ids)
{
static NTSTATUS idmap_rid_unixids_to_sids(struct idmap_domain *dom, struct id_map **ids)
{
- struct idmap_rid_context *ctx;
+ struct idmap_rid_context *ridctx;
+ TALLOC_CTX *ctx;
- ctx = talloc_get_type(dom->private_data, struct idmap_rid_context);
+ ridctx = talloc_get_type(dom->private_data, struct idmap_rid_context);
+
+ ctx = talloc_new(dom);
+ if ( ! ctx) {
+ DEBUG(0, ("Out of memory!\n"));
+ return NT_STATUS_NO_MEMORY;
+ }
for (i = 0; ids[i]; i++) {
/* make sure it is marked as unmapped before resolveing */
ids[i]->mapped = False;
for (i = 0; ids[i]; i++) {
/* make sure it is marked as unmapped before resolveing */
ids[i]->mapped = False;
- ret = idmap_rid_id_to_sid(ctx, ids[i]);
+ ret = idmap_rid_id_to_sid(ctx, ridctx, ids[i]);
if (( ! NT_STATUS_IS_OK(ret)) &&
( ! NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
if (( ! NT_STATUS_IS_OK(ret)) &&
( ! NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
static NTSTATUS idmap_rid_sids_to_unixids(struct idmap_domain *dom, struct id_map **ids)
{
static NTSTATUS idmap_rid_sids_to_unixids(struct idmap_domain *dom, struct id_map **ids)
{
- struct idmap_rid_context *ctx;
+ struct idmap_rid_context *ridctx;
+ TALLOC_CTX *ctx;
- ctx = talloc_get_type(dom->private_data, struct idmap_rid_context);
+ ridctx = talloc_get_type(dom->private_data, struct idmap_rid_context);
+
+ ctx = talloc_new(dom);
+ if ( ! ctx) {
+ DEBUG(0, ("Out of memory!\n"));
+ return NT_STATUS_NO_MEMORY;
+ }
for (i = 0; ids[i]; i++) {
/* make sure it is marked as unmapped before resolveing */
ids[i]->mapped = False;
for (i = 0; ids[i]; i++) {
/* make sure it is marked as unmapped before resolveing */
ids[i]->mapped = False;
- ret = idmap_rid_sid_to_id(ctx, ids[i]);
+ ret = idmap_rid_sid_to_id(ctx, ridctx, ids[i]);
if (( ! NT_STATUS_IS_OK(ret)) &&
( ! NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
if (( ! NT_STATUS_IS_OK(ret)) &&
( ! NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
{
enum lsa_SidType type;
DOM_SID sid;
{
enum lsa_SidType type;
DOM_SID sid;
- char *name = NULL;
- char *dom_name = NULL;
+ char *name;
+ char *dom_name;
/* Ensure null termination */
state->request.data.sid[sizeof(state->request.data.sid)-1]='\0';
/* Ensure null termination */
state->request.data.sid[sizeof(state->request.data.sid)-1]='\0';
{
struct winbindd_domain *domain;
enum lsa_SidType name_type;
{
struct winbindd_domain *domain;
enum lsa_SidType name_type;
- char *dom_name = NULL;
- char *group_name = NULL;
+ char *dom_name;
+ char *group_name;
size_t gr_mem_len;
size_t num_gr_mem;
char *gr_mem;
size_t gr_mem_len;
size_t num_gr_mem;
char *gr_mem;
NTSTATUS result;
struct winbindd_domain *domain;
NTSTATUS result;
struct winbindd_domain *domain;
+ *dom_name = NULL;
+ *name = NULL;
+
domain = find_lookup_domain_from_sid(sid);
if (!domain) {
domain = find_lookup_domain_from_sid(sid);
if (!domain) {
}
*type = SID_NAME_UNKNOWN;
}
*type = SID_NAME_UNKNOWN;
- *name = talloc_strdup(mem_ctx, name_deadbeef);
log file = $LOGDIR/log.%m
log level = 0
log file = $LOGDIR/log.%m
log level = 0
- passdb backend = tdbsam
-
name resolve order = bcast
EOF
name resolve order = bcast
EOF
interfaces = $TORTURE_INTERFACES
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
interfaces = $TORTURE_INTERFACES
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
+
+ passdb backend = tdbsam
EOF
cat >$SAMBA4CONFFILE<<EOF
EOF
cat >$SAMBA4CONFFILE<<EOF
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
+ passdb backend = tdbsam
+
; Necessary to add the build farm hacks
add user script = /bin/false
add machine script = /bin/false
; Necessary to add the build farm hacks
add user script = /bin/false
add machine script = /bin/false