9
0
Fork 0

strstr fails because length off by 1

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@2022 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo 2009-08-15 22:59:41 +00:00
parent 0b37288c9e
commit 157558aa9e
4 changed files with 10 additions and 6 deletions

View File

@ -846,3 +846,5 @@
* net/recvfrom.c: Fix errors in return value from non-blocking socket read.
* lib/lib_strcasecmp.c and lib/lib_strncasecmp.c. Use of post-incremented
argument to macro caused strcasecmp() and strncasecmp() to fail.
* lib/lib_strstr.c: Length of substring off by one causes false alarm
sub-string matches.

View File

@ -1507,6 +1507,8 @@ nuttx-0.4.11 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
* net/recvfrom.c: Fix errors in return value from non-blocking socket read.
* lib/lib_strcasecmp.c and lib/lib_strncasecmp.c. Use of post-incremented
argument to macro caused strcasecmp() and strncasecmp() to fail.
* lib/lib_strstr.c: Length of substring off by one causes false alarm
sub-string matches.
pascal-0.1.3 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>

View File

@ -1,7 +1,7 @@
/****************************************************************************
* lib/lib_strncmp.c
*
* Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@ -52,10 +52,10 @@
#ifndef CONFIG_ARCH_STRNCMP
int strncmp(const char *cs, const char *ct, size_t nb)
{
register signed char result = 0;
int result = 0;
for (; nb > 0; nb--)
{
if ((result = *cs - *ct++) != 0 || !*cs++)
if ((result = (int)*cs - (int)*ct++) != 0 || !*cs++)
{
break;
}

View File

@ -53,7 +53,9 @@ char *strstr(const char *str, const char *substr)
/* Special case the empty substring */
ch = *substr++;
len = strlen(substr);
ch = *substr++;
if (!ch)
{
/* We'll say that an empty substring matches at the beginning of
@ -66,8 +68,6 @@ char *strstr(const char *str, const char *substr)
/* Search for the substring */
candidate = str;
len = strlen(substr);
for (;;)
{
/* strchr() will return a pointer to the next occurrence of the