]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Remove unused strnstr() replacement (#1721)
authorAmos Jeffries <yadij@users.noreply.github.com>
Tue, 5 Mar 2024 15:12:24 +0000 (15:12 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Tue, 5 Mar 2024 15:31:49 +0000 (15:31 +0000)
Squid code does not actually use strnstr() so this copy of FreeBSD
code does not need to be shipped.

CREDITS
acinclude/os-deps.m4
compat/Makefile.am
compat/compat_shared.h
compat/strnstr.cc [deleted file]
src/StrList.cc

diff --git a/CREDITS b/CREDITS
index cd2e4cdb22a27bcd652d63310c3738c3cda45df7..6d16efd47c73f857d3341a16b0502f9d0bb9564a 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -438,47 +438,6 @@ compat/tempnam.c:
 
 ==============================================================================
 
-compat/strnstr.cc:
-
-/*-
- * Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 1990, 1993
- *      The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)strstr.c 8.1 (Berkeley) 6/4/93
- * $FreeBSD: src/lib/libc/string/strnstr.c,v 1.2.2.1 2001/12/09 06:50:03 mike Exp $
- * $DragonFly: src/lib/libc/string/strnstr.c,v 1.4 2006/03/20 17:24:20 dillon Exp $
- */
-
-==============================================================================
-
 compat/xstrto.cc:
 
 /*
index 85da54aeabd7887963236517dc59e7bfa8968bb7..a739c02f6b40ad6e4558fecc3d8fd2d29f7dfe17 100644 (file)
@@ -5,34 +5,6 @@
 ## Please see the COPYING and CONTRIBUTORS files for details.
 ##
 
-dnl check that strnstr() works fine. On Macos X it can cause a buffer overrun
-dnl sets squid_cv_func_strnstr to "yes" or "no", and defines HAVE_STRNSTR
-AC_DEFUN([SQUID_CHECK_FUNC_STRNSTR],[
-
-  # Yay!  This one is  a MacOSX brokenness.  Its not good enough
-  # to know that strnstr() exists, because MacOSX 10.4 have a bad
-  # copy that crashes with a buffer over-run!
-  AH_TEMPLATE(HAVE_STRNSTR,[MacOS brokenness: strnstr() can overrun on that system])
-  AC_CACHE_CHECK([if strnstr is well implemented], squid_cv_func_strnstr,
-    AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-    // we expect this to succeed, or crash on over-run.
-    // if it passes otherwise we may need a better check.
-int main(int argc, char **argv)
-{
-    int size = 20;
-    char *str = malloc(size);
-    memset(str, 'x', size);
-    strnstr(str, "fubar", size);
-    return 0;
-}
-    ]])],[squid_cv_func_strnstr="yes"],[squid_cv_func_strnstr="no"],[:])
-  )
-  AS_IF([test "x$squid_cv_func_strnstr" = "xyes"],[AC_DEFINE(HAVE_STRNSTR,1)])
-]) dnl SQUID_CHECK_FUNC_STRNSTR
-
 dnl check that epoll actually works
 dnl sets squid_cv_epoll_works to "yes" or "no"
 AC_DEFUN([SQUID_CHECK_EPOLL],[
index e4200d111043ef16e9ec50c542a36de9dea56242..028e817d53fc5e83a2d45f2c10bd737bed1c667b 100644 (file)
@@ -69,7 +69,6 @@ libcompatsquid_la_SOURCES = \
        statvfs.h \
        stdio.h \
        stdvarargs.h \
-       strnstr.cc \
        strtoll.h \
        tempnam.h \
        types.h \
index 905e53e6d5498a84715bdadfacb3cbdcc11affa9..85eaaf7afafee3f902356c39d3584376539d203f 100644 (file)
@@ -227,17 +227,6 @@ extern "C" {
 #define memmove(d,s,n) bcopy((s),(d),(n))
 #endif
 
-/*
- * strnstr() is needed. The OS may not provide a working copy.
- */
-#if HAVE_STRNSTR
-/* If strnstr exists and is usable we do so. */
-#define squid_strnstr(a,b,c)    strnstr(a,b,c)
-#else
-/* If not we have our own copy imported from FreeBSD */
-const char * squid_strnstr(const char *s, const char *find, size_t slen);
-#endif
-
 #if __GNUC__
 #if _SQUID_MINGW_
 #define PRINTF_FORMAT_ARG1 __attribute__ ((format (gnu_printf, 1, 2)))
diff --git a/compat/strnstr.cc b/compat/strnstr.cc
deleted file mode 100644 (file)
index cccebd9..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-#ifndef SQUID_COMPAT_STRNSTR_CC_
-#define SQUID_COMPAT_STRNSTR_CC_
-
-/*
- *  Shamelessly duplicated from the FreeBSD public sources
- *  for use by the Squid Project under GNU Public License.
- *
- * Update/Maintenance History:
- *
- *    26-Apr-2008 : Copied from FreeBSD via OpenGrok
- *          - added protection around library headers
- *          - added squid_ prefix for uniqueness
- *            so we can use it where OS copy is broken.
- *
- *  Original License and code follows.
- */
-
-#include "squid.h"
-
-#if !HAVE_STRNSTR
-
-/*-
- * Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 1990, 1993
- *  The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)strstr.c 8.1 (Berkeley) 6/4/93
- * $FreeBSD: src/lib/libc/string/strnstr.c,v 1.2.2.1 2001/12/09 06:50:03 mike Exp $
- * $DragonFly: src/lib/libc/string/strnstr.c,v 1.4 2006/03/20 17:24:20 dillon Exp $
- */
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#include <cstring>
-
-/**
- * Find the first occurrence of find in s, where the search is limited to the
- * first slen characters of s.
- */
-const char *
-squid_strnstr(const char *s, const char *find, size_t slen)
-{
-    char c, sc;
-    size_t len;
-
-    if ((c = *find++) != '\0') {
-        len = strlen(find);
-        do {
-            do {
-                if (slen < 1 || (sc = *s) == '\0')
-                    return nullptr;
-                --slen;
-                ++s;
-            } while (sc != c);
-            if (len > slen)
-                return nullptr;
-        } while (strncmp(s, find, len) != 0);
-        --s;
-    }
-    return s;
-}
-
-#endif /* !HAVE_STRNSTR */
-#endif /* SQUID_COMPAT_STRNSTR_CC_ */
-
index c0c6c82a6d7a9b6a1b40285adbc880a2be384530..f706427ef7a110564b92b13f1476ec3b4705deca 100644 (file)
@@ -64,14 +64,6 @@ strListIsSubstr(const String * list, const char *s, char del)
 {
     assert(list && del);
     return (list->find(s) != String::npos);
-
-    /** \note
-     * Note: the original code with a loop is broken because it uses strstr()
-     * instead of strnstr(). If 's' contains a 'del', strListIsSubstr() may
-     * return true when it should not. If 's' does not contain a 'del', the
-     * implementation is equavalent to strstr()! Thus, we replace the loop with
-     * strstr() above until strnstr() is available.
-     */
 }
 
 /**