1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-12 18:59:50 +03:00

community/redict: upgrade to 7.3.4

https://codeberg.org/redict/redict/releases/tag/7.3.4
This commit is contained in:
fossdd 2025-07-11 10:37:24 +02:00 committed by achill (fossdd)
parent 6b4b9e6491
commit f39e9cddeb
2 changed files with 3 additions and 118 deletions

View file

@ -3,8 +3,8 @@
# Contributor: TBK <alpine@jjtc.eu>
# Maintainer: fossdd <fossdd@pwned.life>
pkgname=redict
pkgver=7.3.3
pkgrel=2
pkgver=7.3.4
pkgrel=0
pkgdesc="A distributed key/value database"
url="https://redict.io/"
arch="all"
@ -35,7 +35,6 @@ source="redict-$pkgver.tar.gz::https://codeberg.org/redict/redict/archive/$pkgve
$pkgname.logrotate
CVE-2025-27151.patch
CVE-2025-32023.patch
CVE-2025-48367.patch
"
options="!check" # very flaky
@ -110,7 +109,7 @@ compat() {
}
sha512sums="
7fbdee54f26d59d74bab2b9fa619cb7c0135aebb38ff891423f4963ca593e20018f9f789288eb3ebc769f02a05da3fe35033f75d42902bb99421cae5689f5e88 redict-7.3.3.tar.gz
6f3bcdc965d6c761874d32bb107854d7375c5bccbee5a71f438b4ec176136b0f55b864bd9448898f92dc0c7e5b6e188139b8456ee88c2293e600fa854f36b621 redict-7.3.4.tar.gz
96740880cd0caac2cecb11066a555055e7c3f10feb312b2d4c7a206fb92c1003415cf7ab81bec4ac96f7631724d9097b1ca130621c8b564a7987dcd75d2f6e25 redict.conf.patch
a3cec12566097fe78a31d09db77ca956ba52ee1fbb8ac4f5ffc49d0299e29f94ef55830f7760324a875bd47391eee116e0c4efb4bef00d6045bf98b81f392dfc sentinel.conf.patch
555edff7dd7768c9579a101df86e91cc14cb9941365f051e0e993f1c341cd2b46fcfab6f4a6fd4c1d589242363e323734b453652d687d2d46cb651d84d42caee redict.initd
@ -119,5 +118,4 @@ a3cec12566097fe78a31d09db77ca956ba52ee1fbb8ac4f5ffc49d0299e29f94ef55830f7760324a
68e0b0c4c8def5d42149b895ac681d91b8c691a5fd90bce64e6bf6c7780f33c6ac02a923642ebdc85f6bb41d8039cc38b7d3be49e5e9f86f097e3d1f6d41ecd4 redict.logrotate
4009aa507fc0ffc3e8ad93e62447a8039c0a68abff8cfc612543238eeca1a78fa0edad5ee8e27646f36edbd5a68fae59bb320eb4f872ebe4031b8d855af59a63 CVE-2025-27151.patch
2998492265050707ad0a2d82b3005ad447a845f0986cd1c0e0597eb57befd18a5fe908cfd15125fa053c56059e1ad9ea26ef0af22809d530a3005d0bf9c51ab3 CVE-2025-32023.patch
96b8c421df39f0acf01008a65088d96e961bc5231acfb3b16c987d5b46368a398722563c81123eabe7a72406a46c131f89a361472959c6f232a646b776389d1d CVE-2025-48367.patch
"

View file

