From: Adhemerval Zanella Date: Fri, 18 Apr 2025 12:27:29 +0000 (-0300) Subject: locale: Fix UB on insert_weights X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=915959c55d2ebe05b7a3b31f633fc17d4f7f913b;p=thirdparty%2Fglibc.git locale: Fix UB on insert_weights 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. --- 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;