2006-08-15 09:16:48

by Al Viro

[permalink] [raw]
Subject: [PATCH] endianness bitrot in cifs

le16 compared to host-endian constant
u8 fed to le32_to_cpu()
le16 compared to host-endian constant

Signed-off-by: Al Viro <[email protected]>
----

diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 19678c5..6a76ae5 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -477,7 +477,7 @@ #ifdef CONFIG_CIFS_WEAK_PW_HASH
/* BB get server time for time conversions and add
code to use it and timezone since this is not UTC */

- if (rsp->EncryptionKeyLength == CIFS_CRYPTO_KEY_SIZE) {
+ if (rsp->EncryptionKeyLength == cpu_to_le16(CIFS_CRYPTO_KEY_SIZE)) {
memcpy(server->cryptKey, rsp->EncryptionKey,
CIFS_CRYPTO_KEY_SIZE);
} else if (server->secMode & SECMODE_PW_ENCRYPT) {
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index 03bbcb3..105761e 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -556,7 +556,7 @@ static int cifs_entry_is_dot(char *curre
FIND_FILE_STANDARD_INFO * pFindData =
(FIND_FILE_STANDARD_INFO *)current_entry;
filename = &pFindData->FileName[0];
- len = le32_to_cpu(pFindData->FileNameLength);
+ len = pFindData->FileNameLength;
} else {
cFYI(1,("Unknown findfirst level %d",cfile->srch_inf.info_level));
}
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
index 7202d53..d1705ab 100644
--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -372,7 +372,7 @@ #ifdef CONFIG_CIFS_WEAK_PW_HASH

/* no capabilities flags in old lanman negotiation */

- pSMB->old_req.PasswordLength = CIFS_SESS_KEY_SIZE;
+ pSMB->old_req.PasswordLength = cpu_to_le16(CIFS_SESS_KEY_SIZE);
/* BB calculate hash with password */
/* and copy into bcc */


2006-08-15 13:38:57

by Steve French

[permalink] [raw]
Subject: Re: [PATCH] endianness bitrot in cifs

Al Viro wrote:
> le16 compared to host-endian constant
> u8 fed to le32_to_cpu()
> le16 compared to host-endian constant
>

Thanks - I have applied this to the cifs git tree so should be in mm soon.
Fortunately this only hit the relatively new lanman support (e.g. Win9x
and OS/2 server support not as common anymore - but was needed before
smbfs deprecation).