git: 6c951b37170f - main - mail: add volatile in grabh()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 05 Jan 2024 02:41:10 UTC
The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=6c951b37170f1fb2ae8b4827070743e61b6eaed2 commit 6c951b37170f1fb2ae8b4827070743e61b6eaed2 Author: Lexi Winter <lexi@le-Fay.ORG> AuthorDate: 2024-01-04 22:34:58 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2024-01-05 02:40:53 +0000 mail: add volatile in grabh() setjmp() requires that any stack variables modified between the setjmp call and the longjmp() must be volatile. This means that 'saveint' in grabh() must be volatile, since it's modified after the setjmp(). Otherwise, the signal handler is not properly restored, resulting in a crash (SIGBUS) if ^C is typed twice while composing. PR: 276119 Reported by: Christopher Davidson <christopher.davidson@gmail.com> MFC after: 2 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/993 --- usr.bin/mail/tty.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/mail/tty.c b/usr.bin/mail/tty.c index 9921c8cbd209..937a43bb3789 100644 --- a/usr.bin/mail/tty.c +++ b/usr.bin/mail/tty.c @@ -54,7 +54,7 @@ int grabh(struct header *hp, int gflags) { struct termios ttybuf; - sig_t saveint; + volatile sig_t saveint; sig_t savetstp; sig_t savettou; sig_t savettin;