From: Lennart Poettering Date: Fri, 23 Apr 2010 18:29:15 +0000 (+0200) Subject: util: properly handle empty word suffixes/prefixes in startswith()/endswith() X-Git-Tag: v1~472 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=d4d0d4db9345170cc61a6b46ac9e11c5b8424b19 util: properly handle empty word suffixes/prefixes in startswith()/endswith() --- diff --git a/util.c b/util.c index 83e819a0c..fd991cf80 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) {