summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stef@thewalter.net>2013-07-18 06:48:14 +0200
committerStef Walter <stef@thewalter.net>2013-07-18 13:04:37 +0200
commitb03be8429847451ddf25508b3dc3c520e96a2cc3 (patch)
tree333e6263604d86906a9332f493c9b5917955fcca
parent2a69ff5691e114362564a2ab572cd4b3b20dcc27 (diff)
Fix p11_kit_space_strlen() result when empty string
https://bugzilla.redhat.com/show_bug.cgi?id=985416
-rw-r--r--p11-kit/tests/Makefile.am1
-rw-r--r--p11-kit/tests/test-util.c59
-rw-r--r--p11-kit/util.c6
3 files changed, 63 insertions, 3 deletions
diff --git a/p11-kit/tests/Makefile.am b/p11-kit/tests/Makefile.am
index 16ba280..5e90150 100644
--- a/p11-kit/tests/Makefile.am
+++ b/p11-kit/tests/Makefile.am
@@ -18,6 +18,7 @@ LDADD = \
CHECK_PROGS = \
test-progname \
+ test-util \
test-conf \
test-uri \
test-pin \
diff --git a/p11-kit/tests/test-util.c b/p11-kit/tests/test-util.c
new file mode 100644
index 0000000..0e579cd
--- /dev/null
+++ b/p11-kit/tests/test-util.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2013, Red Hat Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ * * Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions and
+ * the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ * * The names of contributors to this software may not be
+ * used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#include "config.h"
+#include "test.h"
+
+#include "p11-kit.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static void
+test_space_strlen (void)
+{
+ assert_num_eq (4, p11_kit_space_strlen ((const unsigned char *)"Test ", 20));
+ assert_num_eq (20, p11_kit_space_strlen ((const unsigned char *)"01234567890123456789", 20));
+ assert_num_eq (0, p11_kit_space_strlen ((const unsigned char *)" ", 20));
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ putenv ("P11_KIT_STRICT=1");
+
+ p11_test (test_space_strlen, "/util/space-strlen");
+ return p11_test_run (argc, argv);
+}
diff --git a/p11-kit/util.c b/p11-kit/util.c
index 14c24f6..1124876 100644
--- a/p11-kit/util.c
+++ b/p11-kit/util.c
@@ -86,13 +86,13 @@
size_t
p11_kit_space_strlen (const unsigned char *string, size_t max_length)
{
- size_t i = max_length - 1;
+ size_t i = max_length;
assert (string);
- while (i > 0 && string[i] == ' ')
+ while (i > 0 && string[i - 1] == ' ')
--i;
- return i + 1;
+ return i;
}
/**