[PATCH 09/11] locale: Fix UB on add_locale_uint32_array
Adhemerval Zanella
adhemerval.zanella@linaro.org
Wed May 7 14:17:27 GMT 2025
The ubsan triggers:
UBSAN: Undefined behaviour in programs/locfile.c:644:3 null pointer passed as argument 2, nonnull attribute declared at unknown:0:0
The obstack_grow is only required if there is extra elements to be
inserted (n_elems > 0).
---
locale/programs/locfile.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
index b54fcbbceb..7907c949ea 100644
--- a/locale/programs/locfile.c
+++ b/locale/programs/locfile.c
@@ -641,6 +641,8 @@ add_locale_uint32_array (struct locale_file *file,
{
align_locale_data (file, LOCFILE_ALIGN);
record_offset (file);
+ if (n_elems == 0)
+ return;
obstack_grow (&file->data, data, n_elems * sizeof (uint32_t));
maybe_swap_uint32_obstack (&file->data, n_elems);
}
--
2.43.0
More information about the Libc-alpha
mailing list