mirror of
				https://github.com/libssh2/libssh2.git
				synced 2025-10-30 12:05:34 +03:00 
			
		
		
		
	_libssh2_ntohu64: fix conversion from network bytes to uint64
Cast individual bytes to uint64 to avoid overflow in arithmetic.
This commit is contained in:
		| @@ -156,8 +156,10 @@ _libssh2_ntohu64(const unsigned char *buf) | ||||
| { | ||||
|     unsigned long msl, lsl; | ||||
|  | ||||
|     msl = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; | ||||
|     lsl = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7]; | ||||
|     msl = ((libssh2_uint64_t)buf[0] << 24) | ((libssh2_uint64_t)buf[1] << 16) | ||||
|         | ((libssh2_uint64_t)buf[2] << 8) | (libssh2_uint64_t)buf[3]; | ||||
|     lsl = ((libssh2_uint64_t)buf[4] << 24) | ((libssh2_uint64_t)buf[5] << 16) | ||||
|         | ((libssh2_uint64_t)buf[6] << 8) | (libssh2_uint64_t)buf[7]; | ||||
|  | ||||
|     return ((libssh2_uint64_t)msl <<32) | lsl; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user