提交 4918b7fb 编写于 作者: R Rich Felker

don't reject unknown/future flags in sigaltstack, allow SS_AUTODISARM

historically, and likely accidentally, sigaltstack was specified to
fail with EINVAL if any flag bit other than SS_DISABLE was set. the
resolution of Austin Group issue 1187 fixes this so that the
requirement is only to fail for SS_ONSTACK (which cannot be set) or
"invalid" flags.

Linux fails on the kernel side for invalid flags, but historically
accepts SS_ONSTACK as a no-op, so it needs to be rejected in userspace
still.

with this change, the Linux-specific SS_AUTODISARM, provided since
commit 9680e1d0 but unusable due to
rejection at runtime, is now usable.
上级 43e7efb4
......@@ -9,7 +9,7 @@ int sigaltstack(const stack_t *restrict ss, stack_t *restrict old)
errno = ENOMEM;
return -1;
}
if (ss->ss_flags & ~SS_DISABLE) {
if (ss->ss_flags & SS_ONSTACK) {
errno = EINVAL;
return -1;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册