diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-03-11 07:03:15 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-03-11 07:03:15 +0100 |
commit | eed487167489ee16dd16effe9ebff9a5086ffc70 (patch) | |
tree | 4c2aeb16d64d6d9f0f3617d79290e83bfb1dee40 /sys/src/cmd/exportfs | |
parent | 2c0490a26ed0565d5e69c88e64c8b185ecab0947 (diff) |
exportfs: avoid closing netfd in filter()
netfd is initially zero (stdin), when filter() closes fd0,
fd0 is free to be reused. this causes problems with openmount()
that assumes sfd being >2.
instead, we dup the our pipe end over netfd, and close the pipe.
Diffstat (limited to 'sys/src/cmd/exportfs')
-rw-r--r-- | sys/src/cmd/exportfs/exportfs.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/src/cmd/exportfs/exportfs.c b/sys/src/cmd/exportfs/exportfs.c index 522e06025..4d436dad9 100644 --- a/sys/src/cmd/exportfs/exportfs.c +++ b/sys/src/cmd/exportfs/exportfs.c @@ -927,10 +927,11 @@ filter(int fd, char *cmd) exec(file, argv); fatal("filter: exec; %r"); default: - close(fd); + dup(p[1], fd); close(p[0]); + close(p[1]); } - return p[1]; + return fd; } static void |