diff options
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/ldb/common/ldb_modules.c | 11 | ||||
-rw-r--r-- | source4/lib/ldb/config.mk | 3 | ||||
-rw-r--r-- | source4/lib/ldb/ldb_map/ldb_map.c | 11 | ||||
-rw-r--r-- | source4/lib/ldb/samba/samba3sam.c (renamed from source4/lib/samba3/ldb_samba3.c) | 6 | ||||
-rw-r--r-- | source4/lib/ldb/tests/samba3.ldif | 203 | ||||
-rwxr-xr-x | source4/lib/ldb/tests/test-samba3sam.sh | 8 | ||||
-rw-r--r-- | source4/lib/ldb/tools/cmdline.c | 5 | ||||
-rw-r--r-- | source4/lib/samba3/config.mk | 1 |
8 files changed, 239 insertions, 9 deletions
diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c index ab743d1b49..20e8ad061e 100644 --- a/source4/lib/ldb/common/ldb_modules.c +++ b/source4/lib/ldb/common/ldb_modules.c @@ -226,6 +226,17 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[]) DLIST_ADD(ldb->modules, current); continue; } + + if (strcmp(modules[i], "samba3sam") == 0) { + current = ldb_samba3sam_module_init(ldb, options); + if (!current) { + ldb_debug(ldb, LDB_DEBUG_FATAL, "function 'init_module' in %s fails\n", modules[i]); + return -1; + } + DLIST_ADD(ldb->modules, current); + continue; + } + #endif ldb_debug(ldb, LDB_DEBUG_WARNING, "WARNING: Module [%s] not found\n", modules[i]); diff --git a/source4/lib/ldb/config.mk b/source4/lib/ldb/config.mk index 76059b3b60..23a99e367b 100644 --- a/source4/lib/ldb/config.mk +++ b/source4/lib/ldb/config.mk @@ -115,7 +115,8 @@ REQUIRED_SUBSYSTEMS = \ # Start SUBSYSTEM LDBSAMBA [SUBSYSTEM::LDBSAMBA] OBJ_FILES = \ - lib/ldb/samba/ldif_handlers.o + lib/ldb/samba/ldif_handlers.o \ + lib/ldb/samba/samba3sam.o # End SUBSYSTEM LDBSAMBA ################################################ diff --git a/source4/lib/ldb/ldb_map/ldb_map.c b/source4/lib/ldb/ldb_map/ldb_map.c index dea3c24e37..2082abe79a 100644 --- a/source4/lib/ldb/ldb_map/ldb_map.c +++ b/source4/lib/ldb/ldb_map/ldb_map.c @@ -126,6 +126,9 @@ static struct ldb_dn *map_remote_dn(struct ldb_module *module, const struct ldb_ struct ldb_dn *newdn; int i; + if (dn == NULL) + return NULL; + newdn = talloc_memdup(module, dn, sizeof(*dn)); if (!newdn) return NULL; @@ -183,6 +186,9 @@ static struct ldb_dn *map_local_dn(struct ldb_module *module, const struct ldb_d int i; struct ldb_parse_tree eqtree, *new_eqtree; + if (dn == NULL) + return NULL; + newdn = talloc_memdup(module, dn, sizeof(*dn)); if (!newdn) return NULL; @@ -252,8 +258,6 @@ static struct ldb_dn *map_local_dn(struct ldb_module *module, const struct ldb_d return newdn; } - - /* Loop over ldb_map_attribute array and add remote_names */ static const char **ldb_map_attrs(struct ldb_module *module, const char *const attrs[]) { @@ -261,6 +265,9 @@ static const char **ldb_map_attrs(struct ldb_module *module, const char *const a const char **ret; int ar_size = 0, last_element = 0; + if (attrs == NULL) + return NULL; + /* Start with good guess of number of elements */ for (i = 0; attrs[i]; i++); diff --git a/source4/lib/samba3/ldb_samba3.c b/source4/lib/ldb/samba/samba3sam.c index 68f5412c90..6c98ffc5c1 100644 --- a/source4/lib/samba3/ldb_samba3.c +++ b/source4/lib/ldb/samba/samba3sam.c @@ -1,5 +1,5 @@ /* - ldb database library - Samba3 compatibility backend + ldb database library - Samba3 SAM compatibility backend Copyright (C) Jelmer Vernooij 2005 @@ -189,9 +189,9 @@ const struct ldb_map_attribute samba3_attributes[] = /* the init function */ #ifdef HAVE_DLOPEN_DISABLED - struct ldb_module *init_module(struct ldb_context *ldb, const char *options[]) +struct ldb_module *init_module(struct ldb_context *ldb, const char *options[]) #else - struct ldb_module *ldb_samba3_module_init(struct ldb_context *ldb, const char *options[]) +struct ldb_module *ldb_samba3sam_module_init(struct ldb_context *ldb, const char *options[]) #endif { return ldb_map_init(ldb, &samba3_attributes, &samba3_objectclasses, options); diff --git a/source4/lib/ldb/tests/samba3.ldif b/source4/lib/ldb/tests/samba3.ldif new file mode 100644 index 0000000000..fb0a1386d4 --- /dev/null +++ b/source4/lib/ldb/tests/samba3.ldif @@ -0,0 +1,203 @@ +dn: dc=idealx,dc=org +objectClass: dcObject +objectclass: organization +o: idealx +dc: idealx + +dn: ou=Users,dc=idealx,dc=org +objectClass: organizationalUnit +ou: Users + +dn: ou=Groups,dc=idealx,dc=org +objectClass: organizationalUnit +ou: Groups + +dn: ou=Computers,dc=idealx,dc=org +objectClass: organizationalUnit +ou: Computers +dn: uid=Administrator,ou=Users,dc=idealx,dc=org +cn: Administrator +sn: Administrator +objectClass: inetOrgPerson +objectClass: sambaSAMAccount +objectClass: posixAccount +objectClass: shadowAccount +gidNumber: 512 +uid: Administrator +uidNumber: 0 +homeDirectory: /home/%U +sambaPwdLastSet: 0 +sambaLogonTime: 0 +sambaLogoffTime: 2147483647 +sambaKickoffTime: 2147483647 +sambaPwdCanChange: 0 +sambaPwdMustChange: 2147483647 +sambaHomePath: \\PDC-SMB3\home\%U +sambaHomeDrive: H: +sambaProfilePath: \\PDC-SMB3\profiles\%U\Administrator +sambaPrimaryGroupSID: S-1-5-21-4231626423-2410014848-2360679739-512 +sambaLMPassword: XXX +sambaNTPassword: XXX +sambaAcctFlags: [U ] +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-2996 +loginShell: /bin/false +gecos: Netbios Domain Administrator + +dn: uid=nobody,ou=Users,dc=idealx,dc=org +cn: nobody +sn: nobody +objectClass: inetOrgPerson +objectClass: sambaSAMAccount +objectClass: posixAccount +objectClass: shadowAccount +gidNumber: 514 +uid: nobody +uidNumber: 999 +homeDirectory: /dev/null +sambaPwdLastSet: 0 +sambaLogonTime: 0 +sambaLogoffTime: 2147483647 +sambaKickoffTime: 2147483647 +sambaPwdCanChange: 0 +sambaPwdMustChange: 2147483647 +sambaHomePath: \\PDC-SMB3\home\%U +sambaHomeDrive: H: +sambaProfilePath: \\PDC-SMB3\profiles\%U\nobody +sambaPrimaryGroupSID: S-1-5-21-4231626423-2410014848-2360679739-514 +sambaLMPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX +sambaNTPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX +sambaAcctFlags: [NU ] +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-2998 +loginShell: /bin/false + +dn: cn=Domain Admins,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 512 +cn: Domain Admins +memberUid: Administrator +description: Netbios Domain Administrators +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-512 +sambaGroupType: 2 +displayName: Domain Admins + +dn: cn=Domain Users,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 513 +cn: Domain Users +description: Netbios Domain Users +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-513 +sambaGroupType: 2 +displayName: Domain Users + +dn: cn=Domain Guests,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 514 +cn: Domain Guests +description: Netbios Domain Guests Users +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-514 +sambaGroupType: 2 +displayName: Domain Guests + +dn: cn=Print Operators,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 550 +cn: Print Operators +description: Netbios Domain Print Operators +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-550 +sambaGroupType: 2 +displayName: Print Operators + +dn: cn=Backup Operators,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 551 +cn: Backup Operators +description: Netbios Domain Members can bypass file security to back up files +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-551 +sambaGroupType: 2 +displayName: Backup Operators + +dn: cn=Replicator,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 552 +cn: Replicator +description: Netbios Domain Supports file replication in a sambaDomainName +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-552 +sambaGroupType: 2 +displayName: Replicator + +dn: cn=Domain Computers,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 553 +cn: Domain Computers +description: Netbios Domain Computers accounts +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-553 +sambaGroupType: 2 +displayName: Domain Computers + +dn: cn=Administrators,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 544 +cn: Administrators +description: Netbios Domain Members can fully administer the computer/sambaDomainName +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-544 +sambaGroupType: 2 +displayName: Administrators + +dn: cn=Users,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 545 +cn: Users +description: Netbios Domain Ordinary users +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-545 +sambaGroupType: 2 +displayName: users + +dn: cn=Guests,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 546 +cn: Guests +memberUid: nobody +description: Netbios Domain Users granted guest access to the computer/sambaDomainName +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-546 +sambaGroupType: 2 +displayName: Guests + +dn: cn=Power Users,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 547 +cn: Power Users +description: Netbios Domain Members can share directories and printers +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-547 +sambaGroupType: 2 +displayName: Power Users + +dn: cn=Account Operators,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 548 +cn: Account Operators +description: Netbios Domain Users to manipulate users accounts +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-548 +sambaGroupType: 2 +displayName: Account Operators + +dn: cn=Server Operators,ou=Groups,dc=idealx,dc=org +objectClass: posixGroup +objectClass: sambaGroupMapping +gidNumber: 549 +cn: Server Operators +description: Netbios Domain Server Operators +sambaSID: S-1-5-21-4231626423-2410014848-2360679739-549 +sambaGroupType: 2 +displayName: Server Operators diff --git a/source4/lib/ldb/tests/test-samba3sam.sh b/source4/lib/ldb/tests/test-samba3sam.sh new file mode 100755 index 0000000000..60d429e3b1 --- /dev/null +++ b/source4/lib/ldb/tests/test-samba3sam.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +rm -f samba3.ldb + +$VALGRIND ldbadd -H tdb://samba3.ldb < samba3.ldif + +OPT="-o modules:samba3sam -H tdb://samba3.ldb " +$VALGRIND ldbsearch $OPT "(cn=Administrator)" diff --git a/source4/lib/ldb/tools/cmdline.c b/source4/lib/ldb/tools/cmdline.c index cde357a088..fb0292b7d9 100644 --- a/source4/lib/ldb/tools/cmdline.c +++ b/source4/lib/ldb/tools/cmdline.c @@ -124,13 +124,14 @@ struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const case 'o': options.options = talloc_realloc(ret, options.options, - const char *, num_options+2); + const char *, num_options+3); if (options.options == NULL) { ldb_oom(ldb); goto failed; } - options.options[num_options++] = poptGetOptArg(pc); + options.options[num_options] = poptGetOptArg(pc); options.options[num_options+1] = NULL; + num_options++; break; default: diff --git a/source4/lib/samba3/config.mk b/source4/lib/samba3/config.mk index eba694c2af..06b7e5e256 100644 --- a/source4/lib/samba3/config.mk +++ b/source4/lib/samba3/config.mk @@ -11,7 +11,6 @@ ADD_OBJ_FILES = \ lib/samba3/group.o \ lib/samba3/registry.o \ lib/samba3/secrets.o \ - lib/samba3/ldb_samba3.o \ lib/samba3/share_info.o \ lib/samba3/upgrade.o # End SUBSYSTEM LIBSAMBA3 |