summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorHiFiPhile <[email protected]>2025-10-11 16:53:35 +0200
committerHiFiPhile <[email protected]>2025-10-11 16:53:35 +0200
commitb9b1c6432a7be43297afb0a75621ece5fc63f3a5 (patch)
treecd7639e4b3a5782fb78f20a3b96f24d69577508c /src/common
parente0a589cdcae6eaf790d05712a6f2b8c0352fb5fd (diff)
parent2e29d1c60d119b2aa71e36d0c1ac2a383e333076 (diff)
Merge branch 'master' into dwc2_iso_incomp
Diffstat (limited to 'src/common')
-rw-r--r--src/common/tusb_common.h24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/common/tusb_common.h b/src/common/tusb_common.h
index 9c4699362..6393652a3 100644
--- a/src/common/tusb_common.h
+++ b/src/common/tusb_common.h
@@ -35,6 +35,7 @@
// Macros Helper
//--------------------------------------------------------------------+
#define TU_ARRAY_SIZE(_arr) ( sizeof(_arr) / sizeof(_arr[0]) )
+#define TU_FIELD_SIZE(_type, _field) (sizeof(((_type *)0)->_field))
#define TU_MIN(_x, _y) ( ( (_x) < (_y) ) ? (_x) : (_y) )
#define TU_MAX(_x, _y) ( ( (_x) > (_y) ) ? (_x) : (_y) )
#define TU_DIV_CEIL(n, d) (((n) + (d) - 1) / (d))
@@ -108,20 +109,35 @@ extern void* tusb_app_phys_to_virt(void *phys_addr);
// This is a backport of memset_s from c11
TU_ATTR_ALWAYS_INLINE static inline int tu_memset_s(void *dest, size_t destsz, int ch, size_t count) {
- // TODO may check if desst and src is not NULL
- if ( count > destsz ) {
+ // Validate parameters
+ if (dest == NULL) {
return -1;
}
+
+ if (count > destsz) {
+ return -1;
+ }
+
memset(dest, ch, count);
return 0;
}
// This is a backport of memcpy_s from c11
TU_ATTR_ALWAYS_INLINE static inline int tu_memcpy_s(void *dest, size_t destsz, const void *src, size_t count) {
- // TODO may check if desst and src is not NULL
- if ( count > destsz ) {
+ // Validate parameters
+ if (dest == NULL) {
return -1;
}
+
+ // For memcpy, src may be NULL only if count == 0. Reject otherwise.
+ if (src == NULL && count != 0) {
+ return -1;
+ }
+
+ if (count > destsz) {
+ return -1;
+ }
+
memcpy(dest, src, count);
return 0;
}