summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/screen
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/screen')
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2021-26937.patch68
-rw-r--r--meta/recipes-extended/screen/screen_4.9.1.bb (renamed from meta/recipes-extended/screen/screen_4.8.0.bb)18
2 files changed, 8 insertions, 78 deletions
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 @@
1Description: [CVE-2021-26937] Fix out of bounds array access
2Author: Michael Schröder <mls@suse.de>
3Bug-Debian: https://bugs.debian.org/982435
4Bug: https://savannah.gnu.org/bugs/?60030
5Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
6Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
7Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
8
9CVE: CVE-2021-26937
10Upstream-Status: Pending
11Signed-off-by: Scott Murray <scott.murray@konsulko.com>
12
13--- a/encoding.c
14+++ b/encoding.c
15@@ -43,7 +43,7 @@
16 # ifdef UTF8
17 static int recode_char __P((int, int, int));
18 static int recode_char_to_encoding __P((int, int));
19-static void comb_tofront __P((int, int));
20+static void comb_tofront __P((int));
21 # ifdef DW_CHARS
22 static int recode_char_dw __P((int, int *, int, int));
23 static int recode_char_dw_to_encoding __P((int, int *, int));
24@@ -1263,6 +1263,8 @@
25 {0x30000, 0x3FFFD},
26 };
27
28+ if (c >= 0xdf00 && c <= 0xdfff)
29+ return 1; /* dw combining sequence */
30 return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
31 (cjkwidth &&
32 bisearch(c, ambiguous,
33@@ -1330,11 +1332,12 @@
34 }
35
36 static void
37-comb_tofront(root, i)
38-int root, i;
39+comb_tofront(i)
40+int i;
41 {
42 for (;;)
43 {
44+ int root = i >= 0x700 ? 0x801 : 0x800;
45 debug1("bring to front: %x\n", i);
46 combchars[combchars[i]->prev]->next = combchars[i]->next;
47 combchars[combchars[i]->next]->prev = combchars[i]->prev;
48@@ -1396,9 +1399,9 @@
49 {
50 /* full, recycle old entry */
51 if (c1 >= 0xd800 && c1 < 0xe000)
52- comb_tofront(root, c1 - 0xd800);
53+ comb_tofront(c1 - 0xd800);
54 i = combchars[root]->prev;
55- if (c1 == i + 0xd800)
56+ if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
57 {
58 /* completely full, can't recycle */
59 debug("utf8_handle_comp: completely full!\n");
60@@ -1422,7 +1425,7 @@
61 mc->font = (i >> 8) + 0xd8;
62 mc->fontx = 0;
63 debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
64- comb_tofront(root, i);
65+ comb_tofront(i);
66 }
67
68 #else /* !UTF8 */
diff --git a/meta/recipes-extended/screen/screen_4.8.0.bb b/meta/recipes-extended/screen/screen_4.9.1.bb
index fe640c262b..57d1481049 100644
--- a/meta/recipes-extended/screen/screen_4.8.0.bb
+++ b/meta/recipes-extended/screen/screen_4.9.1.bb
@@ -7,25 +7,23 @@ BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen"
7 7
8SECTION = "console/utils" 8SECTION = "console/utils"
9 9
10LICENSE = "GPLv3+" 10LICENSE = "GPL-3.0-or-later"
11LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ 11LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
12 file://screen.h;endline=26;md5=b8dc717c9a3dba842ae6c44ca0f73f52 \ 12 file://screen.h;endline=26;md5=b8dc717c9a3dba842ae6c44ca0f73f52 \
13 " 13 "
14 14
15DEPENDS = "ncurses virtual/crypt \ 15DEPENDS = "ncurses virtual/crypt \
16 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" 16 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
17RDEPENDS_${PN} = "base-files" 17RDEPENDS:${PN} = "base-files"
18 18
19SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \ 19SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
20 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \ 20 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \
21 file://0002-comm.h-now-depends-on-term.h.patch \ 21 file://0002-comm.h-now-depends-on-term.h.patch \
22 file://0001-fix-for-multijob-build.patch \ 22 file://0001-fix-for-multijob-build.patch \
23 file://0001-Remove-more-compatibility-stuff.patch \ 23 file://0001-Remove-more-compatibility-stuff.patch \
24 file://CVE-2021-26937.patch \ 24 "
25 "
26 25
27SRC_URI[md5sum] = "d276213d3acd10339cd37848b8c4ab1e" 26SRC_URI[sha256sum] = "26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69"
28SRC_URI[sha256sum] = "6e11b13d8489925fde25dfb0935bf6ed71f9eb47eff233a181e078fde5655aa1"
29 27
30inherit autotools texinfo 28inherit autotools texinfo
31 29
@@ -35,17 +33,17 @@ PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=n
35EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 --with-sys-screenrc=${sysconfdir}/screenrc \ 33EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 --with-sys-screenrc=${sysconfdir}/screenrc \
36 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}" 34 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}"
37 35
38do_install_append () { 36do_install:append () {
39 install -D -m 644 ${S}/etc/etcscreenrc ${D}/${sysconfdir}/screenrc 37 install -D -m 644 ${S}/etc/etcscreenrc ${D}/${sysconfdir}/screenrc
40 if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then 38 if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
41 install -D -m 644 ${WORKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen 39 install -D -m 644 ${UNPACKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen
42 fi 40 fi
43} 41}
44 42
45pkg_postinst_${PN} () { 43pkg_postinst:${PN} () {
46 grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells 44 grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells
47} 45}
48 46
49pkg_postrm_${PN} () { 47pkg_postrm:${PN} () {
50 printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells 48 printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
51} 49}