summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/defs-nis.c10
-rw-r--r--src/format.c40
2 files changed, 44 insertions, 6 deletions
diff --git a/src/defs-nis.c b/src/defs-nis.c
index 7fdbbfc..8a39beb 100644
--- a/src/defs-nis.c
+++ b/src/defs-nis.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008,2009 Red Hat, Inc.
+ * Copyright 2008,2009,2011 Red Hat, Inc.
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -52,22 +52,22 @@ static struct configuration {
"(objectClass=posixAccount)",
"%{uid}", NULL,
"%{uid}:%regsub(\"%{userPassword}\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%regmatch(\"%{uidNumber}\",\"[0-9]+\"):%regmatch(\"%{gidNumber}\",\"[0-9]+\"):%{gecos:-%{cn:-}}:%{homeDirectory:-/}:%{loginShell:-" _PATH_BSHELL "}", NULL,
- ":"},
+ ":\r\n"},
{"passwd.byuid", config_exact, FALSE, NULL,
"(objectClass=posixAccount)",
"%{uidNumber}", NULL,
"%{uid}:%regsub(\"%{userPassword}\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%regmatch(\"%{uidNumber}\",\"[0-9]+\"):%regmatch(\"%{gidNumber}\",\"[0-9]+\"):%{gecos:-%{cn:-}}:%{homeDirectory:-/}:%{loginShell:-" _PATH_BSHELL "}", NULL,
- ":"},
+ ":\r\n"},
{"group.byname", config_exact, FALSE, NULL,
"(objectClass=posixGroup)",
"%{cn}", NULL,
"%{cn}:%regsub(\"%{userPassword}\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%regmatch(\"%{gidNumber}\",\"[0-9]+\"):%merge(\",\",\"%{memberUid}\",\"%deref_r(\\\"member\\\",\\\"uid\\\")\",\"%deref_r(\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred_r(\\\"group.byname\\\,\\\"memberOf\\\",\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", NULL,
- ":,"},
+ ":,\r\n"},
{"group.bygid", config_exact, FALSE, NULL,
"(objectClass=posixGroup)",
"%{gidNumber}", NULL,
"%{cn}:%regsub(\"%{userPassword}\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%{memberUid}\",\"%deref_r(\\\"member\\\",\\\"uid\\\")\",\"%deref_r(\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred_r(\\\"group.bygid\\\,\\\"memberOf\\\",\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", NULL,
- ":,"},
+ ":,\r\n"},
{"netgroup", config_exact, FALSE, NULL,
"(objectClass=nisNetgroup)",
"%{cn}", NULL,
diff --git a/src/format.c b/src/format.c
index c0f0e13..75d6db2 100644
--- a/src/format.c
+++ b/src/format.c
@@ -2803,10 +2803,48 @@ static char *
format_check_disallowed(const struct berval *bv, const char *disallowed)
{
int i;
+ unsigned char c;
char *p;
if (disallowed != NULL) {
for (i = 0; disallowed[i] != '\0'; i++) {
- p = memchr(bv->bv_val, disallowed[i], bv->bv_len);
+ c = disallowed[i];
+ if (c == '\\') {
+ switch (disallowed[i + 1]) {
+ case '\\':
+ c = '\\';
+ i++;
+ break;
+ case 'a':
+ c = '\a';
+ i++;
+ break;
+ case 'b':
+ c = '\b';
+ i++;
+ break;
+ case 'f':
+ c = '\f';
+ i++;
+ break;
+ case 'n':
+ c = '\n';
+ i++;
+ break;
+ case 'r':
+ c = '\r';
+ i++;
+ break;
+ case 't':
+ c = '\t';
+ i++;
+ break;
+ case 'v':
+ c = '\v';
+ i++;
+ break;
+ }
+ }
+ p = memchr(bv->bv_val, c, bv->bv_len);
if (p != NULL) {
return p;
}