diff --git a/libfreerdp/core/info.c b/libfreerdp/core/info.c index 5421ee85b..fc99b912f 100644 --- a/libfreerdp/core/info.c +++ b/libfreerdp/core/info.c @@ -285,7 +285,8 @@ static BOOL rdp_read_extended_info_packet(rdpRdp* rdp, wStream* s) { ptrconv.bp = Stream_Pointer(s); - if (ptrconv.wp[cbClientAddress / 2 - 1]) + if ((cbClientAddress < sizeof(WCHAR)) || (ptrconv.bp[cbClientAddress - 1]) || + (ptrconv.bp[cbClientAddress - 2])) { WLog_ERR(TAG, "protocol error: clientAddress must be null terminated"); return FALSE; @@ -334,7 +335,8 @@ static BOOL rdp_read_extended_info_packet(rdpRdp* rdp, wStream* s) { ptrconv.bp = Stream_Pointer(s); - if (ptrconv.wp[cbClientDir / 2 - 1]) + if ((cbClientDir < sizeof(WCHAR)) || (ptrconv.bp[cbClientDir - 1]) || + (ptrconv.bp[cbClientDir - 2])) { WLog_ERR(TAG, "protocol error: clientDir must be null terminated"); return FALSE;