io/channel-socket: qio_channel_socket_flush(): improve msg validation
For SO_EE_ORIGIN_ZEROCOPY the 32-bit notification range is encoded as [ee_info, ee_data] inclusively, so ee_info should be less or equal to ee_data. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Maksim Davydov <davydov-max@yandex-team.ru> Message-id: 20231017125941.810461-7-vsementsov@yandex-team.ru Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
59a3aff685
commit
35bafa95da
@ -782,6 +782,11 @@ static int qio_channel_socket_flush(QIOChannel *ioc,
|
||||
"Error not from zero copy");
|
||||
return -1;
|
||||
}
|
||||
if (serr->ee_data < serr->ee_info) {
|
||||
error_setg_errno(errp, serr->ee_origin,
|
||||
"Wrong notification bounds");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* No errors, count successfully finished sendmsg()*/
|
||||
sioc->zero_copy_sent += serr->ee_data - serr->ee_info + 1;
|
||||
|
Loading…
Reference in New Issue
Block a user