From e2b812c8045b574fa164d850ef50f426ae9e1df5 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Thu, 9 May 2024 22:01:07 +0800 Subject: [PATCH] string-util: introduce string_is_safe_ascii helper --- src/basic/string-util.h | 4 ++++ src/libsystemd-network/sd-dhcp-server.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/basic/string-util.h b/src/basic/string-util.h index a032ee8d6a7..b5da8bea059 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "macro.h" #include "string-util-fundamental.h" +#include "utf8.h" /* What is interpreted as whitespace? */ #define WHITESPACE " \t\n\r" @@ -234,6 +235,9 @@ static inline int strdup_to(char **ret, const char *src) { } bool string_is_safe(const char *p) _pure_; +static inline bool string_is_safe_ascii(const char *p) { + return ascii_is_valid(p) && string_is_safe(p); +} DISABLE_WARNING_STRINGOP_TRUNCATION; static inline void strncpy_exact(char *buf, const char *src, size_t buf_len) { diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 4967f066dce..25b4cafaa59 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -271,7 +271,7 @@ int sd_dhcp_server_set_boot_server_name(sd_dhcp_server *server, const char *name int sd_dhcp_server_set_boot_filename(sd_dhcp_server *server, const char *filename) { assert_return(server, -EINVAL); - if (filename && (!string_is_safe(filename) || !ascii_is_valid(filename))) + if (filename && !string_is_safe_ascii(filename)) return -EINVAL; return free_and_strdup(&server->boot_filename, filename);