summaryrefslogtreecommitdiff
path: root/src/locale
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-10-13 12:38:37 +0200
committerLennart Poettering <lennart@poettering.net>2021-10-14 15:57:52 +0200
commit2f82562bad423d1190912a4b209647dfac966db2 (patch)
tree766d61a085ee9674d8034351a83f64bcdf5d45bb /src/locale
parent5222651ecc6f46391e5e0d9cf19793bfe65b0ec8 (diff)
downloadsystemd-2f82562bad423d1190912a4b209647dfac966db2.tar.gz
alloc-util: add strdupa_safe() + strndupa_safe() and use it everywhere
Let's define two helpers strdupa_safe() + strndupa_safe() which do the same as their non-safe counterparts, except that they abort if called with allocations larger than ALLOCA_MAX. This should ensure that all our alloca() based allocations are subject to this limit. afaics glibc offers three alloca() based APIs: alloca() itself, strndupa() + strdupa(). With this we have now replacements for all of them, that take the limit into account.
Diffstat (limited to 'src/locale')
-rw-r--r--src/locale/keymap-util.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
index 32af23d692..1bd8f5c0ae 100644
--- a/src/locale/keymap-util.c
+++ b/src/locale/keymap-util.c
@@ -648,9 +648,10 @@ int find_legacy_keymap(Context *c, char **ret) {
*/
char *l, *v = NULL, *converted;
- l = strndupa(c->x11_layout, strcspn(c->x11_layout, ","));
+ l = strndupa_safe(c->x11_layout, strcspn(c->x11_layout, ","));
if (c->x11_variant)
- v = strndupa(c->x11_variant, strcspn(c->x11_variant, ","));
+ v = strndupa_safe(c->x11_variant,
+ strcspn(c->x11_variant, ","));
r = find_converted_keymap(l, v, &converted);
if (r < 0)
return r;