git: 9front

Download patch

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;
--