ref: 00b7f08e764499247182d8be2ca5f676c13ba640
parent: 7e28dd89afb6af9e30ec8c9f4a3ac5fc660a464f
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Dec 8 20:04:03 EST 2020
backout OCEXEC changes when potentially opening /srv files Opening a /srv file sets the close-on-exec flag on the shared channel breaking the exportfs openmount() hack. The devsrv tries to prevent posting a channel with the close-on-exec or remove-on-close flags. but nothing currently prevents this poisoning on open. Until this gets fixed in eigther exportfs or devsrv, i'll back out the changes that could have potential side effects like this.
--- a/sys/src/libauth/auth_chuid.c
+++ b/sys/src/libauth/auth_chuid.c
@@ -29,7 +29,7 @@
}
/* get a link to factotum as new user */
- fd = open("/srv/factotum", ORDWR|OCEXEC);+ fd = open("/srv/factotum", ORDWR); if(fd >= 0){if(mount(fd, -1, "/mnt", MREPL, "") == -1)
close(fd);
--- a/sys/src/libauth/newns.c
+++ b/sys/src/libauth/newns.c
@@ -194,7 +194,7 @@
else if(argc == 2)
unmount(argv[0], argv[1]);
}else if(strcmp(argv0, "mount") == 0){- fd = open(argv[0], ORDWR|OCEXEC);
+ fd = open(argv[0], ORDWR);
if(fd < 0){if(newnsdebug)
fprint(2, "%s: mount: %s: %r\n", fn, argv[0]);
--- a/sys/src/libc/9sys/access.c
+++ b/sys/src/libc/9sys/access.c
@@ -24,7 +24,7 @@
return 0;
return -1;
}
- fd = open(name, omode[mode&7]|OCEXEC);
+ fd = open(name, omode[mode&7]);
if(fd >= 0){close(fd);
return 0;
--- a/sys/src/libdraw/newwindow.c
+++ b/sys/src/libdraw/newwindow.c
@@ -13,7 +13,7 @@
wsys = getenv("wsys");if(wsys == nil)
return -1;
- fd = open(wsys, ORDWR|OCEXEC);
+ fd = open(wsys, ORDWR);
if(fd < 0){free(wsys);
return -1;
--
⑨