From ae236f5ccf64fed807e31d1f070b7b37ea8497c2 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Wed, 28 Jan 2026 18:56:03 -0800 Subject: [PATCH] assert element size does not overflow the simple buffer in radsort --- src/third_party/radsort/radsort.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/third_party/radsort/radsort.h b/src/third_party/radsort/radsort.h index 9850a6ff..90a971ba 100644 --- a/src/third_party/radsort/radsort.h +++ b/src/third_party/radsort/radsort.h @@ -112,8 +112,15 @@ typedef void rs_small_sort_func( void * left, size_t n, size_t element_size, is_ #define RS_SMALL_FLIP_TO_INSERTION_GT_SIZE sizeof( size_t ) typedef struct RS_MAX_BUBBLE_BUF { char b[RS_SMALL_FLIP_TO_INSERTION_GT_SIZE]; } RS_MAX_BUBBLE_BUF; +#if _MSC_VER +# define radsort_break_ __debugbreak() +#else +# define radsort_break_ ___builtin_trap() +#endif + #define radsort( start, len, is_before_func ) \ do { \ +if (sizeof((start)[0]) > sizeof(RS_MAX_SIMPLE_BUF)) { radsort_break_; } \ char __rs_tmp[ sizeof( (start)[0] ) ]; \ radsortinternal( start, len, sizeof( (start)[0] ), \ is_before_func, \