]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
smb: Use endian functions for reading NBT and message size values
authorSteve Holme <steve_holme@hotmail.com>
Thu, 1 Jan 2015 20:48:05 +0000 (20:48 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Thu, 1 Jan 2015 20:48:05 +0000 (20:48 +0000)
lib/smb.c

index 3fbbf0ea5e401ec31ef380734afd0a2157a75c7f..e66427ba3b231e32b8b4bfc1215812ef19ae8a3e 100644 (file)
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -306,8 +306,8 @@ static CURLcode smb_recv_message(struct connectdata *conn, void **msg)
   if(smbc->got < sizeof(unsigned int))
     return CURLE_OK;
 
-  nbt_size = ntohs(*(unsigned short *)(buf + sizeof(unsigned short))) +
-                   sizeof(unsigned int);
+  nbt_size = Curl_read16_be((unsigned char *)(buf + sizeof(unsigned short))) +
+             sizeof(unsigned int);
   if(smbc->got < nbt_size)
     return CURLE_OK;
 
@@ -317,8 +317,8 @@ static CURLcode smb_recv_message(struct connectdata *conn, void **msg)
     msg_size += 1 + ((unsigned char) buf[msg_size]) * sizeof(unsigned short);
     if(nbt_size >= msg_size + sizeof(unsigned short)) {
       /* Add the byte count */
-      msg_size += sizeof(unsigned short) + ((unsigned char) buf[msg_size]) +
-                         (((size_t) ((unsigned char) buf[msg_size + 1])) << 8);
+      msg_size += sizeof(unsigned short) +
+                  Curl_read16_le((unsigned char *)&buf[msg_size]);
       if(nbt_size < msg_size)
         return CURLE_READ_ERROR;
     }