diff mbox series

[meta-oe] libwebsockets: upgrade 4.5.8 -> 5.0.0

Message ID 20261008182524.665019-1-peter.marko@siemens.com
State New
Headers show
Series [meta-oe] libwebsockets: upgrade 4.5.8 -> 5.0.0 | expand

Commit Message

Peter Marko Oct. 8, 2026, 6:25 p.m. UTC
From: Peter Marko <peter.marko@siemens.com>

Release notes: [1]

Solves (at least) CVE-2026-19773 and CVE-2026-78161.
[2] claims that there are many security fixes available.

Drop patch included in this release.
Drop LIB_SUFFIX which now only throws deprecation warning.
Disable WERROR to keep build green.

Add new option http3 to packageconfig and disable it as it cannot use
openssl which is now enabled for ssl package option.
It can be used together with openssl for ssl and gnutls for https but
that would be weird.
Added possibility to switch gnutls as SSL backend.

License-Update: Addend additional files [3]

[1] https://github.com/warmcat/libwebsockets/blob/v5.0.0/README.md?plain=1#L29
[2] https://github.com/warmcat/libwebsockets/commit/ed1d8f3bc5b7772f283f05d77dec3b4ced0c95b3
[3] https://github.com/warmcat/libwebsockets/commit/a64f8d72c7442d8a982cce5fc0754d87c8db7ee7

Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
 .../libwebsockets/CVE-2026-10650.patch        | 46 -------------------
 ...ockets_4.5.8.bb => libwebsockets_5.0.0.bb} | 16 ++++---
 2 files changed, 10 insertions(+), 52 deletions(-)
 delete mode 100644 meta-oe/recipes-connectivity/libwebsockets/libwebsockets/CVE-2026-10650.patch
 rename meta-oe/recipes-connectivity/libwebsockets/{libwebsockets_4.5.8.bb => libwebsockets_5.0.0.bb} (86%)
diff mbox series

Patch

