From 6cc167783ed5948a51639c44b962bbc0c6f901de Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Sat, 18 Jan 2025 21:50:56 +0100 Subject: [PATCH] lib/string/strdup/: STRDUPA(): Add macro This is like strdupa(3), but we make sure that the argument is a string literal, which makes sure that we won't have a stack overflow. Signed-off-by: Alejandro Colomar --- lib/Makefile.am | 2 ++ lib/string/strdup/strdupa.c | 7 +++++++ lib/string/strdup/strdupa.h | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 lib/string/strdup/strdupa.c create mode 100644 lib/string/strdup/strdupa.h diff --git a/lib/Makefile.am b/lib/Makefile.am index e76e7446a9..568049e77f 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -202,6 +202,8 @@ libshadow_la_SOURCES = \ string/strcpy/strncpy.h \ string/strcpy/strtcpy.c \ string/strcpy/strtcpy.h \ + string/strdup/strdupa.c \ + string/strdup/strdupa.h \ string/strdup/strndupa.c \ string/strdup/strndupa.h \ string/strdup/xstrdup.c \ diff --git a/lib/string/strdup/strdupa.c b/lib/string/strdup/strdupa.c new file mode 100644 index 0000000000..0263f8468d --- /dev/null +++ b/lib/string/strdup/strdupa.c @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "string/strdup/strdupa.h" diff --git a/lib/string/strdup/strdupa.h b/lib/string/strdup/strdupa.h new file mode 100644 index 0000000000..bb7901fab2 --- /dev/null +++ b/lib/string/strdup/strdupa.h @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_STRDUP_STRDUPA_H_ +#define SHADOW_INCLUDE_LIB_STRING_STRDUP_STRDUPA_H_ + + +#include + +#include + + +// strdupa(3), but make sure that the argument is a string literal. +#define STRDUPA(s) strdupa("" s "") + + +#endif // include guard