Browse Source

Avoid using and end pointer since strnlen(string, -1) is legal

and would otherwise result in overflowing the end pointer and
cause strnlen() to return 0.  OK sthen@
OPENBSD_4_8
millert 14 years ago
parent
commit
5cd2c72134
1 changed files with 3 additions and 4 deletions
  1. +3
    -4
      src/lib/libc/string/strnlen.c

+ 3
- 4
src/lib/libc/string/strnlen.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: strnlen.c,v 1.2 2010/05/21 06:57:45 chl Exp $ */
/* $OpenBSD: strnlen.c,v 1.3 2010/06/02 12:58:12 millert Exp $ */
/* /*
* Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com>
@ -23,10 +23,9 @@
size_t size_t
strnlen(const char *str, size_t maxlen) strnlen(const char *str, size_t maxlen)
{ {
const char *cp, *ep;
const char *cp;
ep = str + maxlen;
for (cp = str; cp < ep && *cp != '\0'; cp++)
for (cp = str; maxlen != 0 && *cp != '\0'; cp++, maxlen--)
; ;
return (size_t)(cp - str); return (size_t)(cp - str);


Loading…
Cancel
Save