[CIFS] Fix mount failure when domain not specified

Fixes Samba bugzilla #4176

When users do not specify their domain on mount, 2.6.18 started sending
default domain instead of a null domain (which was the only way on some
servers to use a default domain). Users of 2.6.18 who did not specify
their domain name on mounts to certain common Windows servers that were
members of a domain, but not the domain controller, would get mount
failures which they did not get in 2.6.18

This fixes that issue and should remove complaints about mount
behavior changing.

Signed-off-by: Steve French <sfrench@us.ibm.com>

+13 -10
+13 -10
fs/cifs/sess.c
··· 90 90 } */ 91 91 /* copy user */ 92 92 if(ses->userName == NULL) { 93 - /* BB what about null user mounts - check that we do this BB */ 93 + /* null user mount */ 94 + *bcc_ptr = 0; 95 + *(bcc_ptr+1) = 0; 94 96 } else { /* 300 should be long enough for any conceivable user name */ 95 97 bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, ses->userName, 96 98 300, nls_cp); ··· 100 98 bcc_ptr += 2 * bytes_ret; 101 99 bcc_ptr += 2; /* account for null termination */ 102 100 /* copy domain */ 103 - if(ses->domainName == NULL) 104 - bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, 105 - "CIFS_LINUX_DOM", 32, nls_cp); 106 - else 101 + if(ses->domainName == NULL) { 102 + /* Sending null domain better than using a bogus domain name (as 103 + we did briefly in 2.6.18) since server will use its default */ 104 + *bcc_ptr = 0; 105 + *(bcc_ptr+1) = 0; 106 + bytes_ret = 0; 107 + } else 107 108 bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, ses->domainName, 108 109 256, nls_cp); 109 110 bcc_ptr += 2 * bytes_ret; ··· 149 144 150 145 /* copy domain */ 151 146 152 - if(ses->domainName == NULL) { 153 - strcpy(bcc_ptr, "CIFS_LINUX_DOM"); 154 - bcc_ptr += 14; /* strlen(CIFS_LINUX_DOM) */ 155 - } else { 147 + if(ses->domainName != NULL) { 156 148 strncpy(bcc_ptr, ses->domainName, 256); 157 149 bcc_ptr += strnlen(ses->domainName, 256); 158 - } 150 + } /* else we will send a null domain name 151 + so the server will default to its own domain */ 159 152 *bcc_ptr = 0; 160 153 bcc_ptr++; 161 154