[PATCH 04/25] common/idpf: update in PTP message validation
Bruce Richardson
bruce.richardson at intel.com
Wed May 29 15:03:39 CEST 2024
On Tue, May 28, 2024 at 07:28:34AM +0000, Soumyadeep Hore wrote:
> When the message for getting timestamp latches is sent by the driver,
> number of latches is equal to 0. Current implementation of message
> validation function incorrectly notifies this kind of message length as
> invalid.
>
This description doesn't seem to match what the code is doing here.
The code change below is changing the check on the message length from
checking for >88 bytes rather than >= 88 bytes. This doesn't seem to have
anything to do with not returning error when latches == 0. That check is a
few lines further in the code block and is unmodified by this patch:
1872 > case VIRTCHNL2_OP_GET_PTP_CAPS:
1873 > > valid_len = sizeof(struct virtchnl2_get_ptp_caps);
1874
1875 > > if (msglen >= valid_len) {
1876 > > > struct virtchnl2_get_ptp_caps *ptp_caps =
1877 > > > (struct virtchnl2_get_ptp_caps *)msg;
1878
1879 > > > if (ptp_caps->tx_tstamp.num_latches == 0) {
This is the check for 0 ^^^^
1880 > > > > err_msg_format = true;
1881 > > > > break;
1882 > > > }
1883
1884 > > > valid_len += ((ptp_caps->tx_tstamp.num_latches - 1) *
1885 > > > > sizeof(struct virtchnl2_ptp_tx_tstamp_entry));
But alowing num_latches == 0 would make this calculation overflow ^^^^
1886 > > }
1887 > > break;
> Signed-off-by: Soumyadeep Hore <soumyadeep.hore at intel.com>
> ---
> drivers/common/idpf/base/virtchnl2.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/common/idpf/base/virtchnl2.h b/drivers/common/idpf/base/virtchnl2.h
> index f44c0965b4..9a1310ca24 100644
> --- a/drivers/common/idpf/base/virtchnl2.h
> +++ b/drivers/common/idpf/base/virtchnl2.h
> @@ -1873,7 +1873,7 @@ virtchnl2_vc_validate_vf_msg(__rte_unused struct virtchnl2_version_info *ver, u3
> case VIRTCHNL2_OP_GET_PTP_CAPS:
> valid_len = sizeof(struct virtchnl2_get_ptp_caps);
>
> - if (msglen >= valid_len) {
> + if (msglen > valid_len) {
> struct virtchnl2_get_ptp_caps *ptp_caps =
> (struct virtchnl2_get_ptp_caps *)msg;
>
> @@ -1889,7 +1889,7 @@ virtchnl2_vc_validate_vf_msg(__rte_unused struct virtchnl2_version_info *ver, u3
> case VIRTCHNL2_OP_GET_PTP_TX_TSTAMP_LATCHES:
> valid_len = sizeof(struct virtchnl2_ptp_tx_tstamp_latches);
>
> - if (msglen >= valid_len) {
> + if (msglen > valid_len) {
> struct virtchnl2_ptp_tx_tstamp_latches *tx_tstamp_latches =
> (struct virtchnl2_ptp_tx_tstamp_latches *)msg;
>
> --
> 2.43.0
>
More information about the dev
mailing list