diff options
author | Nalin Dahyabhai <nalin@dahyabhai.net> | 2008-06-21 13:15:26 -0400 |
---|---|---|
committer | Nalin Dahyabhai <nalin@dahyabhai.net> | 2008-06-21 13:15:26 -0400 |
commit | 99d2584160c6b774600f49cd6e7c1435b9c3ff2b (patch) | |
tree | 147f51260c4afa45be315a310590b54a4244bb1d /src/defaults.c | |
parent | 8490e59127c434efd01f477b921f80ebbf2b5571 (diff) | |
download | slapi-nis-99d2584160c6b774600f49cd6e7c1435b9c3ff2b.tar.gz slapi-nis-99d2584160c6b774600f49cd6e7c1435b9c3ff2b.tar.xz slapi-nis-99d2584160c6b774600f49cd6e7c1435b9c3ff2b.zip |
- add a "disallowed chars" map attribute
- disallow ':' in attributes in passwd.byname and passwd.byuid
- disallow ':,' in attributes in group.byname and group.bygid
Diffstat (limited to 'src/defaults.c')
-rw-r--r-- | src/defaults.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/defaults.c b/src/defaults.c index 29e0d8d..9ecd1f8 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -39,32 +39,38 @@ static struct configuration { char *map; enum { config_exact, config_glob } config_match; bool_t secure; - char *filter, *key_formats[3], *value_format; + char *filter, *key_formats[3], *value_format, *disallowed_chars; } config[] = { {"passwd.byname", config_exact, FALSE, "(objectClass=posixAccount)", {"%{uid}", NULL, NULL}, - "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{cn!:}:%{homeDirectory:-/}:%{loginShell!:}"}, + "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell}", + ":"}, {"passwd.byuid", config_exact, FALSE, "(objectClass=posixAccount)", {"%{uidNumber}", NULL, NULL}, - "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{cn!:}:%{homeDirectory:-/}:%{loginShell!:}"}, + "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell}", + ":"}, {"group.byname", config_exact, FALSE, "(objectClass=posixGroup)", {"%{cn}", NULL, NULL}, - "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\",\\\",\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")"}, + "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\",\\\",\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", + ":,"}, {"group.bygid", config_exact, FALSE, "(objectClass=posixGroup)", {"%{gidNumber}", NULL, NULL}, - "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\",\\\",\\\"passwd.byuid\\\",\\\"memberOf\\\",\\\"uid\\\")\")"}, + "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\",\\\",\\\"passwd.byuid\\\",\\\"memberOf\\\",\\\"uid\\\")\")", + ":,"}, {"netgroup", config_exact, FALSE, "(objectClass=nisNetgroup)", {"%{cn}", NULL, NULL}, - "%list(\" \",\"nisNetgroupTriple\",\"memberNisNetgroup\")"}, + "%list(\" \",\"nisNetgroupTriple\",\"memberNisNetgroup\")", + NULL}, {"auto.*", config_glob, FALSE, "(objectClass=automount)", {"%{automountKey}", NULL, NULL}, - "%{automountInformation}"}, + "%{automountInformation}", + NULL}, }; void @@ -72,7 +78,8 @@ defaults_get_map_config(const char *mapname, bool_t *secure, const char **filter, const char ***key_formats, - const char **value_format) + const char **value_format, + const char **disallowed_chars) { unsigned int i; if (filter) { @@ -103,6 +110,9 @@ defaults_get_map_config(const char *mapname, if (value_format) { *value_format = config[i].value_format; } + if (disallowed_chars) { + *disallowed_chars = config[i].disallowed_chars; + } } break; case config_glob: @@ -120,6 +130,9 @@ defaults_get_map_config(const char *mapname, if (value_format) { *value_format = config[i].value_format; } + if (disallowed_chars) { + *disallowed_chars = config[i].disallowed_chars; + } } break; } |