Index: Makefile
===================================================================
diff --git a/head/tools/regression/lib/libc/string/Makefile b/head/tools/regression/lib/libc/string/Makefile
--- a/head/tools/regression/lib/libc/string/Makefile	(revision 250951)
+++ b/head/tools/regression/lib/libc/string/Makefile	(working copy)
@@ -4,7 +4,7 @@
 LDFLAGS+=	-L/usr/local/lib
 LDLIBS=		-ltap
 
-TESTS=	test-stpncpy test-strerror test-wcscasecmp test-wcsnlen
+TESTS=	test-stpncpy test-strerror test-strnlen test-wcscasecmp test-wcsnlen
 
 .PHONY: tests
 tests: ${TESTS}
Index: test-strnlen.c
===================================================================
diff --git a/head/tools/regression/lib/libc/string/test-strnlen.c b/head/tools/regression/lib/libc/string/test-strnlen.c
new file mode 10644
--- /dev/null	(revision 0)
+++ b/head/tools/regression/lib/libc/string/test-strnlen.c	(working copy)
@@ -0,0 +1,83 @@
+/*-
+ * Copyright (c) 2013 Lee Thomas <lee_thomas@AslanTools.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define MAX_LEN (sizeof(long) * 2)
+static void test_strnlen(char junk_fill, size_t str_len, size_t al);
+
+/*
+ * Tests strnlen for various lengths, buffer restrictions, and alignments.
+ * Since strnlen potentially reads (and branches) on all of the bytes in the
+ * aligned words containing the start and end of the unaligned string, we
+ * need to test both zero and nonzero values of those read-but-disregarded bytes.
+ * Note that the reads themselves are safe because the page size is an integer
+ * multiple of the wordsize.
+ */
+int
+main(int argc, char **argv)
+{
+	size_t al, str_len, runs;
+	char junk_fill;
+	printf("1..1\n");
+	for (junk_fill = 0; junk_fill <= 1; junk_fill++) {
+		for (str_len = 0; str_len < MAX_LEN; str_len++) {
+			for (al = sizeof(long); al < 2 * sizeof(long); al++) {
+				test_strnlen(junk_fill, str_len, al);
+			}
+		}
+	}
+	printf("ok 1 - strnlen\n");
+	return 0;
+}
+static void 
+test_strnlen(char junk_fill, size_t str_len, size_t al)
+{
+	/*
+	 * Required size is 2*sizeof(long) junk, MAX_LEN chars, 1 nul, and 
+	 * then sizeof(long) junk
+	 */
+	char buf[MAX_LEN + 1 + 3 * sizeof(long)];
+	char * str;
+	size_t limit_len, correct_result;
+	
+	str = buf + al;
+	memset(buf, junk_fill, al);
+	memset(str, 'a', str_len);
+	str[str_len] = '\0';
+	memset(str + str_len + 1, junk_fill, sizeof(long));
+	for (limit_len = 0; limit_len < MAX_LEN + 2; limit_len++) {
+		correct_result = limit_len < str_len ? limit_len : str_len;
+		if (strnlen(str, limit_len) != correct_result) {
+			printf("not ok - strnlen\n");
+			exit(1);
+		}
+	}
+}

Property changes on: head/tools/regression/lib/libc/string/test-strnlen.c
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
