#include "includes.h"
#include "winbindd.h"
+#include "../libds/common/flags.h"
+#include "ads.h"
+#include "libads/ldap_schema.h"
+#include "nss_info.h"
+#include "secrets.h"
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_IDMAP
Search up to IDMAP_AD_MAX_IDS entries in maps for a match
***********************************************************************/
-static struct id_map *find_map_by_sid(struct id_map **maps, DOM_SID *sid)
+static struct id_map *find_map_by_sid(struct id_map **maps, struct dom_sid *sid)
{
int i;
entry = res;
for (i = 0; (i < count) && entry; i++) {
- DOM_SID sid;
+ struct dom_sid sid;
enum id_type type;
struct id_map *map;
uint32_t id;
continue;
}
- if ((id == 0) ||
- (ctx->filter_low_id && (id < ctx->filter_low_id)) ||
- (ctx->filter_high_id && (id > ctx->filter_high_id))) {
+ if (!idmap_unix_id_is_in_range(id, dom)) {
DEBUG(5, ("Requested id (%u) out of range (%u - %u). Filtered!\n",
- id, ctx->filter_low_id, ctx->filter_high_id));
+ id, dom->low_id, dom->high_id));
continue;
}
ids[idx]->status = ID_UNKNOWN;
- sidstr = sid_binstring(ids[idx]->sid);
+ sidstr = sid_binstring(talloc_tos(), ids[idx]->sid);
filter = talloc_asprintf_append_buffer(filter, "(objectSid=%s)", sidstr);
- free(sidstr);
+ TALLOC_FREE(sidstr);
CHECK_ALLOC_DONE(filter);
}
filter = talloc_asprintf_append_buffer(filter, "))");
entry = res;
for (i = 0; (i < count) && entry; i++) {
- DOM_SID sid;
+ struct dom_sid sid;
enum id_type type;
struct id_map *map;
uint32_t id;
DEBUG(1, ("Could not get unix ID\n"));
continue;
}
- if ((id == 0) ||
- (ctx->filter_low_id && (id < ctx->filter_low_id)) ||
- (ctx->filter_high_id && (id > ctx->filter_high_id))) {
+ if (!idmap_unix_id_is_in_range(id, dom)) {
DEBUG(5, ("Requested id (%u) out of range (%u - %u). Filtered!\n",
- id, ctx->filter_low_id, ctx->filter_high_id));
+ id, dom->low_id, dom->high_id));
continue;
}
***********************************************************************/
static NTSTATUS nss_ad_get_info( struct nss_domain_entry *e,
- const DOM_SID *sid,
+ const struct dom_sid *sid,
TALLOC_CTX *mem_ctx,
ADS_STRUCT *ads,
LDAPMessage *msg,
- char **homedir,
- char **shell,
- char **gecos,
+ const char **homedir,
+ const char **shell,
+ const char **gecos,
uint32 *gid )
{
const char *attrs[] = {NULL, /* attr_homedir */
attrs[2] = ctx->ad_schema->posix_gecos_attr;
attrs[3] = ctx->ad_schema->posix_gidnumber_attr;
- sidstr = sid_binstring(sid);
+ sidstr = sid_binstring(mem_ctx, sid);
filter = talloc_asprintf(mem_ctx, "(objectSid=%s)", sidstr);
- SAFE_FREE(sidstr);
+ TALLOC_FREE(sidstr);
if (!filter) {
nt_status = NT_STATUS_NO_MEMORY;