diff options
author | Sören Tempel <soeren+git@soeren-tempel.net> | 2019-11-14 10:46:05 +0100 |
---|---|---|
committer | Sören Tempel <soeren+git@soeren-tempel.net> | 2019-11-14 10:52:15 +0100 |
commit | 967fec19d05fd7513735f54c0da3a49ef6a11e3d (patch) | |
tree | aa6c5b8af9b134b23265c8e1c7edf69950776e9c | |
parent | 9a4b8f04dafaa8ac635ac285f1ea3123ef510f93 (diff) | |
download | alpine_aports-967fec19d05fd7513735f54c0da3a49ef6a11e3d.tar.bz2 alpine_aports-967fec19d05fd7513735f54c0da3a49ef6a11e3d.tar.xz alpine_aports-967fec19d05fd7513735f54c0da3a49ef6a11e3d.zip |
main/libedit: backport fix for segfault in one-line terminals
See: https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54654
-rw-r--r-- | main/libedit/APKBUILD | 8 | ||||
-rw-r--r-- | main/libedit/fix-segfault-54654.patch | 30 |
2 files changed, 35 insertions, 3 deletions
diff --git a/main/libedit/APKBUILD b/main/libedit/APKBUILD index 657d06e7c3..ddec9c2c71 100644 --- a/main/libedit/APKBUILD +++ b/main/libedit/APKBUILD | |||
@@ -2,7 +2,7 @@ | |||
2 | pkgname=libedit | 2 | pkgname=libedit |
3 | pkgver=20191025.3.1 | 3 | pkgver=20191025.3.1 |
4 | _ver=${pkgver/./-} | 4 | _ver=${pkgver/./-} |
5 | pkgrel=0 | 5 | pkgrel=1 |
6 | pkgdesc="BSD line editing library" | 6 | pkgdesc="BSD line editing library" |
7 | url="https://www.thrysoee.dk/editline" | 7 | url="https://www.thrysoee.dk/editline" |
8 | arch="all" | 8 | arch="all" |
@@ -11,7 +11,8 @@ depends_dev="ncurses-dev" | |||
11 | makedepends_build="" | 11 | makedepends_build="" |
12 | makedepends_host="$depends_dev" | 12 | makedepends_host="$depends_dev" |
13 | subpackages="$pkgname-static $pkgname-dev $pkgname-doc" | 13 | subpackages="$pkgname-static $pkgname-dev $pkgname-doc" |
14 | source="https://www.thrysoee.dk/editline/libedit-$_ver.tar.gz" | 14 | source="https://www.thrysoee.dk/editline/libedit-$_ver.tar.gz |
15 | fix-segfault-54654.patch" | ||
15 | builddir="$srcdir"/libedit-$_ver | 16 | builddir="$srcdir"/libedit-$_ver |
16 | 17 | ||
17 | build() { | 18 | build() { |
@@ -38,4 +39,5 @@ package() { | |||
38 | rm "$pkgdir"/usr/share/man/man3/history.3* | 39 | rm "$pkgdir"/usr/share/man/man3/history.3* |
39 | } | 40 | } |
40 | 41 | ||
41 | sha512sums="9f475249b984e02ece0af3a0efe353233fef644ecf37482e28597a3ce552ca5a07678939b2c4ecbe3d2b14761fa67f23d2e839a322b94c0feeeba9e403b2be00 libedit-20191025-3.1.tar.gz" | 42 | sha512sums="9f475249b984e02ece0af3a0efe353233fef644ecf37482e28597a3ce552ca5a07678939b2c4ecbe3d2b14761fa67f23d2e839a322b94c0feeeba9e403b2be00 libedit-20191025-3.1.tar.gz |
43 | f31b4dee12be07f16d0dd20be37da982b2f2a13a7ac4e52e0a7cb97112d1544df527d65bad200db5c704ca977f495e0601777bcb7928564804e4643c7d95743a fix-segfault-54654.patch" | ||
diff --git a/main/libedit/fix-segfault-54654.patch b/main/libedit/fix-segfault-54654.patch new file mode 100644 index 0000000000..282ee4bc3e --- /dev/null +++ b/main/libedit/fix-segfault-54654.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | This patch fixes a segfault in re_fastputc. This segfault happens in | ||
2 | one-line terminals. It is a backport from upstream netbsd. | ||
3 | |||
4 | See: | ||
5 | |||
6 | * https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54654 | ||
7 | * https://freshbsd.org/commit/netbsd/src/PxLOa0eNmIl1zBKB | ||
8 | |||
9 | diff -upr libedit-20191025-3.1.orig/src/terminal.c libedit-20191025-3.1/src/terminal.c | ||
10 | --- libedit-20191025-3.1.orig/src/terminal.c 2019-11-14 10:41:42.834954338 +0100 | ||
11 | +++ libedit-20191025-3.1/src/terminal.c 2019-11-14 10:43:13.164941706 +0100 | ||
12 | @@ -497,7 +497,7 @@ terminal_move_to_line(EditLine *el, int | ||
13 | if (where == el->el_cursor.v) | ||
14 | return; | ||
15 | |||
16 | - if (where > el->el_terminal.t_size.v) { | ||
17 | + if (where >= el->el_terminal.t_size.v) { | ||
18 | #ifdef DEBUG_SCREEN | ||
19 | (void) fprintf(el->el_errfile, | ||
20 | "%s: where is ridiculous: %d\r\n", __func__, where); | ||
21 | @@ -647,7 +647,8 @@ terminal_overwrite(EditLine *el, const w | ||
22 | if (el->el_cursor.h >= el->el_terminal.t_size.h) { /* wrap? */ | ||
23 | if (EL_HAS_AUTO_MARGINS) { /* yes */ | ||
24 | el->el_cursor.h = 0; | ||
25 | - el->el_cursor.v++; | ||
26 | + if (el->el_cursor.v + 1 < el->el_terminal.t_size.v) | ||
27 | + el->el_cursor.v++; | ||
28 | if (EL_HAS_MAGIC_MARGINS) { | ||
29 | /* force the wrap to avoid the "magic" | ||
30 | * situation */ | ||