diff --git a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets/CVE-2026-10650.patch b/meta-oe/recipes-connectivity/libwebsockets/libwebsockets/CVE-2026-10650.patch
deleted file mode 100644
index 5846b3616d..0000000000
--- a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets/CVE-2026-10650.patch
+++ /dev/null
@@ -1,46 +0,0 @@ 
-From 3f9f0c6ecaf0e6f3f219d30632c5d1f2479d7498 Mon Sep 17 00:00:00 2001
-From: Biniam F Demissie <biniamfd@gmail.com>
-Date: Wed, 13 May 2026 04:25:55 +0100
-Subject: [PATCH] ssh: plugin: add limit to resource exhaustion
-
-CVE: CVE-2026-10650
-Upstream-Status: Backport [https://github.com/warmcat/libwebsockets/commit/3f9f0c6ecaf0e6f3f219d30632c5d1f2479d7498]
-Signed-off-by: Peter Marko <peter.marko@siemens.com>
----
- plugins/ssh-base/sshd.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/plugins/ssh-base/sshd.c b/plugins/ssh-base/sshd.c
-index ea35cb8b7..c849644d4 100644
---- a/plugins/ssh-base/sshd.c
-+++ b/plugins/ssh-base/sshd.c
-@@ -1,7 +1,7 @@
- /*
-  * libwebsockets - small server side websockets and web server implementation
-  *
-- * Copyright (C) 2010 - 2019 Andy Green <andy@warmcat.com>
-+ * Copyright (C) 2010 - 2026 Andy Green <andy@warmcat.com>
-  *
-  * Permission is hereby granted, free of charge, to any person obtaining a copy
-  * of this software and associated documentation files (the "Software"), to
-@@ -28,6 +28,8 @@
- #include <string.h>
- #include <stdlib.h>
- 
-+#define LWS_SSH_MAX_PACKET_SIZE  (256 * 1024)
-+
- void *sshd_zalloc(size_t s)
- {
- 	void *p = malloc(s);
-@@ -592,6 +594,11 @@ again:
- 			pss->parser_state = SSHS_MSG_PADDING;
- 			pss->ctr = 0;
- 			pss->pos = 4;
-+
-+			if (pss->msg_len > LWS_SSH_MAX_PACKET_SIZE) {
-+				lwsl_notice("msg size %u exceeds maximum\n", pss->msg_len);
-+				goto bail;
-+			}
- 			if (pss->msg_len < 2 + 4) {
- 				lwsl_notice("illegal msg size\n");
- 				goto bail;
diff --git a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.5.8.bb b/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_5.0.0.bb
similarity index 86%
rename from meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.5.8.bb
rename to meta-oe/recipes-connectivity/libwebsockets/libwebsockets_5.0.0.bb
index 005729dcac..bafaf10f9b 100644
--- a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.5.8.bb
+++ b/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_5.0.0.bb
@@ -1,15 +1,15 @@ 
 SUMMARY = "Canonical libwebsockets.org websocket library"
 HOMEPAGE = "https://libwebsockets.org/"
 LICENSE = "Apache-2.0 AND BSD-3-Clause AND MIT AND OFL-1.1 AND Zlib"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b5d391cc7929bcba238f9ba6805f7574"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d1d99ab4e0f1be7992a891906e47add2"
 
 DEPENDS = "zlib"
 DEPENDS:append:class-native = " libcap-native"
 
-SRCREV = "fbb0baf6af9c4324f0f1591734c78b0089b599d4"
+SRCREV = "2491a1b101283cf7886d05033345b7e821825319"
+SRCBRANCH = "v${@oe.utils.trim_version("${PV}", 2)}-stable"
 SRC_URI = " \
-    git://github.com/warmcat/libwebsockets.git;protocol=https;branch=v4.5-stable;tag=v${PV} \
-    file://CVE-2026-10650.patch \
+    git://github.com/warmcat/libwebsockets.git;protocol=https;branch=${SRCBRANCH};tag=v${PV} \
 "
 
 UPSTREAM_CHECK_URI = "https://github.com/warmcat/${BPN}/releases"
@@ -20,25 +20,29 @@  inherit cmake pkgconfig
 PACKAGECONFIG ?= "libuv client server http2 ssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
 PACKAGECONFIG[client] = "-DLWS_WITHOUT_CLIENT=OFF,-DLWS_WITHOUT_CLIENT=ON,"
 PACKAGECONFIG[http2] = "-DLWS_WITH_HTTP2=ON,-DLWS_WITH_HTTP2=OFF,"
+PACKAGECONFIG[http3] = "-DLWS_WITH_HTTP3=ON -DLWS_ROLE_QUIC=ON,-DLWS_WITH_HTTP3=OFF -DLWS_ROLE_QUIC=OFF,gnutls"
 PACKAGECONFIG[ipv6] = "-DLWS_IPV6=ON,-DLWS_IPV6=OFF,"
 PACKAGECONFIG[libevent] = "-DLWS_WITH_LIBEVENT=ON,-DLWS_WITH_LIBEVENT=OFF,libevent"
 PACKAGECONFIG[libev] = "-DLWS_WITH_LIBEV=ON,-DLWS_WITH_LIBEV=OFF,libev"
 PACKAGECONFIG[libuv] = "-DLWS_WITH_LIBUV=ON,-DLWS_WITH_LIBUV=OFF,libuv"
 PACKAGECONFIG[server] = "-DLWS_WITHOUT_SERVER=OFF,-DLWS_WITHOUT_SERVER=ON,"
-PACKAGECONFIG[ssl] = "-DLWS_WITH_SSL=ON,-DLWS_WITH_SSL=OFF,openssl libcap"
+PACKAGECONFIG[ssl] = "-DLWS_WITH_SSL=ON,-DLWS_WITH_SSL=OFF,${SSL_DEPENDENCY} libcap"
+PACKAGECONFIG[gnutls] = "-DLWS_WITH_GNUTLS=ON,-DLWS_WITH_GNUTLS=OFF,gnutls"
 PACKAGECONFIG[static] = "-DLWS_WITH_STATIC=ON,-DLWS_WITH_STATIC=OFF -DLWS_LINK_TESTAPPS_DYNAMIC=ON,"
 PACKAGECONFIG[systemd] = "-DLWS_WITH_SDEVENT=ON,-DLWS_WITH_SDEVENT=OFF,systemd"
 PACKAGECONFIG[examples] = "-DLWS_WITH_MINIMAL_EXAMPLES=ON,-DLWS_WITH_MINIMAL_EXAMPLES=OFF"
 
+SSL_DEPENDENCY = "${@bb.utils.contains('PACKAGECONFIG', 'gnutls', '', 'openssl', d)}"
+
 python __anonymous() {
   if bb.utils.contains('PACKAGECONFIG', 'systemd', True, False, d) and not bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
     bb.fatal("PACKAGECONFIG contains systemd but DISTRO_FEATURES doesn't")
 }
 
 EXTRA_OECMAKE += " \
-    -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
     -DLWS_WITHOUT_TESTAPPS=ON \
     -DLWS_HAVE_HMAC_CTX_new=ON \
+    -DDISABLE_WERROR=ON \
 "
 
 do_compile:prepend() {