Zbigniew Jędrzejewski-Szmek 43ff24
From 10242a06bf0b1cd3bde58cada79c8a1aae5d8caa Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 43ff24
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 43ff24
Date: Fri, 11 Jul 2014 09:21:15 -0400
Zbigniew Jędrzejewski-Szmek 43ff24
Subject: [PATCH] util: fix has cc check and add test
Zbigniew Jędrzejewski-Szmek 43ff24
Zbigniew Jędrzejewski-Szmek 43ff24
---
Zbigniew Jędrzejewski-Szmek 43ff24
 src/shared/util.c    |  2 +-
Zbigniew Jędrzejewski-Szmek 43ff24
 src/test/test-util.c | 15 +++++++++++++++
Zbigniew Jędrzejewski-Szmek 43ff24
 2 files changed, 16 insertions(+), 1 deletion(-)
Zbigniew Jędrzejewski-Szmek 43ff24
Zbigniew Jędrzejewski-Szmek 43ff24
diff --git a/src/shared/util.c b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 43ff24
index d223ecf711..03a5860a62 100644
Zbigniew Jędrzejewski-Szmek 43ff24
--- a/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 43ff24
+++ b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 43ff24
@@ -5375,7 +5375,7 @@ bool string_has_cc(const char *p, const char *ok) {
Zbigniew Jędrzejewski-Szmek 43ff24
 
Zbigniew Jędrzejewski-Szmek 43ff24
         for (t = p; *t; t++) {
Zbigniew Jędrzejewski-Szmek 43ff24
                 if (ok && strchr(ok, *t))
Zbigniew Jędrzejewski-Szmek 43ff24
-                        return false;
Zbigniew Jędrzejewski-Szmek 43ff24
+                        continue;
Zbigniew Jędrzejewski-Szmek 43ff24
 
Zbigniew Jędrzejewski-Szmek 43ff24
                 if (*t > 0 && *t < ' ')
Zbigniew Jędrzejewski-Szmek 43ff24
                         return true;
Zbigniew Jędrzejewski-Szmek 43ff24
diff --git a/src/test/test-util.c b/src/test/test-util.c
Zbigniew Jędrzejewski-Szmek 43ff24
index 44921bd156..ed91a67d10 100644
Zbigniew Jędrzejewski-Szmek 43ff24
--- a/src/test/test-util.c
Zbigniew Jędrzejewski-Szmek 43ff24
+++ b/src/test/test-util.c
Zbigniew Jędrzejewski-Szmek 43ff24
@@ -731,6 +731,20 @@ static void test_filename_is_safe(void) {
Zbigniew Jędrzejewski-Szmek 43ff24
         assert_se(filename_is_safe("o.o"));
Zbigniew Jędrzejewski-Szmek 43ff24
 }
Zbigniew Jędrzejewski-Szmek 43ff24
 
Zbigniew Jędrzejewski-Szmek 43ff24
+static void test_string_has_cc(void) {
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("abc\1", NULL));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("abc\x7f", NULL));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("abc\x7f", NULL));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("abc\t\x7f", "\t"));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("abc\t\x7f", "\t"));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("\x7f", "\t"));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(string_has_cc("\x7f", "\t\a"));
Zbigniew Jędrzejewski-Szmek 43ff24
+
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(!string_has_cc("abc\t\t", "\t"));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(!string_has_cc("abc\t\t\a", "\t\a"));
Zbigniew Jędrzejewski-Szmek 43ff24
+        assert_se(!string_has_cc("a\ab\tc", "\t\a"));
Zbigniew Jędrzejewski-Szmek 43ff24
+}
Zbigniew Jędrzejewski-Szmek 43ff24
+
Zbigniew Jędrzejewski-Szmek 43ff24
 static void test_ascii_strlower(void) {
Zbigniew Jędrzejewski-Szmek 43ff24
         char a[] = "AabBcC Jk Ii Od LKJJJ kkd LK";
Zbigniew Jędrzejewski-Szmek 43ff24
         assert_se(streq(ascii_strlower(a), "aabbcc jk ii od lkjjj kkd lk"));
Zbigniew Jędrzejewski-Szmek 43ff24
@@ -937,6 +951,7 @@ int main(int argc, char *argv[]) {
Zbigniew Jędrzejewski-Szmek 43ff24
         test_log2i();
Zbigniew Jędrzejewski-Szmek 43ff24
         test_foreach_string();
Zbigniew Jędrzejewski-Szmek 43ff24
         test_filename_is_safe();
Zbigniew Jędrzejewski-Szmek 43ff24
+        test_string_has_cc();
Zbigniew Jędrzejewski-Szmek 43ff24
         test_ascii_strlower();
Zbigniew Jędrzejewski-Szmek 43ff24
         test_files_same();
Zbigniew Jędrzejewski-Szmek 43ff24
         test_is_valid_documentation_url();