Skip to content

Commit

Permalink
Update.
Browse files Browse the repository at this point in the history
2004-10-18  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking
	destlen only every 4 bytes.
  • Loading branch information
Ulrich Drepper committed Oct 19, 2004
1 parent 653aeda commit 708c687
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2004-10-18 Jakub Jelinek <jakub@redhat.com>

* sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking
destlen only every 4 bytes.

2004-10-19 Ulrich Drepper <drepper@redhat.com>

* nss/getent.c (hosts_keys): Let inet_pton decide whether the
Expand Down
30 changes: 26 additions & 4 deletions sysdeps/generic/strcpy_chk.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,36 @@ __strcpy_chk (dest, src, destlen)
{
reg_char c;
char *s = (char *) src;
const ptrdiff_t off = dest - s - 1;
const ptrdiff_t off = dest - s;

while (__builtin_expect (destlen >= 4, 0))
{
c = s[0];
s[off] = c;
if (c == '\0')
return dest;
c = s[1];
s[off + 1] = c;
if (c == '\0')
return dest;
c = s[2];
s[off + 2] = c;
if (c == '\0')
return dest;
c = s[3];
s[off + 3] = c;
if (c == '\0')
return dest;
destlen -= 4;
s += 4;
}

do
{
if (__builtin_expect (destlen-- == 0, 0))
__chk_fail ();
c = *s++;
s[off] = c;
__chk_fail ();
c = *s;
*(s++ + off) = c;
}
while (c != '\0');

Expand Down

0 comments on commit 708c687

Please sign in to comment.