From 12b34912086ff5007ac14e6397f622ad3ac98ad1 Mon Sep 17 00:00:00 2001 From: Petro Karashchenko <petro.karashchenko@gmail.com> Date: Mon, 13 Dec 2021 21:22:59 +0200 Subject: [PATCH] libc/textdomain: Fix error behaviour - textdomain should set errno to ENOMEM in case if it is not possible to store domainname - fix buffer overflow in textdomain if domainname is a string of NAME_MAX length - improve textdomain error detection in case if domainname points to non null terminated buffer Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com> --- libs/libc/locale/lib_gettext.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/libc/locale/lib_gettext.c b/libs/libc/locale/lib_gettext.c index d0c52d85de..cb16c2eb45 100644 --- a/libs/libc/locale/lib_gettext.c +++ b/libs/libc/locale/lib_gettext.c @@ -373,10 +373,10 @@ FAR char *textdomain(FAR const char *domainname) return *domain ? domain : "messages"; } - domainlen = strlen(domainname); - if (domainlen > NAME_MAX) + domainlen = strnlen(domainname, NAME_MAX); + if (domainlen == NAME_MAX) { - set_errno(EINVAL); + set_errno(ENOMEM); return NULL; }