s3: Fix \name handed into WINBINDD_LOOKUPNAME
authorVolker Lendecke <vl@samba.org>
Thu, 8 Sep 2011 14:43:06 +0000 (16:43 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 11 Oct 2011 13:21:11 +0000 (15:21 +0200)
This fooled winbind into believing we have a qualified name

source3/winbindd/winbindd_lookupname.c

index 4298e5956861c7037d58bb6ec679d82a5dc92d53..615bb1afc21a954885e44fdb6c96927a61f1e410 100644 (file)
@@ -53,20 +53,28 @@ struct tevent_req *winbindd_lookupname_send(TALLOC_CTX *mem_ctx,
                   request->data.name.dom_name,
                   request->data.name.name));
 
+       name = request->data.name.name;
+
+       while (strchr(lp_winbind_separator(), name[0]) != NULL) {
+               /*
+                * Skip leading winbind separators, they lead us to
+                * believe we have a qualified name.
+                */
+               name += 1;
+       }
+
        /* cope with the name being a fully qualified name */
-       p = strstr(request->data.name.name, lp_winbind_separator());
+       p = strstr(name, lp_winbind_separator());
        if (p) {
                *p = 0;
-               domname = request->data.name.name;
+               domname = name;
                name = p+1;
-       } else if ((p = strchr(request->data.name.name, '@')) != NULL) {
+       } else if ((p = strchr(name, '@')) != NULL) {
                /* upn */
                domname = p + 1;
                *p = 0;
-               name = request->data.name.name;
        } else {
                domname = request->data.name.dom_name;
-               name = request->data.name.name;
        }
 
        DEBUG(3, ("lookupname %s%s%s\n", domname, lp_winbind_separator(),