Add an implementation of strnlen for memcheck, from Tom Hughes.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2146 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_symtab2.c b/coregrind/vg_symtab2.c
index a6e6bc9..393f8bd 100644
--- a/coregrind/vg_symtab2.c
+++ b/coregrind/vg_symtab2.c
@@ -2199,6 +2199,8 @@
     */
    VG_(add_redirect_sym)("soname:libc.so.6", "stpcpy",
 			 "*vgpreload_memcheck.so*", "stpcpy");
+   VG_(add_redirect_sym)("soname:libc.so.6", "strnlen",
+			 "*vgpreload_memcheck.so*", "strnlen");
 
    VG_(add_redirect_sym)("soname:ld-linux.so.2", "stpcpy",
 			 "*vgpreload_memcheck.so*", "stpcpy");
diff --git a/memcheck/mac_replace_strmem.c b/memcheck/mac_replace_strmem.c
index 8f7acd7..e49fe9c 100644
--- a/memcheck/mac_replace_strmem.c
+++ b/memcheck/mac_replace_strmem.c
@@ -176,6 +176,13 @@
    return dst_orig;
 }
 
+unsigned int strnlen ( const char* str, unsigned int n )
+{
+   UInt i = 0;
+   while (i < n && str[i] != 0) i++;
+   return i;
+}
+
 unsigned int strlen ( const char* str )
 {
    UInt i = 0;