known BUG "multi-byte character set in usernames"

Juergen Hasch Hasch at t-online.de
Thu Jun 6 12:10:45 GMT 2002


Am Donnerstag, 6. Juni 2002 01:19 schrieb Jeremy Allison:
> On Thu, Jun 06, 2002 at 12:12:45AM +0200, Juergen Hasch wrote:
> > the patch works fine for except for one thing. In the acl security
> > selection list (showing a list of all available users and groups) the
> > german umlaut characters are wrong. This is because the unix charset is
> > sent to the windows client, as no conversion back takes place.
> > The acl dialogue itself is ok.
> >
> > I haven't found out yet, where the conversion back to dos code page
> > should take place. Do you have an idea ?
>
> Can you CVS update SAMBA_2_2 - I've just applied a patch I think
> should fix this.

not yet :-)

The diff below shows what I changed to make it work AFAICS:

--- srv_lsa_nt.c.orig   Wed Jun  5 23:52:45 2002
+++ srv_lsa_nt.c        Thu Jun  6 20:53:05 2002
@@ -152,6 +152,8 @@
                /* Split name into domain and user component */

                pstrcpy(full_name, dos_unistr2_to_str(&name[i]));
+               dos_to_unix(full_name);
                split_domain_name(full_name, dom_name, user);

                /* Lookup name */
--- srv_samr_nt.c.orig  Fri Mar 29 22:53:33 2002
+++ srv_samr_nt.c       Thu Jun  6 20:40:50 2002
@@ -660,6 +660,8 @@
                int len = strlen(grp[i].name)+1;

                init_sam_entry(&sam[i], len, grp[i].rid);
+               unix_to_dos(grp[i].name);
                init_unistr2(&uni_name[i], grp[i].name, len);
        }

--- winbindd_rpc.c.orig Wed Jun  5 23:52:44 2002
+++ winbindd_rpc.c      Thu Jun  6 20:22:23 2002
@@ -206,6 +206,7 @@
        DOM_SID *sids = NULL;
        uint32 *types = NULL;
        const char *full_name;
+       fstring dos_name;

        if (!(mem_ctx = talloc_init_named("name_to_sid[rpc] for [%s]\\[%s]", 
domain->name, name))) {
                DEBUG(0, ("talloc_init failed!\n"));
@@ -216,8 +217,9 @@
                talloc_destroy(mem_ctx);
                return NT_STATUS_UNSUCCESSFUL;
        }
-
-       full_name = talloc_asprintf(mem_ctx, "%s\\%s", domain->name, name);
+        fstrcpy(dos_name,name);
+       unix_to_dos(dos_name);
+       full_name = talloc_asprintf(mem_ctx, "%s\\%s", domain->name, 
dos_name);

        if (!full_name) {
                DEBUG(0, ("talloc_asprintf failed!\n"));

The conversion in srv_samr_nt.c is needed to show the correct group list in 
the ACL->add dialogue. The conversion in lsa_srv_nt.c is needed to set a new 
ACL entry in unix codepage after selecting it from the list.
The change in winbind_rpc.c is needed to get "wbinfo -n" working.

...Juergen





More information about the samba-technical mailing list