w3m: fix fdsan error when run on android 11
The file descriptor sanitizer keeps track of opened file descriptors and kills programs that closes fds multiple times, or fails to close fds. In w3m's case a fd for a tty was obtained and saved in the ttyf variable, but when the tty was later closed is was done using the tty variable and not the obtained ttyf. To my current understanding this can lead to undesired behaviour when using multiple threads, as another thread might write to or read from ttyf after it has been closed. Error looks like fdsan: attempted to close file descriptor 3, expected to be unowned, actually owned by FILE* 0xb6c8800c This commit fixes [1]. See also fdsan docs [2] and issue opened in the android bug tracker [3]. [1] https://github.com/termux/termux-packages/issues/6410 [2] https://android.googlesource.com/platform/bionic/+/master/docs/fdsan.md [3] https://issuetracker.google.com/issues/184380442
This commit is contained in:
parent
16b0fabfcd
commit
fee131542c
@ -5,7 +5,7 @@ TERMUX_PKG_MAINTAINER="@termux"
|
|||||||
_MAJOR_VERSION=0.5.3
|
_MAJOR_VERSION=0.5.3
|
||||||
_MINOR_VERSION=20190105
|
_MINOR_VERSION=20190105
|
||||||
TERMUX_PKG_VERSION=${_MAJOR_VERSION}.${_MINOR_VERSION}
|
TERMUX_PKG_VERSION=${_MAJOR_VERSION}.${_MINOR_VERSION}
|
||||||
TERMUX_PKG_REVISION=5
|
TERMUX_PKG_REVISION=6
|
||||||
# The upstream w3m project is dead, but every linux distribution uses
|
# The upstream w3m project is dead, but every linux distribution uses
|
||||||
# this maintained fork in debian:
|
# this maintained fork in debian:
|
||||||
TERMUX_PKG_SRCURL=https://github.com/tats/w3m/archive/v${_MAJOR_VERSION}+git${_MINOR_VERSION}.tar.gz
|
TERMUX_PKG_SRCURL=https://github.com/tats/w3m/archive/v${_MAJOR_VERSION}+git${_MINOR_VERSION}.tar.gz
|
||||||
|
11
packages/w3m/fdsan-fd-fix.patch
Normal file
11
packages/w3m/fdsan-fd-fix.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- ./terms.c.orig 2021-04-05 12:45:45.535462776 +0000
|
||||||
|
+++ ./terms.c 2021-04-05 12:45:55.075444134 +0000
|
||||||
|
@@ -871,7 +871,7 @@
|
||||||
|
close_tty(void)
|
||||||
|
{
|
||||||
|
if (tty > 2)
|
||||||
|
- close(tty);
|
||||||
|
+ fclose(ttyf);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
Loading…
Reference in New Issue
Block a user