From d4d0d4db9345170cc61a6b46ac9e11c5b8424b19 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 23 Apr 2010 20:29:15 +0200 Subject: [PATCH] util: properly handle empty word suffixes/prefixes in startswith()/endswith() --- util.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/util.c b/util.c index 83e819a0..fd991cf8 100644 --- a/util.c +++ b/util.c @@ -114,6 +114,9 @@ bool endswith(const char *s, const char *postfix) { sl = strlen(s); pl = strlen(postfix); + if (pl == 0) + return true; + if (sl < pl) return false; @@ -129,6 +132,9 @@ bool startswith(const char *s, const char *prefix) { sl = strlen(s); pl = strlen(prefix); + if (pl == 0) + return true; + if (sl < pl) return false; @@ -147,11 +153,14 @@ bool first_word(const char *s, const char *word) { if (sl < wl) return false; + if (wl == 0) + return true; + if (memcmp(s, word, wl) != 0) return false; - return (s[wl] == 0 || - strchr(WHITESPACE, s[wl])); + return s[wl] == 0 || + strchr(WHITESPACE, s[wl]); } int close_nointr(int fd) { -- 2.39.5