Re: [PATCH v4 01/10] string: provide strends()
From: Bartosz Golaszewski <hidden>
Date: 2025-11-18 09:47:24
Also in:
linux-arm-msm, linux-gpio, linux-hardening, linux-sound, lkml
On Mon, Nov 17, 2025 at 9:33 PM Kees Cook [off-list ref] wrote:
On Wed, Nov 12, 2025 at 02:55:30PM +0100, Bartosz Golaszewski wrote:quoted
From: Bartosz Golaszewski <redacted> Implement a function for checking if a string ends with a different string and add its kunit test cases. Acked-by: Linus Walleij <redacted> Signed-off-by: Bartosz Golaszewski <redacted> ---
Hi Kees! Thanks for the review. I already queued this for v6.19, so let me address the issues in a follow-up.
quoted
include/linux/string.h | 18 ++++++++++++++++++ lib/tests/string_kunit.c | 13 +++++++++++++ 2 files changed, 31 insertions(+)diff --git a/include/linux/string.h b/include/linux/string.h index fdd3442c6bcbd786e177b6e87358e1065a0ffafc..929d05d1247c76eb9011fe34250b487834b2d3c9 100644 --- a/include/linux/string.h +++ b/include/linux/string.h@@ -562,4 +562,22 @@ static inline bool strstarts(const char *str, const char *prefix) return strncmp(str, prefix, strlen(prefix)) == 0; } +/** + * strends - Check if a string ends with another string. + * @str - NULL-terminated string to check against @suffix + * @suffix - NULL-terminated string defining the suffix to look for in @str + * + * Returns: + * True if @str ends with @suffix. False in all other cases.Maybe added "empty strings never match"?
But they do, please see the test.
quoted
+ */ +static inline bool strends(const char *str, const char *suffix)These are required to be non-NULL, so we might want to consider marking them as such with the "nonnull" attribute. We don't use it much in Linux yet, but I do see a few places. e.g.: static inline bool __attribute__((nonnull(1,2))) strends(const char *str, const char *suffix)
Ok.
quoted
+{ + unsigned int str_len = strlen(str), suffix_len = strlen(suffix); + + if (str_len < suffix_len) + return false; + + return !(strcmp(str + str_len - suffix_len, suffix)); +}We should probably add it to strlen and strcmp as well. :)
Sure but that's outside of the scope of this. Bart