]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Inappropriate code style for Intel MPX in debug/strcpy_chk.c Use different version...
authorLiubov Dmitrieva <liubov.dmitrieva@intel.com>
Fri, 14 Dec 2012 14:41:37 +0000 (18:41 +0400)
committerLiubov Dmitrieva <ldmitrie@sourceware.org>
Wed, 23 Oct 2013 15:07:35 +0000 (19:07 +0400)
debug/strcpy_chk.c

index 81bf46f9927a4c7db69d761601392d520326696a..ba6da70190bd627fb90a7909c29290efda058d4a 100644 (file)
@@ -27,6 +27,7 @@ __strcpy_chk (dest, src, destlen)
      char *dest;
      const char *src;
      size_t destlen;
+#ifndef __CHKP__
 {
   char c;
   char *s = (char *) src;
@@ -65,3 +66,45 @@ __strcpy_chk (dest, src, destlen)
 
   return dest;
 }
+#else
+{
+  char c;
+  char *s = (char *) src;
+  char *d = (char *) dest;
+
+  while (__builtin_expect (destlen >= 4, 0))
+    {
+      c = s[0];
+      d[0] = c;
+      if (c == '\0')
+        return dest;
+      c = s[1];
+      d[1] = c;
+      if (c == '\0')
+        return dest;
+      c = s[2];
+      d[2] = c;
+      if (c == '\0')
+        return dest;
+      c = s[3];
+      d[3] = c;
+      if (c == '\0')
+        return dest;
+      destlen -= 4;
+      d += 4;
+      s += 4;
+    }
+
+  do
+    {
+      if (__builtin_expect (destlen-- == 0, 0))
+        __chk_fail ();
+      c = *s;
+      *(d++) = c;
+      s++;
+    }
+  while (c != '\0');
+
+  return dest;
+}
+#endif