From fc48a7913d2fca168e93c551e21cd9f15842c460 Mon Sep 17 00:00:00 2001 From: Aidan Lakshman <30053966+ahl27@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:03:16 -0400 Subject: [PATCH 1/2] Fix potential integer overflow bug with comparisons in `sort_utils.c` --- src/sort_utils.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sort_utils.c b/src/sort_utils.c index cd8b234..969c277 100644 --- a/src/sort_utils.c +++ b/src/sort_utils.c @@ -14,9 +14,11 @@ static const int *aa, *bb, *cc, *dd; static int aa_desc, bb_desc, cc_desc, dd_desc; +#define CMP_INTS(a, b) (((a) > (b)) - ((a) < (b))) + #define COMPARE_TARGET_INTS(target, i1, i2, desc) \ - ((desc) ? (target)[(i2)] - (target)[(i1)] \ - : (target)[(i1)] - (target)[(i2)]) + ((desc) ? CMP_INTS((target)[(i2)], (target)[(i1)]) \ + : CMP_INTS((target)[(i1)], (target)[(i2)])) static int compar1_stable(const void *p1, const void *p2) { From 14621385542b56f98f54900353cf969bd0965b65 Mon Sep 17 00:00:00 2001 From: Aidan Lakshman <30053966+ahl27@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:16:24 -0400 Subject: [PATCH 2/2] reformat macros for better readability --- src/sort_utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sort_utils.c b/src/sort_utils.c index 969c277..c57f121 100644 --- a/src/sort_utils.c +++ b/src/sort_utils.c @@ -16,9 +16,9 @@ static int aa_desc, bb_desc, cc_desc, dd_desc; #define CMP_INTS(a, b) (((a) > (b)) - ((a) < (b))) -#define COMPARE_TARGET_INTS(target, i1, i2, desc) \ - ((desc) ? CMP_INTS((target)[(i2)], (target)[(i1)]) \ - : CMP_INTS((target)[(i1)], (target)[(i2)])) +#define COMPARE_TARGET_INTS(target, i1, i2, desc) \ + ((desc) ? CMP_INTS((target)[(i2)], (target)[(i1)]) \ + : CMP_INTS((target)[(i1)], (target)[(i2)])) static int compar1_stable(const void *p1, const void *p2) {