Accepting request 788672 from home:darix:branches:network:utilities
- apply patch from https://github.com/memcached/memcached/pull/635 to fix crashes we saw during the testsuite - disable extstore on s390 for now as there are known bugs on that platform - limit tls support to 15 and above - disable lto until the 2 settings structs are resolved - update to version 1.6.2 (boo# 1167522) CVE-2020-10931 https://github.com/memcached/memcached/wiki/ReleaseNotes162 https://github.com/memcached/memcached/wiki/ReleaseNotes161 https://github.com/memcached/memcached/wiki/ReleaseNotes160 https://github.com/memcached/memcached/wiki/ReleaseNotes1522 https://github.com/memcached/memcached/wiki/ReleaseNotes1521 https://github.com/memcached/memcached/wiki/ReleaseNotes1520 https://github.com/memcached/memcached/wiki/ReleaseNotes1519 https://github.com/memcached/memcached/wiki/ReleaseNotes1518 - dropped all patches after reviewing with upstream: memcached-1.4.5.dif memcached-autofoo.patch memcached-use-endian_h.patch - enable TLS support (new BR: openssl-devel perl-IO-Socket-SSL perl-Net-SSLeay) OBS-URL: https://build.opensuse.org/request/show/788672 OBS-URL: https://build.opensuse.org/package/show/network:utilities/memcached?expand=0&rev=69
This commit is contained in:
parent
50257dc122
commit
647b1df213
120
635.patch
Normal file
120
635.patch
Normal file
@ -0,0 +1,120 @@
|
||||
From 5174ef33576f461d43f43b2019f5e10655b4c78f Mon Sep 17 00:00:00 2001
|
||||
From: dormando <dormando@rydia.net>
|
||||
Date: Wed, 25 Mar 2020 14:02:11 -0700
|
||||
Subject: [PATCH] restart: fix rare segfault on shutdown
|
||||
|
||||
Client connections were being closed and cleaned up after worker
|
||||
threads exit. In 2018 a patch went in to have the worker threads
|
||||
actually free their event base when stopped. If your system is strict
|
||||
enough (which is apparently none out of the dozen+ systems we've tested
|
||||
against!) it will segfault on invalid memory.
|
||||
|
||||
This change leaves the workers hung while they wait for connections to
|
||||
be centrally closed. I would prefer to have each worker thread close
|
||||
its own connections for speed if nothing else, but we still need to
|
||||
close the listener connections and any connections currently open in
|
||||
side channels.
|
||||
|
||||
Much apprecation to darix for helping narrow this down, as it presented
|
||||
as a wiped stack that only appeared in a specific build environment on
|
||||
a specific linux distribution.
|
||||
|
||||
Hopefully with all of the valgrind noise fixes lately we can start
|
||||
running it more regularly and spot these early.
|
||||
---
|
||||
memcached.c | 19 ++++++++++++-------
|
||||
memcached.h | 3 +--
|
||||
thread.c | 14 ++++++++++++++
|
||||
3 files changed, 27 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/memcached.c b/memcached.c
|
||||
index 2592b3f94..dd52dd04c 100644
|
||||
--- a/memcached.c
|
||||
+++ b/memcached.c
|
||||
@@ -939,6 +939,18 @@ static void conn_close(conn *c) {
|
||||
return;
|
||||
}
|
||||
|
||||
+// Since some connections might be off on side threads and some are managed as
|
||||
+// listeners we need to walk through them all from a central point.
|
||||
+// Must be called with all worker threads hung or in the process of closing.
|
||||
+void conn_close_all(void) {
|
||||
+ int i;
|
||||
+ for (i = 0; i < max_fds; i++) {
|
||||
+ if (conns[i] && conns[i]->state != conn_closed) {
|
||||
+ conn_close(conns[i]);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Convert a state name to a human readable form.
|
||||
*/
|
||||
@@ -10126,13 +10138,6 @@ int main (int argc, char **argv) {
|
||||
|
||||
fprintf(stderr, "Gracefully stopping\n");
|
||||
stop_threads();
|
||||
- int i;
|
||||
- // FIXME: make a function callable from threads.c
|
||||
- for (i = 0; i < max_fds; i++) {
|
||||
- if (conns[i] && conns[i]->state != conn_closed) {
|
||||
- conn_close(conns[i]);
|
||||
- }
|
||||
- }
|
||||
if (memory_file != NULL) {
|
||||
restart_mmap_close();
|
||||
}
|
||||
diff --git a/memcached.h b/memcached.h
|
||||
index a3ddd88c1..bdc38bd9c 100644
|
||||
--- a/memcached.h
|
||||
+++ b/memcached.h
|
||||
@@ -820,9 +820,8 @@ enum delta_result_type add_delta(conn *c, const char *key,
|
||||
const int64_t delta, char *buf,
|
||||
uint64_t *cas);
|
||||
void accept_new_conns(const bool do_accept);
|
||||
-conn *conn_from_freelist(void);
|
||||
-bool conn_add_to_freelist(conn *c);
|
||||
void conn_close_idle(conn *c);
|
||||
+void conn_close_all(void);
|
||||
item *item_alloc(char *key, size_t nkey, int flags, rel_time_t exptime, int nbytes);
|
||||
#define DO_UPDATE true
|
||||
#define DONT_UPDATE false
|
||||
diff --git a/thread.c b/thread.c
|
||||
index ed9765a48..e7f96dcba 100644
|
||||
--- a/thread.c
|
||||
+++ b/thread.c
|
||||
@@ -204,6 +204,7 @@ void stop_threads(void) {
|
||||
if (settings.verbose > 0)
|
||||
fprintf(stderr, "asking workers to stop\n");
|
||||
buf[0] = 's';
|
||||
+ pthread_mutex_lock(&worker_hang_lock);
|
||||
pthread_mutex_lock(&init_lock);
|
||||
init_count = 0;
|
||||
for (i = 0; i < settings.num_threads; i++) {
|
||||
@@ -215,6 +216,8 @@ void stop_threads(void) {
|
||||
wait_for_thread_registration(settings.num_threads);
|
||||
pthread_mutex_unlock(&init_lock);
|
||||
|
||||
+ // All of the workers are hung but haven't done cleanup yet.
|
||||
+
|
||||
if (settings.verbose > 0)
|
||||
fprintf(stderr, "asking background threads to stop\n");
|
||||
|
||||
@@ -236,6 +239,17 @@ void stop_threads(void) {
|
||||
if (settings.verbose > 0)
|
||||
fprintf(stderr, "stopped idle timeout thread\n");
|
||||
|
||||
+ // Close all connections then let the workers finally exit.
|
||||
+ if (settings.verbose > 0)
|
||||
+ fprintf(stderr, "closing connections\n");
|
||||
+ conn_close_all();
|
||||
+ pthread_mutex_unlock(&worker_hang_lock);
|
||||
+ if (settings.verbose > 0)
|
||||
+ fprintf(stderr, "reaping worker threads\n");
|
||||
+ for (i = 0; i < settings.num_threads; i++) {
|
||||
+ pthread_join(threads[i].thread_id, NULL);
|
||||
+ }
|
||||
+
|
||||
if (settings.verbose > 0)
|
||||
fprintf(stderr, "all background threads stopped\n");
|
||||
|
@ -1,27 +0,0 @@
|
||||
Index: memcached.c
|
||||
===================================================================
|
||||
--- memcached.c.orig
|
||||
+++ memcached.c
|
||||
@@ -2807,15 +2807,19 @@ void append_stat(const char *name, ADD_S
|
||||
inline static void process_stats_detail(conn *c, const char *command) {
|
||||
assert(c != NULL);
|
||||
|
||||
- if (strcmp(command, "on") == 0) {
|
||||
+ char on[] = "on";
|
||||
+ char off[] = "off";
|
||||
+ char dump[] = "dump";
|
||||
+
|
||||
+ if (strcmp(command, on) == 0) {
|
||||
settings.detail_enabled = 1;
|
||||
out_string(c, "OK");
|
||||
}
|
||||
- else if (strcmp(command, "off") == 0) {
|
||||
+ else if (strcmp(command, off) == 0) {
|
||||
settings.detail_enabled = 0;
|
||||
out_string(c, "OK");
|
||||
}
|
||||
- else if (strcmp(command, "dump") == 0) {
|
||||
+ else if (strcmp(command, dump) == 0) {
|
||||
int len;
|
||||
char *stats = stats_prefix_dump(&len);
|
||||
write_and_free(c, stats, len);
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ac7c5af6e8b1acf5d5c644d162e046d8acf9302174af9f24c3f18e5481ce3a0d
|
||||
size 490891
|
3
memcached-1.6.2.tar.gz
Normal file
3
memcached-1.6.2.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:06720118c40689be0b85249b3dcb23c6e6d5e3ce53893aca9faced264145168b
|
||||
size 536527
|
@ -1,321 +0,0 @@
|
||||
Index: memcached-1.5.17/configure.ac
|
||||
===================================================================
|
||||
--- memcached-1.5.17.orig/configure.ac 2019-07-16 00:34:51.000000000 +0200
|
||||
+++ memcached-1.5.17/configure.ac 2019-09-03 11:47:53.521535332 +0200
|
||||
@@ -4,10 +4,13 @@ m4_include([m4/c99-backport.m4])
|
||||
AC_INIT([memcached], [VERSION_NUMBER], [memcached@googlegroups.com])
|
||||
AC_CANONICAL_HOST
|
||||
AC_CONFIG_SRCDIR([memcached.c])
|
||||
-AM_INIT_AUTOMAKE([foreign])
|
||||
+AM_INIT_AUTOMAKE([foreign -Wall -Wno-portability tar-pax subdir-objects])
|
||||
AM_CONFIG_HEADER([config.h])
|
||||
|
||||
AC_PROG_CC
|
||||
+AC_PROG_CC_STDC
|
||||
+AC_USE_SYSTEM_EXTENSIONS
|
||||
+AC_SYS_LARGEFILE
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl DETECT_ICC ([ACTION-IF-YES], [ACTION-IF-NO])
|
||||
@@ -113,14 +116,11 @@ AC_DEFUN([AC_C_DETECT_SASL_CB_GETCONF],
|
||||
[
|
||||
AC_CACHE_CHECK([for SASL_CB_GETCONF],
|
||||
[ac_cv_c_sasl_cb_getconf],
|
||||
- [AC_TRY_COMPILE(
|
||||
- [
|
||||
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <sasl/sasl.h>
|
||||
- ], [
|
||||
+ ]], [[
|
||||
unsigned long val = SASL_CB_GETCONF;
|
||||
- ],
|
||||
- [ ac_cv_c_sasl_cb_getconf=yes ],
|
||||
- [ ac_cv_c_sasl_cb_getconf=no ])
|
||||
+ ]])],[ ac_cv_c_sasl_cb_getconf=yes ],[ ac_cv_c_sasl_cb_getconf=no ])
|
||||
])
|
||||
AS_IF([test "$ac_cv_c_sasl_cb_getconf" = "yes"],
|
||||
[AC_DEFINE([HAVE_SASL_CB_GETCONF], 1,
|
||||
@@ -251,23 +251,6 @@ fi
|
||||
AC_SUBST(PROFILER_FLAGS)
|
||||
|
||||
|
||||
-AC_ARG_ENABLE(64bit,
|
||||
- [AS_HELP_STRING([--enable-64bit],[build 64bit version])])
|
||||
-if test "x$enable_64bit" = "xyes"
|
||||
-then
|
||||
- org_cflags=$CFLAGS
|
||||
- CFLAGS=-m64
|
||||
- AC_RUN_IFELSE(
|
||||
- [AC_LANG_PROGRAM([], [dnl
|
||||
-return sizeof(void*) == 8 ? 0 : 1;
|
||||
- ])
|
||||
- ],[
|
||||
- CFLAGS="-m64 $org_cflags"
|
||||
- ],[
|
||||
- AC_MSG_ERROR([Don't know how to build a 64-bit object.])
|
||||
- ])
|
||||
-fi
|
||||
-
|
||||
# Issue 213: Search for clock_gettime to help people linking
|
||||
# with a static version of libevent
|
||||
AC_SEARCH_LIBS(clock_gettime, rt)
|
||||
@@ -276,91 +259,7 @@ AC_SEARCH_LIBS(clock_gettime, rt)
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
|
||||
-trylibeventdir=""
|
||||
-AC_ARG_WITH(libevent,
|
||||
- [ --with-libevent=PATH Specify path to libevent installation ],
|
||||
- [
|
||||
- if test "x$withval" != "xno" ; then
|
||||
- trylibeventdir=$withval
|
||||
- fi
|
||||
- ]
|
||||
-)
|
||||
-
|
||||
-dnl ------------------------------------------------------
|
||||
-dnl libevent detection. swiped from Tor. modified a bit.
|
||||
-
|
||||
-LIBEVENT_URL=https://www.monkey.org/~provos/libevent/
|
||||
-
|
||||
-AC_CACHE_CHECK([for libevent directory], ac_cv_libevent_dir, [
|
||||
- saved_LIBS="$LIBS"
|
||||
- saved_LDFLAGS="$LDFLAGS"
|
||||
- saved_CPPFLAGS="$CPPFLAGS"
|
||||
- le_found=no
|
||||
- for ledir in $trylibeventdir "" $prefix /usr/local ; do
|
||||
- LDFLAGS="$saved_LDFLAGS"
|
||||
- LIBS="-levent $saved_LIBS"
|
||||
-
|
||||
- # Skip the directory if it isn't there.
|
||||
- if test ! -z "$ledir" -a ! -d "$ledir" ; then
|
||||
- continue;
|
||||
- fi
|
||||
- if test ! -z "$ledir" ; then
|
||||
- if test -d "$ledir/lib" ; then
|
||||
- LDFLAGS="-L$ledir/lib $LDFLAGS"
|
||||
- else
|
||||
- LDFLAGS="-L$ledir $LDFLAGS"
|
||||
- fi
|
||||
- if test -d "$ledir/include" ; then
|
||||
- CPPFLAGS="-I$ledir/include $CPPFLAGS"
|
||||
- else
|
||||
- CPPFLAGS="-I$ledir $CPPFLAGS"
|
||||
- fi
|
||||
- fi
|
||||
- # Can I compile and link it?
|
||||
- AC_TRY_LINK([#include <sys/time.h>
|
||||
-#include <sys/types.h>
|
||||
-#include <event.h>], [ event_init(); ],
|
||||
- [ libevent_linked=yes ], [ libevent_linked=no ])
|
||||
- if test $libevent_linked = yes; then
|
||||
- if test ! -z "$ledir" ; then
|
||||
- ac_cv_libevent_dir=$ledir
|
||||
- _myos=`echo $target_os | cut -f 1 -d .`
|
||||
- AS_IF(test "$SUNCC" = "yes" -o "x$_myos" = "xsolaris2",
|
||||
- [saved_LDFLAGS="$saved_LDFLAGS -Wl,-R$ledir/lib"],
|
||||
- [AS_IF(test "$GCC" = "yes",
|
||||
- [saved_LDFLAGS="$saved_LDFLAGS -Wl,-rpath,$ledir/lib"])])
|
||||
- else
|
||||
- ac_cv_libevent_dir="(system)"
|
||||
- fi
|
||||
- le_found=yes
|
||||
- break
|
||||
- fi
|
||||
- done
|
||||
- LIBS="$saved_LIBS"
|
||||
- LDFLAGS="$saved_LDFLAGS"
|
||||
- CPPFLAGS="$saved_CPPFLAGS"
|
||||
- if test $le_found = no ; then
|
||||
- AC_MSG_ERROR([libevent is required. You can get it from $LIBEVENT_URL
|
||||
-
|
||||
- If it's already installed, specify its path using --with-libevent=/dir/
|
||||
-])
|
||||
- fi
|
||||
-])
|
||||
-LIBS="-levent $LIBS"
|
||||
-if test $ac_cv_libevent_dir != "(system)"; then
|
||||
- if test -d "$ac_cv_libevent_dir/lib" ; then
|
||||
- LDFLAGS="-L$ac_cv_libevent_dir/lib $LDFLAGS"
|
||||
- le_libdir="$ac_cv_libevent_dir/lib"
|
||||
- else
|
||||
- LDFLAGS="-L$ac_cv_libevent_dir $LDFLAGS"
|
||||
- le_libdir="$ac_cv_libevent_dir"
|
||||
- fi
|
||||
- if test -d "$ac_cv_libevent_dir/include" ; then
|
||||
- CPPFLAGS="-I$ac_cv_libevent_dir/include $CPPFLAGS"
|
||||
- else
|
||||
- CPPFLAGS="-I$ac_cv_libevent_dir $CPPFLAGS"
|
||||
- fi
|
||||
-fi
|
||||
+PKG_CHECK_MODULES([LIBEVENT], [libevent])
|
||||
|
||||
trylibssldir=""
|
||||
AC_ARG_WITH(libssl,
|
||||
@@ -478,14 +377,14 @@ dnl ************************************
|
||||
AC_DEFUN([AC_HAVE_SASL_CALLBACK_FT],
|
||||
[AC_CACHE_CHECK(for sasl_callback_ft, ac_cv_has_sasl_callback_ft,
|
||||
[
|
||||
- AC_TRY_COMPILE([
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifdef HAVE_SASL_SASL_H
|
||||
#include <sasl/sasl.h>
|
||||
#include <sasl/saslplug.h>
|
||||
#endif
|
||||
- ],[
|
||||
+ ]], [[
|
||||
sasl_callback_ft a_callback;
|
||||
- ],[
|
||||
+ ]])],[
|
||||
ac_cv_has_sasl_callback_ft=yes
|
||||
],[
|
||||
ac_cv_has_sasl_callback_ft=no
|
||||
@@ -507,18 +406,15 @@ AC_DEFUN([AC_C_DETECT_UINT64_SUPPORT],
|
||||
[
|
||||
AC_CACHE_CHECK([for print macros for integers (C99 section 7.8.1)],
|
||||
[ac_cv_c_uint64_support],
|
||||
- [AC_TRY_COMPILE(
|
||||
- [
|
||||
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifdef HAVE_INTTYPES_H
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
- ], [
|
||||
+ ]], [[
|
||||
uint64_t val = 0;
|
||||
fprintf(stderr, "%" PRIu64 "\n", val);
|
||||
- ],
|
||||
- [ ac_cv_c_uint64_support=yes ],
|
||||
- [ ac_cv_c_uint64_support=no ])
|
||||
+ ]])],[ ac_cv_c_uint64_support=yes ],[ ac_cv_c_uint64_support=no ])
|
||||
])
|
||||
])
|
||||
|
||||
@@ -537,12 +433,12 @@ dnl Check if the type socklen_t is defin
|
||||
AC_DEFUN([AC_C_SOCKLEN_T],
|
||||
[AC_CACHE_CHECK(for socklen_t, ac_cv_c_socklen_t,
|
||||
[
|
||||
- AC_TRY_COMPILE([
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
- ],[
|
||||
+ ]], [[
|
||||
socklen_t foo;
|
||||
- ],[
|
||||
+ ]])],[
|
||||
ac_cv_c_socklen_t=yes
|
||||
],[
|
||||
ac_cv_c_socklen_t=no
|
||||
@@ -581,35 +477,6 @@ fi
|
||||
|
||||
AC_C_ENDIAN
|
||||
|
||||
-AC_DEFUN([AC_C_HTONLL],
|
||||
-[
|
||||
- AC_MSG_CHECKING([for htonll])
|
||||
- have_htoll="no"
|
||||
- AC_TRY_LINK([
|
||||
-#include <sys/types.h>
|
||||
-#include <netinet/in.h>
|
||||
-#ifdef HAVE_INTTYPES_H
|
||||
-#include <inttypes.h> */
|
||||
-#endif
|
||||
- ], [
|
||||
- return htonll(0);
|
||||
- ], [
|
||||
- have_htoll="yes"
|
||||
- AC_DEFINE([HAVE_HTONLL], [1], [Have ntohll])
|
||||
- ], [
|
||||
- have_htoll="no"
|
||||
- ])
|
||||
-
|
||||
- AC_MSG_RESULT([$have_htoll])
|
||||
-])
|
||||
-
|
||||
-AC_C_HTONLL
|
||||
-
|
||||
-dnl Check whether the user's system supports pthread
|
||||
-AC_SEARCH_LIBS(pthread_create, pthread)
|
||||
-if test "x$ac_cv_search_pthread_create" = "xno"; then
|
||||
- AC_MSG_ERROR([Can't enable threads without the POSIX thread library.])
|
||||
-fi
|
||||
|
||||
AC_CHECK_FUNCS(mlockall)
|
||||
AC_CHECK_FUNCS(getpagesizes)
|
||||
@@ -670,13 +537,13 @@ dnl These were added in 4.1.2, but 32bit
|
||||
dnl lacks testable defines.
|
||||
have_gcc_atomics=no
|
||||
AC_MSG_CHECKING(for GCC atomics)
|
||||
-AC_TRY_LINK([],[
|
||||
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
|
||||
unsigned short a;
|
||||
unsigned short b;
|
||||
b = __sync_add_and_fetch(&a, 1);
|
||||
b = __sync_sub_and_fetch(&a, 2);
|
||||
- ],[have_gcc_atomics=yes
|
||||
- AC_DEFINE(HAVE_GCC_ATOMICS, 1, [GCC Atomics available])])
|
||||
+ ]])],[have_gcc_atomics=yes
|
||||
+ AC_DEFINE(HAVE_GCC_ATOMICS, 1, [GCC Atomics available])],[])
|
||||
AC_MSG_RESULT($have_gcc_atomics)
|
||||
|
||||
dnl Check for usage of 64bit atomics
|
||||
@@ -758,29 +625,5 @@ AM_CONDITIONAL([BUILD_SPECIFICATIONS],
|
||||
[test "x$enable_docs" != "xno" -a "x$XML2RFC" != "xno" -a "x$XSLTPROC" != "xno"])
|
||||
|
||||
|
||||
-dnl Let the compiler be a bit more picky. Please note that you cannot
|
||||
-dnl specify these flags to the compiler before AC_CHECK_FUNCS, because
|
||||
-dnl the test program will generate a compilation warning and hence fail
|
||||
-dnl to detect the function ;-)
|
||||
-if test "$ICC" = "yes"
|
||||
-then
|
||||
- dnl ICC trying to be gcc.
|
||||
- CFLAGS="$CFLAGS -diag-disable 187 -Wall -Werror"
|
||||
- AC_DEFINE([_GNU_SOURCE],[1],[find sigignore on Linux])
|
||||
-elif test "$GCC" = "yes"
|
||||
-then
|
||||
- GCC_VERSION=`$CC -dumpversion`
|
||||
- CFLAGS="$CFLAGS -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls"
|
||||
- case $GCC_VERSION in
|
||||
- 4.4.*)
|
||||
- CFLAGS="$CFLAGS -fno-strict-aliasing"
|
||||
- ;;
|
||||
- esac
|
||||
- AC_DEFINE([_GNU_SOURCE],[1],[find sigignore on Linux])
|
||||
-elif test "$SUNCC" = "yes"
|
||||
-then
|
||||
- CFLAGS="$CFLAGS -errfmt=error -errwarn -errshort=tags"
|
||||
-fi
|
||||
-
|
||||
AC_CONFIG_FILES(Makefile doc/Makefile)
|
||||
AC_OUTPUT
|
||||
Index: memcached-1.5.17/Makefile.am
|
||||
===================================================================
|
||||
--- memcached-1.5.17.orig/Makefile.am 2019-08-28 00:17:56.000000000 +0200
|
||||
+++ memcached-1.5.17/Makefile.am 2019-09-03 11:45:07.724581146 +0200
|
||||
@@ -1,3 +1,6 @@
|
||||
+AM_CFLAGS = -pthread -Wall -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
|
||||
+AM_CPPFLAGS = -include $(top_builddir)/config.h
|
||||
+
|
||||
bin_PROGRAMS = memcached
|
||||
pkginclude_HEADERS = protocol_binary.h
|
||||
noinst_PROGRAMS = memcached-debug sizes testapp timedrun
|
||||
@@ -63,11 +66,12 @@ memcached_SOURCES += tls.c tls.h
|
||||
endif
|
||||
|
||||
memcached_debug_SOURCES = $(memcached_SOURCES)
|
||||
-memcached_CPPFLAGS = -DNDEBUG
|
||||
-memcached_debug_LDADD = @PROFILER_LDFLAGS@
|
||||
-memcached_debug_CFLAGS = @PROFILER_FLAGS@
|
||||
+memcached_CPPFLAGS = $(AM_CPPFLAGS) -DNDEBUG
|
||||
+memcached_debug_LDADD = @PROFILER_LDFLAGS@ $(LIBEVENT_LIBS)
|
||||
+memcached_debug_CFLAGS = @PROFILER_FLAGS@ $(AM_CFLAGS)
|
||||
+memcached_debug_CPPFLAGS = $(AM_CPPFLAGS)
|
||||
|
||||
-memcached_LDADD =
|
||||
+memcached_LDADD = $(LIBEVENT_LIBS)
|
||||
memcached_DEPENDENCIES =
|
||||
memcached_debug_DEPENDENCIES =
|
||||
CLEANFILES=
|
@ -1,61 +0,0 @@
|
||||
Index: util.c
|
||||
===================================================================
|
||||
--- util.c.orig
|
||||
+++ util.c
|
||||
@@ -167,30 +167,3 @@ void vperror(const char *fmt, ...) {
|
||||
perror(buf);
|
||||
}
|
||||
|
||||
-#ifndef HAVE_HTONLL
|
||||
-static uint64_t mc_swap64(uint64_t in) {
|
||||
-#ifdef ENDIAN_LITTLE
|
||||
- /* Little endian, flip the bytes around until someone makes a faster/better
|
||||
- * way to do this. */
|
||||
- int64_t rv = 0;
|
||||
- int i = 0;
|
||||
- for(i = 0; i<8; i++) {
|
||||
- rv = (rv << 8) | (in & 0xff);
|
||||
- in >>= 8;
|
||||
- }
|
||||
- return rv;
|
||||
-#else
|
||||
- /* big-endian machines don't need byte swapping */
|
||||
- return in;
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
-uint64_t ntohll(uint64_t val) {
|
||||
- return mc_swap64(val);
|
||||
-}
|
||||
-
|
||||
-uint64_t htonll(uint64_t val) {
|
||||
- return mc_swap64(val);
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
Index: util.h
|
||||
===================================================================
|
||||
--- util.h.orig
|
||||
+++ util.h
|
||||
@@ -11,16 +11,17 @@ bool uriencode(const char *src, char *ds
|
||||
*
|
||||
* returns true if conversion succeeded.
|
||||
*/
|
||||
+
|
||||
+#include <endian.h>
|
||||
+
|
||||
bool safe_strtoull(const char *str, uint64_t *out);
|
||||
bool safe_strtoll(const char *str, int64_t *out);
|
||||
bool safe_strtoul(const char *str, uint32_t *out);
|
||||
bool safe_strtol(const char *str, int32_t *out);
|
||||
bool safe_strtod(const char *str, double *out);
|
||||
|
||||
-#ifndef HAVE_HTONLL
|
||||
-extern uint64_t htonll(uint64_t);
|
||||
-extern uint64_t ntohll(uint64_t);
|
||||
-#endif
|
||||
+#define htonll(x) htobe64(x)
|
||||
+#define ntohll(x) be64toh(x)
|
||||
|
||||
#ifdef __GCC
|
||||
# define __gcc_attribute__ __attribute__
|
@ -1,3 +1,40 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 26 01:22:59 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- apply patch from https://github.com/memcached/memcached/pull/635
|
||||
to fix crashes we saw during the testsuite
|
||||
- disable extstore on s390 for now as there are known bugs on that
|
||||
platform
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 24 21:27:33 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- limit tls support to 15 and above
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 24 21:20:51 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- disable lto until the 2 settings structs are resolved
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 24 20:54:55 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- update to version 1.6.2 (boo# 1167522) CVE-2020-10931
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes162
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes161
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes160
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes1522
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes1521
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes1520
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes1519
|
||||
https://github.com/memcached/memcached/wiki/ReleaseNotes1518
|
||||
- dropped all patches after reviewing with upstream:
|
||||
memcached-1.4.5.dif
|
||||
memcached-autofoo.patch
|
||||
memcached-use-endian_h.patch
|
||||
- enable TLS support (new BR: openssl-devel perl-IO-Socket-SSL
|
||||
perl-Net-SSLeay)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 3 09:53:22 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package memcached
|
||||
#
|
||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2020 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -20,8 +20,15 @@
|
||||
%if ! %{defined _fillupdir}
|
||||
%define _fillupdir %{_localstatedir}/adm/fillup-templates
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} > 1500
|
||||
%bcond_without tls
|
||||
%else
|
||||
%bcond_with tls
|
||||
%endif
|
||||
|
||||
Name: memcached
|
||||
Version: 1.5.17
|
||||
Version: 1.6.2
|
||||
Release: 0
|
||||
Summary: A high-performance, distributed memory object caching system
|
||||
License: BSD-3-Clause
|
||||
@ -32,14 +39,17 @@ Source1: %{name}.init
|
||||
Source2: %{name}.sysconfig
|
||||
Source3: memcached-rpmlintrc
|
||||
Source4: memcached.service
|
||||
Patch0: memcached-1.4.5.dif
|
||||
Patch1: memcached-autofoo.patch
|
||||
Patch2: memcached-use-endian_h.patch
|
||||
Patch: https://patch-diff.githubusercontent.com/raw/memcached/memcached/pull/635.patch
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: cyrus-sasl-devel
|
||||
BuildRequires: libevent-devel
|
||||
BuildRequires: libtool
|
||||
%if %{with tls}
|
||||
BuildRequires: openssl-devel >= 1.1.0
|
||||
BuildRequires: perl-IO-Socket-SSL
|
||||
BuildRequires: perl-Net-SSLeay
|
||||
%endif
|
||||
BuildRequires: pkgconfig
|
||||
Requires(pre): %fillup_prereq
|
||||
Requires(pre): %{_sbindir}/groupadd
|
||||
@ -79,19 +89,21 @@ This package contains development files
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0
|
||||
%patch1 -p1
|
||||
%patch2
|
||||
%patch -p1
|
||||
|
||||
%build
|
||||
autoreconf -fi
|
||||
%if 0%{?suse_version} <= 1140
|
||||
export LIBEVENT_CFLAGS="-I%{_includedir}"
|
||||
export LIBEVENT_LIBS="-levent"
|
||||
%endif
|
||||
%define _lto_cflags %{nil}
|
||||
%configure \
|
||||
%if %{with tls}
|
||||
--enable-tls \
|
||||
%endif
|
||||
--enable-sasl \
|
||||
--enable-sasl-pwdb \
|
||||
--enable-seccomp \
|
||||
--disable-coverage \
|
||||
%ifarch s390 s390x
|
||||
--disable-extstore \
|
||||
%endif
|
||||
--bindir=%{_sbindir}
|
||||
|
||||
make %{?_smp_mflags}
|
||||
|
Loading…
Reference in New Issue
Block a user