Index: passdb/pdb_ldap.c =================================================================== --- passdb/pdb_ldap.c (Revision 11913) +++ passdb/pdb_ldap.c (Revision 11914) @@ -604,6 +604,8 @@ LOGIN_CACHE *cache_entry = NULL; uint32 pwHistLen; pstring tmpstring; + BOOL expand_explicit = lp_parm_bool(-1, "passdb", "expand_explicit", + False); /* * do a little initialization @@ -776,7 +778,10 @@ PDB_DEFAULT ); } else { pstrcpy( tmpstring, homedir ); - standard_sub_basic( username, tmpstring, sizeof(tmpstring) ); + if (expand_explicit) { + standard_sub_basic( username, tmpstring, + sizeof(tmpstring) ); + } pdb_set_homedir(sampass, tmpstring, PDB_SET); } @@ -788,7 +793,10 @@ PDB_DEFAULT ); } else { pstrcpy( tmpstring, logon_script ); - standard_sub_basic( username, tmpstring, sizeof(tmpstring) ); + if (expand_explicit) { + standard_sub_basic( username, tmpstring, + sizeof(tmpstring) ); + } pdb_set_logon_script(sampass, tmpstring, PDB_SET); } @@ -800,7 +808,10 @@ PDB_DEFAULT ); } else { pstrcpy( tmpstring, profile_path ); - standard_sub_basic( username, tmpstring, sizeof(tmpstring) ); + if (expand_explicit) { + standard_sub_basic( username, tmpstring, + sizeof(tmpstring) ); + } pdb_set_profile_path(sampass, tmpstring, PDB_SET); } Index: passdb/passdb.c =================================================================== --- passdb/passdb.c (Revision 11913) +++ passdb/passdb.c (Revision 11914) @@ -1756,6 +1756,8 @@ uint32 pwHistLen = 0; BOOL ret = True; fstring tmpstring; + BOOL expand_explicit = lp_parm_bool(-1, "passdb", "expand_explicit", + False); if(sampass == NULL || buf == NULL) { DEBUG(0, ("init_sam_from_buffer_v2: NULL parameters found!\n")); @@ -1820,7 +1822,10 @@ if (homedir) { fstrcpy( tmpstring, homedir ); - standard_sub_basic( username, tmpstring, sizeof(tmpstring) ); + if (expand_explicit) { + standard_sub_basic( username, tmpstring, + sizeof(tmpstring) ); + } pdb_set_homedir(sampass, tmpstring, PDB_SET); } else { @@ -1836,7 +1841,10 @@ if (logon_script) { fstrcpy( tmpstring, logon_script ); - standard_sub_basic( username, tmpstring, sizeof(tmpstring) ); + if (expand_explicit) { + standard_sub_basic( username, tmpstring, + sizeof(tmpstring) ); + } pdb_set_logon_script(sampass, tmpstring, PDB_SET); } else { @@ -1847,7 +1855,10 @@ if (profile_path) { fstrcpy( tmpstring, profile_path ); - standard_sub_basic( username, tmpstring, sizeof(tmpstring) ); + if (expand_explicit) { + standard_sub_basic( username, tmpstring, + sizeof(tmpstring) ); + } pdb_set_profile_path(sampass, tmpstring, PDB_SET); } else {