termux-packages/packages/w3m/fdsan-fd-fix.patch
Henrik Grimler fee131542c 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
2021-04-05 15:46:59 +02:00

12 lines
206 B
Diff

--- ./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 *