[PATCH 06/11] locale: Fix UB on insert_weights
Adhemerval Zanella
adhemerval.zanella@linaro.org
Wed May 7 14:17:24 GMT 2025
The ubsan triggers:
UBSAN: Undefined behaviour in programs/ld-collate.c:862:5 null pointer passed as argument 2, nonnull attribute declared at unknown:0:0,
The memcpy is only requires if current 'weights' is nonnull, so
check it before calling it.
---
locale/programs/ld-collate.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 7de3ba064d..4fa08bd273 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -858,7 +858,8 @@ insert_weights (struct linereader *ldfile, struct element_t *elem,
max += 10;
newp = (struct element_t **)
alloca (max * sizeof (struct element_t *));
- memcpy (newp, weights, cnt * sizeof (struct element_t *));
+ if (weights != NULL)
+ memcpy (newp, weights, cnt * sizeof (struct element_t *));
weights = newp;
}
weights[cnt++] = charelem;
--
2.43.0
More information about the Libc-alpha
mailing list