diff -Naurp --exclude CVS --exclude ChangeLog --exclude VERSION --exclude Makefile old/libselinux/src/seusers.c new/libselinux/src/seusers.c --- old/libselinux/src/seusers.c 2005-11-04 09:33:06.000000000 -0500 +++ new/libselinux/src/seusers.c 2005-11-04 09:31:54.000000000 -0500 @@ -19,6 +19,7 @@ static int process_seusers(const char *b char *newbuf = strdup(buffer); char *luser = NULL, *seuser = NULL, *level = NULL; char *start, *end; + int mls_found = 1; if (!newbuf) goto err; @@ -42,8 +43,8 @@ static int process_seusers(const char *b start = end+1; end = strchr(start, ':'); if (!end) { - if (mls_enabled) - goto err; /* no MLS level and MLS is enabled */ + mls_found = 0; + /* MLS is disabled, so :level suffix not required. */ end = start; while (*end && !isspace(*end)) @@ -55,7 +56,7 @@ static int process_seusers(const char *b if (!seuser) goto err; - if (!mls_enabled) + if (!mls_enabled || !mls_found) goto out; /* skip any MLS level */ start = ++end; @@ -63,11 +64,9 @@ static int process_seusers(const char *b end++; *end = 0; - if (*start && !isspace(*start)) { - level = strdup(start); - if (!level) - goto err; - } + level = strdup(start); + if (!level) + goto err; out: free(newbuf);