From 472e8b71f7a90ab23f1499fd721b872541f52de9 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 15 Jan 2015 07:09:14 -0500 Subject: for multithreaded set*id/setrlimit, handle case where callback does not run in the current version of __synccall, the callback is always run, so failure to handle this case did not matter. however, the upcoming overhaul of __synccall will have failure cases, in which case the callback does not run and errno is already set. the changes being committed now are in preparation for that. --- src/unistd/setxid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/unistd/setxid.c') diff --git a/src/unistd/setxid.c b/src/unistd/setxid.c index 9e37ddc4..0239f8af 100644 --- a/src/unistd/setxid.c +++ b/src/unistd/setxid.c @@ -32,7 +32,7 @@ int __setxid(int nr, int id, int eid, int sid) struct ctx c = { .nr = nr, .id = id, .eid = eid, .sid = sid, .err = -1 }; __synccall(do_setxid, &c); if (c.err) { - errno = c.err; + if (c.err>0) errno = c.err; return -1; } return 0; -- cgit v1.2.1