@ -1,113 +0,0 @@
Patch-Source: https://github.com/redis/redis/commit/bde62951accfc4bb0a516276fd0b4b307e140ce2
---
From bde62951accfc4bb0a516276fd0b4b307e140ce2 Mon Sep 17 00:00:00 2001
From: Ozan Tezcan <ozantezcan@gmail.com>
Date: Wed, 14 May 2025 11:02:30 +0300
Subject: [PATCH] Retry accept() even if accepted connection reports an error
(CVE-2025-48367)
In case of accept4() returns an error, we should check errno value and decide if we should retry accept4() without waiting next event loop iteration.
---
src/anet.c | 24 ++++++++++++++++++++++++
src/anet.h | 1 +
src/cluster_legacy.c | 2 ++
src/socket.c | 2 ++
src/tls.c | 2 ++
src/unix.c | 2 ++
6 files changed, 33 insertions(+)
diff --git a/src/anet.c b/src/anet.c
index ad4ac49d89a..d79434cef03 100644
--- a/src/anet.c
+++ b/src/anet.c
@@ -787,3 +787,27 @@ int anetIsFifo(char *filepath) {
if (stat(filepath, &sb) == -1) return 0;
return S_ISFIFO(sb.st_mode);
}
+
+/* This function must be called after accept4() fails. It returns 1 if 'err'
+ * indicates accepted connection faced an error, and it's okay to continue
+ * accepting next connection by calling accept4() again. Other errors either
+ * indicate programming errors, e.g. calling accept() on a closed fd or indicate
+ * a resource limit has been reached, e.g. -EMFILE, open fd limit has been
+ * reached. In the latter case, caller might wait until resources are available.
+ * See accept4() documentation for details. */
+int anetAcceptFailureNeedsRetry(int err) {
+ if (err == ECONNABORTED)
+ return 1;
+
+#if defined(__linux__)
+ /* For details, see 'Error Handling' section on
+ * https://man7.org/linux/man-pages/man2/accept.2.html */
+ if (err == ENETDOWN || err == EPROTO || err == ENOPROTOOPT ||
+ err == EHOSTDOWN || err == ENONET || err == EHOSTUNREACH ||
+ err == EOPNOTSUPP || err == ENETUNREACH)
+ {
+ return 1;
+ }
+#endif
+ return 0;
+}
diff --git a/src/anet.h b/src/anet.h
index 211421940dd..1d3aec9cdf5 100644
--- a/src/anet.h
+++ b/src/anet.h
@@ -53,5 +53,6 @@ int anetPipe(int fds[2], int read_flags, int write_flags);
int anetSetSockMarkId(char *err, int fd, uint32_t id);
int anetGetError(int fd);
int anetIsFifo(char *filepath);
+int anetAcceptFailureNeedsRetry(int err);
#endif
diff --git a/src/cluster_legacy.c b/src/cluster_legacy.c
index 88dc9969190..6f1635e9e5d 100644
--- a/src/cluster_legacy.c
+++ b/src/cluster_legacy.c
@@ -1253,6 +1253,8 @@ void clusterAcceptHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
while(max--) {
cfd = anetTcpAccept(server.neterr, fd, cip, sizeof(cip), &cport);
if (cfd == ANET_ERR) {
+ if (anetAcceptFailureNeedsRetry(errno))
+ continue;
if (errno != EWOULDBLOCK)
serverLog(LL_VERBOSE,
"Error accepting cluster node: %s", server.neterr);
diff --git a/src/socket.c b/src/socket.c
index 241a541080d..226b414f85e 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -308,6 +308,8 @@ static void connSocketAcceptHandler(aeEventLoop *el, int fd, void *privdata, int
while(max--) {
cfd = anetTcpAccept(server.neterr, fd, cip, sizeof(cip), &cport);
if (cfd == ANET_ERR) {
+ if (anetAcceptFailureNeedsRetry(errno))
+ continue;
if (errno != EWOULDBLOCK)
serverLog(LL_WARNING,
"Accepting client connection: %s", server.neterr);
diff --git a/src/tls.c b/src/tls.c
index 65526c04f7d..a0733a4b636 100644
--- a/src/tls.c
+++ b/src/tls.c
@@ -771,6 +771,8 @@ static void tlsAcceptHandler(aeEventLoop *el, int fd, void *privdata, int mask)
while(max--) {
cfd = anetTcpAccept(server.neterr, fd, cip, sizeof(cip), &cport);
if (cfd == ANET_ERR) {
+ if (anetAcceptFailureNeedsRetry(errno))
+ continue;
if (errno != EWOULDBLOCK)
serverLog(LL_WARNING,
"Accepting client connection: %s", server.neterr);
diff --git a/src/unix.c b/src/unix.c
index b61cb6d4959..e26f0d27ad1 100644
--- a/src/unix.c
+++ b/src/unix.c
@@ -102,6 +102,8 @@ static void connUnixAcceptHandler(aeEventLoop *el, int fd, void *privdata, int m
while(max--) {
cfd = anetUnixAccept(server.neterr, fd);
if (cfd == ANET_ERR) {
+ if (anetAcceptFailureNeedsRetry(errno))
+ continue;
if (errno != EWOULDBLOCK)
serverLog(LL_WARNING,
"Accepting client connection: %s", server.neterr);