From 3fb9966b4fee3c74c0af2e9ff55fa4d5459756c0 Mon Sep 17 00:00:00 2001 From: wangmy Date: Tue, 8 Feb 2022 16:28:42 +0800 Subject: screen: upgrade 4.8.0 -> 4.9.0 CVE-2021-26937.patch removed since it is included in 4.9.0 Changelog: ========= * Hardstatus option for used encoding (escape string '%e') * OpenBSD uses native openpty() from its utils.h * Fixes: - fix combining char handling that could lead to a segfault - CVE-2021-26937: possible denial of service via a crafted UTF-8 character sequence (bug #60030) - make screen exit code be 0 when checking --help - session names limit is 80 symbols (bug #61534) - option -X ignores specified user in multiuser env (bug #37437) - a lot of reformations/fixes/cleanups (man page and source code) (From OE-Core rev: 8247097d2313ceb73bab1621d61b8aa3fb59095e) Signed-off-by: Wang Mingyu Signed-off-by: Richard Purdie --- .../screen/screen/CVE-2021-26937.patch | 68 ---------------------- meta/recipes-extended/screen/screen_4.8.0.bb | 51 ---------------- meta/recipes-extended/screen/screen_4.9.0.bb | 49 ++++++++++++++++ 3 files changed, 49 insertions(+), 119 deletions(-) delete mode 100644 meta/recipes-extended/screen/screen/CVE-2021-26937.patch delete mode 100644 meta/recipes-extended/screen/screen_4.8.0.bb create mode 100644 meta/recipes-extended/screen/screen_4.9.0.bb diff --git a/meta/recipes-extended/screen/screen/CVE-2021-26937.patch b/meta/recipes-extended/screen/screen/CVE-2021-26937.patch deleted file mode 100644 index 983b35c1b0..0000000000 --- a/meta/recipes-extended/screen/screen/CVE-2021-26937.patch +++ /dev/null @@ -1,68 +0,0 @@ -Description: [CVE-2021-26937] Fix out of bounds array access -Author: Michael Schröder -Bug-Debian: https://bugs.debian.org/982435 -Bug: https://savannah.gnu.org/bugs/?60030 -Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html -Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3 -Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html - -CVE: CVE-2021-26937 -Upstream-Status: Pending -Signed-off-by: Scott Murray - ---- a/encoding.c -+++ b/encoding.c -@@ -43,7 +43,7 @@ - # ifdef UTF8 - static int recode_char __P((int, int, int)); - static int recode_char_to_encoding __P((int, int)); --static void comb_tofront __P((int, int)); -+static void comb_tofront __P((int)); - # ifdef DW_CHARS - static int recode_char_dw __P((int, int *, int, int)); - static int recode_char_dw_to_encoding __P((int, int *, int)); -@@ -1263,6 +1263,8 @@ - {0x30000, 0x3FFFD}, - }; - -+ if (c >= 0xdf00 && c <= 0xdfff) -+ return 1; /* dw combining sequence */ - return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) || - (cjkwidth && - bisearch(c, ambiguous, -@@ -1330,11 +1332,12 @@ - } - - static void --comb_tofront(root, i) --int root, i; -+comb_tofront(i) -+int i; - { - for (;;) - { -+ int root = i >= 0x700 ? 0x801 : 0x800; - debug1("bring to front: %x\n", i); - combchars[combchars[i]->prev]->next = combchars[i]->next; - combchars[combchars[i]->next]->prev = combchars[i]->prev; -@@ -1396,9 +1399,9 @@ - { - /* full, recycle old entry */ - if (c1 >= 0xd800 && c1 < 0xe000) -- comb_tofront(root, c1 - 0xd800); -+ comb_tofront(c1 - 0xd800); - i = combchars[root]->prev; -- if (c1 == i + 0xd800) -+ if (i == 0x800 || i == 0x801 || c1 == i + 0xd800) - { - /* completely full, can't recycle */ - debug("utf8_handle_comp: completely full!\n"); -@@ -1422,7 +1425,7 @@ - mc->font = (i >> 8) + 0xd8; - mc->fontx = 0; - debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800); -- comb_tofront(root, i); -+ comb_tofront(i); - } - - #else /* !UTF8 */ diff --git a/meta/recipes-extended/screen/screen_4.8.0.bb b/meta/recipes-extended/screen/screen_4.8.0.bb deleted file mode 100644 index 6d307d5abc..0000000000 --- a/meta/recipes-extended/screen/screen_4.8.0.bb +++ /dev/null @@ -1,51 +0,0 @@ -SUMMARY = "Multiplexing terminal manager" -DESCRIPTION = "Screen is a full-screen window manager \ -that multiplexes a physical terminal between several \ -processes, typically interactive shells." -HOMEPAGE = "http://www.gnu.org/software/screen/" -BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen" - -SECTION = "console/utils" - -LICENSE = "GPLv3+" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ - file://screen.h;endline=26;md5=b8dc717c9a3dba842ae6c44ca0f73f52 \ - " - -DEPENDS = "ncurses virtual/crypt \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" -RDEPENDS:${PN} = "base-files" - -SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \ - file://0002-comm.h-now-depends-on-term.h.patch \ - file://0001-fix-for-multijob-build.patch \ - file://0001-Remove-more-compatibility-stuff.patch \ - file://CVE-2021-26937.patch \ - " - -SRC_URI[md5sum] = "d276213d3acd10339cd37848b8c4ab1e" -SRC_URI[sha256sum] = "6e11b13d8489925fde25dfb0935bf6ed71f9eb47eff233a181e078fde5655aa1" - -inherit autotools texinfo - -PACKAGECONFIG ??= "" -PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter," - -EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 --with-sys-screenrc=${sysconfdir}/screenrc \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}" - -do_install:append () { - install -D -m 644 ${S}/etc/etcscreenrc ${D}/${sysconfdir}/screenrc - if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then - install -D -m 644 ${WORKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen - fi -} - -pkg_postinst:${PN} () { - grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells -} - -pkg_postrm:${PN} () { - printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells -} diff --git a/meta/recipes-extended/screen/screen_4.9.0.bb b/meta/recipes-extended/screen/screen_4.9.0.bb new file mode 100644 index 0000000000..1ed0961630 --- /dev/null +++ b/meta/recipes-extended/screen/screen_4.9.0.bb @@ -0,0 +1,49 @@ +SUMMARY = "Multiplexing terminal manager" +DESCRIPTION = "Screen is a full-screen window manager \ +that multiplexes a physical terminal between several \ +processes, typically interactive shells." +HOMEPAGE = "http://www.gnu.org/software/screen/" +BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen" + +SECTION = "console/utils" + +LICENSE = "GPLv3+" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ + file://screen.h;endline=26;md5=b8dc717c9a3dba842ae6c44ca0f73f52 \ + " + +DEPENDS = "ncurses virtual/crypt \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" +RDEPENDS:${PN} = "base-files" + +SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \ + file://0002-comm.h-now-depends-on-term.h.patch \ + file://0001-fix-for-multijob-build.patch \ + file://0001-Remove-more-compatibility-stuff.patch \ + " + +SRC_URI[sha256sum] = "f9335281bb4d1538ed078df78a20c2f39d3af9a4e91c57d084271e0289c730f4" + +inherit autotools texinfo + +PACKAGECONFIG ??= "" +PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter," + +EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 --with-sys-screenrc=${sysconfdir}/screenrc \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}" + +do_install:append () { + install -D -m 644 ${S}/etc/etcscreenrc ${D}/${sysconfdir}/screenrc + if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then + install -D -m 644 ${WORKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen + fi +} + +pkg_postinst:${PN} () { + grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells +} + +pkg_postrm:${PN} () { + printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells +} -- cgit v1.2.3-54-g00ecf