chiark / gitweb /
util: properly handle empty word suffixes/prefixes in startswith()/endswith()
authorLennart Poettering <lennart@poettering.net>
Fri, 23 Apr 2010 18:29:15 +0000 (20:29 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 23 Apr 2010 18:29:15 +0000 (20:29 +0200)
util.c

diff --git a/util.c b/util.c
index 83e819a..fd991cf 100644 (file)
--- 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) {