From 8c5026e9cbb4931adea7b3bbfa69e9f00b36e4b2 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Thu, 29 May 2025 10:51:49 +0800 Subject: [PATCH] fix overflow warning Signed-off-by: sakumisu <1203593632@qq.com> --- class/cdc/usbh_cdc_ncm.c | 2 +- class/hid/usbh_hid.c | 6 +++--- class/vendor/net/usbh_asix.c | 2 +- class/vendor/net/usbh_rtl8152.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/class/cdc/usbh_cdc_ncm.c b/class/cdc/usbh_cdc_ncm.c index e87f2f8e..7e35da36 100644 --- a/class/cdc/usbh_cdc_ncm.c +++ b/class/cdc/usbh_cdc_ncm.c @@ -52,7 +52,7 @@ static int usbh_cdc_ncm_get_ntb_parameters(struct usbh_cdc_ncm *cdc_ncm_class, s return ret; } - memcpy((uint8_t *)param, g_cdc_ncm_buf, ret - 8); + memcpy((uint8_t *)param, g_cdc_ncm_buf, MIN(ret - 8, sizeof(struct cdc_ncm_ntb_parameters))); return 0; } diff --git a/class/hid/usbh_hid.c b/class/hid/usbh_hid.c index ac454cb3..cb407f54 100644 --- a/class/hid/usbh_hid.c +++ b/class/hid/usbh_hid.c @@ -106,7 +106,7 @@ int usbh_hid_get_idle(struct usbh_hid *hid_class, uint8_t *buffer) if (ret < 8) { return ret; } - memcpy(buffer, g_hid_buf[hid_class->minor], ret - 8); + memcpy(buffer, g_hid_buf[hid_class->minor], MIN(ret - 8, 1)); return ret; } @@ -148,7 +148,7 @@ int usbh_hid_get_protocol(struct usbh_hid *hid_class, uint8_t *protocol) if (ret < 8) { return ret; } - memcpy(protocol, g_hid_buf[hid_class->minor], ret - 8); + memcpy(protocol, g_hid_buf[hid_class->minor], MIN(ret - 8, 1)); return ret; } @@ -190,7 +190,7 @@ int usbh_hid_get_report(struct usbh_hid *hid_class, uint8_t report_type, uint8_t if (ret < 8) { return ret; } - memcpy(buffer, g_hid_buf[hid_class->minor], ret - 8); + memcpy(buffer, g_hid_buf[hid_class->minor], MIN(ret - 8, buflen)); return ret; } diff --git a/class/vendor/net/usbh_asix.c b/class/vendor/net/usbh_asix.c index f788b3ae..60b64472 100644 --- a/class/vendor/net/usbh_asix.c +++ b/class/vendor/net/usbh_asix.c @@ -74,7 +74,7 @@ static int usbh_asix_read_cmd(struct usbh_asix *asix_class, if (ret < 8) { return ret; } - memcpy(data, g_asix_buf, ret - 8); + memcpy(data, g_asix_buf, MIN(ret - 8, size)); return ret; } diff --git a/class/vendor/net/usbh_rtl8152.c b/class/vendor/net/usbh_rtl8152.c index 99f588c6..60fec839 100644 --- a/class/vendor/net/usbh_rtl8152.c +++ b/class/vendor/net/usbh_rtl8152.c @@ -965,7 +965,7 @@ static int usbh_rtl8152_read_regs(struct usbh_rtl8152 *rtl8152_class, if (ret < 8) { return ret; } - memcpy(data, g_rtl8152_buf, ret - 8); + memcpy(data, g_rtl8152_buf, MIN(ret - 8, size)); return ret; }