summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-08-15 22:59:41 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-08-15 22:59:41 +0000
commit6c510b8a838ab27c348c2f5bac97211cbfaad3d6 (patch)
tree6c0e603d8c96335259d39caefc4425c8065043bc
parent56ab42eee7193d7d36b54522fa2dc251acb396fd (diff)
downloadpx4-nuttx-6c510b8a838ab27c348c2f5bac97211cbfaad3d6.tar.gz
px4-nuttx-6c510b8a838ab27c348c2f5bac97211cbfaad3d6.tar.bz2
px4-nuttx-6c510b8a838ab27c348c2f5bac97211cbfaad3d6.zip
strstr fails because length off by 1
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2022 42af7a65-404d-4744-a932-0658087f49c3
-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 &lt;spudmonkey@racsa.co.cr&gt;
* 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 &lt;spudmonkey@racsa.co.cr&gt;
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