shithub: riscv

Download patch

ref: eb3d055eb376cb930a15ea85f594185f754223e9
parent: 5149f204b78b7969c0cb865ff376fc21a2c50297
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;