fee131542c
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
12 lines
206 B
Diff
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 *
|