summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/lib/username.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/source3/lib/username.c b/source3/lib/username.c
index a9f6425991..a7241d309f 100644
--- a/source3/lib/username.c
+++ b/source3/lib/username.c
@@ -82,11 +82,19 @@ void map_username(char *user)
for (; (s=fgets_slash(NULL,80,f)); free(s)) {
char *unixname = s;
char *dosname = strchr(unixname,'=');
+ BOOL break_if_mapped = False;
if (!dosname) continue;
*dosname++ = 0;
while (isspace(*unixname)) unixname++;
+ if ('!' == *unixname)
+ {
+ break_if_mapped = True;
+ unixname++;
+ while (*unixname && isspace(*unixname)) unixname++;
+ }
+
if (!*unixname || strchr("#;",*unixname)) continue;
{
@@ -102,6 +110,10 @@ void map_username(char *user)
StrnCpy(last_from,user,sizeof(last_from)-1);
sscanf(unixname,"%s",user);
StrnCpy(last_to,user,sizeof(last_to)-1);
+ if(break_if_mapped) {
+ free(s);
+ break;
+ }
}
}