} else if (ldap_state->schema_ver == SCHEMAVER_SAMBASAMACCOUNT) {
+ struct dom_sid_buf buf;
+
/* There might be a SID for this account already - say an idmap entry */
filter = talloc_asprintf(ctx,
"(&(%s=%s)(|(objectClass=%s)(objectClass=%s)))",
get_userattr_key2string(ldap_state->schema_ver,
LDAP_ATTR_USER_SID),
- sid_string_talloc(ctx, sid),
+ dom_sid_str_buf(sid, &buf),
LDAP_OBJ_IDMAP_ENTRY,
LDAP_OBJ_SID_ENTRY);
if (!filter) {
char **memberuid;
char *gidstr;
int rc, count;
+ struct dom_sid_buf buf;
*pp_member_rids = NULL;
*p_num_members = 0;
"(sambaSID=%s))",
LDAP_OBJ_POSIXGROUP,
LDAP_OBJ_GROUPMAP,
- sid_string_talloc(mem_ctx, group));
+ dom_sid_str_buf(group, &buf));
if (filter == NULL) {
ret = NT_STATUS_NO_MEMORY;
goto done;
const char *filter, *dn;
LDAPMessage *msg, *entry;
LDAPMod **mods;
+ struct dom_sid_buf buf;
int rc;
filter = talloc_asprintf(mem_ctx,
LDAP_OBJ_GROUPMAP);
smbldap_make_mod(smbldap_get_ldap(ldap_state->smbldap_state), entry,
&mods, "sambaSid",
- sid_string_talloc(mem_ctx, &map->sid));
+ dom_sid_str_buf(&map->sid, &buf));
smbldap_make_mod(smbldap_get_ldap(ldap_state->smbldap_state), entry,
&mods, "sambaGroupType",
talloc_asprintf(mem_ctx, "%d", map->sid_name_use));
NTSTATUS result;
struct dom_sid sid;
+ struct dom_sid_buf buf;
struct unixid id;
int rc;
}
filter = talloc_asprintf(mem_ctx, "(sambaSid=%s)",
- sid_string_talloc(mem_ctx, &map->sid));
+ dom_sid_str_buf(&map->sid, &buf));
if (filter == NULL) {
result = NT_STATUS_NO_MEMORY;
goto done;
* the best we can get out of LDAP. */
dn = talloc_asprintf(mem_ctx, "sambaSid=%s,%s",
- sid_string_talloc(mem_ctx, &map->sid),
+ dom_sid_str_buf(&map->sid, &buf),
lp_ldap_group_suffix(talloc_tos()));
if (dn == NULL) {
result = NT_STATUS_NO_MEMORY;
&mods, "objectClass", LDAP_OBJ_GROUPMAP);
smbldap_make_mod(smbldap_get_ldap(ldap_state->smbldap_state), NULL,
&mods, "sambaSid",
- sid_string_talloc(mem_ctx, &map->sid));
+ dom_sid_str_buf(&map->sid, &buf));
smbldap_make_mod(smbldap_get_ldap(ldap_state->smbldap_state), NULL,
&mods, "sambaGroupType",
talloc_asprintf(mem_ctx, "%d", map->sid_name_use));
LDAPMod **mods = NULL;
TALLOC_CTX *mem_ctx;
NTSTATUS result;
+ struct dom_sid_buf buf;
mem_ctx = talloc_new(NULL);
if (mem_ctx == NULL) {
"(sambaSid=%s)(gidNumber=%u)"
"(sambaGroupType=%d))",
LDAP_OBJ_GROUPMAP,
- sid_string_talloc(mem_ctx, &map->sid),
+ dom_sid_str_buf(&map->sid, &buf),
(unsigned int)map->gid, map->sid_name_use);
if (filter == NULL) {
result = NT_STATUS_NO_MEMORY;
NTSTATUS result;
TALLOC_CTX *mem_ctx;
char *filter;
+ struct dom_sid_buf buf;
mem_ctx = talloc_new(NULL);
if (mem_ctx == NULL) {
filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(%s=%s))",
LDAP_OBJ_GROUPMAP, LDAP_ATTRIBUTE_SID,
- sid_string_talloc(mem_ctx, &sid));
+ dom_sid_str_buf(&sid, &buf));
if (filter == NULL) {
result = NT_STATUS_NO_MEMORY;
goto done;
"(&(objectclass=%s)(sambaGroupType=%d)(|",
LDAP_OBJ_GROUPMAP, type);
- for (i=0; i<num_members; i++)
+ for (i=0; i<num_members; i++) {
+ struct dom_sid_buf buf;
filter = talloc_asprintf(mem_ctx, "%s(sambaSIDList=%s)",
filter,
- sid_string_talloc(mem_ctx,
- &members[i]));
+ dom_sid_str_buf(&members[i], &buf));
+ }
filter = talloc_asprintf(mem_ctx, "%s))", filter);
for (i=0; i<num_rids; i++) {
struct dom_sid sid;
+ struct dom_sid_buf buf;
sid_compose(&sid, domain_sid, rids[i]);
allsids = talloc_asprintf_append_buffer(
- allsids, "(sambaSid=%s)",
- sid_string_talloc(mem_ctx, &sid));
+ allsids,
+ "(sambaSid=%s)",
+ dom_sid_str_buf(&sid, &buf));
if (allsids == NULL) {
goto done;
}
struct ldapsam_privates *priv =
(struct ldapsam_privates *)methods->private_data;
char *filter;
+ struct dom_sid_buf buf;
const char *attrs[] = { "sambaGroupType", "gidNumber", "uidNumber",
NULL };
LDAPMessage *result = NULL;
filter = talloc_asprintf(mem_ctx,
"(&(sambaSid=%s)"
"(|(objectClass=%s)(objectClass=%s)))",
- sid_string_talloc(mem_ctx, sid),
+ dom_sid_str_buf(sid, &buf),
LDAP_OBJ_GROUPMAP, LDAP_OBJ_SAMBASAMACCOUNT);
if (filter == NULL) {
DEBUG(5, ("talloc_asprintf failed\n"));
bool is_new_entry = False;
LDAPMod **mods = NULL;
char *filter;
- char *groupsidstr;
char *groupname;
char *grouptype;
char *gidstr;
const char *dn = NULL;
struct dom_sid group_sid;
+ struct dom_sid_buf buf;
gid_t gid = -1;
int rc;
sid_compose(&group_sid, get_global_sam_sid(), *rid);
- groupsidstr = talloc_strdup(tmp_ctx, sid_string_talloc(tmp_ctx,
- &group_sid));
grouptype = talloc_asprintf(tmp_ctx, "%d", SID_NAME_DOM_GRP);
- if (!groupsidstr || !grouptype) {
+ if (!grouptype) {
DEBUG(0,("ldapsam_create_group: Out of memory!\n"));
return NT_STATUS_NO_MEMORY;
}
smbldap_set_mod(&mods, LDAP_MOD_ADD, "objectClass", LDAP_OBJ_GROUPMAP);
- smbldap_set_mod(&mods, LDAP_MOD_ADD, "sambaSid", groupsidstr);
+ smbldap_set_mod(&mods,
+ LDAP_MOD_ADD,
+ "sambaSid",
+ dom_sid_str_buf(&group_sid, &buf));
smbldap_set_mod(&mods, LDAP_MOD_ADD, "sambaGroupType", grouptype);
smbldap_set_mod(&mods, LDAP_MOD_ADD, "displayName", name);
char *gidstr;
char *filter;
struct dom_sid group_sid;
+ struct dom_sid_buf buf;
int rc;
/* get the group sid */
"(&(sambaSID=%s)"
"(objectClass=%s)"
"(objectClass=%s))",
- sid_string_talloc(tmp_ctx, &group_sid),
+ dom_sid_str_buf(&group_sid, &buf),
LDAP_OBJ_POSIXGROUP,
LDAP_OBJ_GROUPMAP);
if (filter == NULL) {
const char *dn = NULL;
struct dom_sid group_sid;
struct dom_sid member_sid;
+ struct dom_sid_buf buf;
int rc;
switch (modop) {
"(&(sambaSID=%s)"
"(objectClass=%s)"
"(objectClass=%s))",
- sid_string_talloc(tmp_ctx, &member_sid),
+ dom_sid_str_buf(&member_sid, &buf),
LDAP_OBJ_POSIXACCOUNT,
LDAP_OBJ_SAMBASAMACCOUNT);
if (filter == NULL) {
"(&(sambaSID=%s)"
"(objectClass=%s)"
"(objectClass=%s))",
- sid_string_talloc(tmp_ctx, &group_sid),
+ dom_sid_str_buf(&group_sid, &buf),
LDAP_OBJ_POSIXGROUP,
LDAP_OBJ_GROUPMAP);