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.
This commit is contained in:
Lennart Poettering
2021-10-14 15:57:52 +02:00
parent 5222651ecc
commit 2f82562bad
60 changed files with 164 additions and 131 deletions
+2 -1
View File
@@ -438,7 +438,8 @@ static int resolve_remote(Connection *c) {
service = strrchr(arg_remote_host, ':');
if (service) {
node = strndupa(arg_remote_host, service - arg_remote_host);
node = strndupa_safe(arg_remote_host,
service - arg_remote_host);
service++;
} else {
node = arg_remote_host;