From: Steve Holme Date: Thu, 1 Jan 2015 20:48:05 +0000 (+0000) Subject: smb: Use endian functions for reading NBT and message size values X-Git-Tag: curl-7_40_0~37 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a3daf542adb63dbf7632fab0166ec26cb231b1c1;p=thirdparty%2Fcurl.git smb: Use endian functions for reading NBT and message size values --- diff --git a/lib/smb.c b/lib/smb.c index 3fbbf0ea5e..e66427ba3b 100644 --- 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; }