summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nuttx/ChangeLog2
-rw-r--r--nuttx/Documentation/NuttX.html2
-rw-r--r--nuttx/lib/lib_strncmp.c6
-rw-r--r--nuttx/lib/lib_strstr.c6
4 files changed, 10 insertions, 6 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index df05833a7..f0c105788 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -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.
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index 509b770aa..cbaec7977 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -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>
diff --git a/nuttx/lib/lib_strncmp.c b/nuttx/lib/lib_strncmp.c
index c50ec105e..147dfc536 100644
--- a/nuttx/lib/lib_strncmp.c
+++ b/nuttx/lib/lib_strncmp.c
@@ -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;
}
diff --git a/nuttx/lib/lib_strstr.c b/nuttx/lib/lib_strstr.c
index 3649a6ac8..4e2eeb94c 100644
--- a/nuttx/lib/lib_strstr.c
+++ b/nuttx/lib/lib_strstr.c
@@ -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