nfs: a unix-domain-socket should not be created as fifo
Change-Id: Ic6a23165df1703b330636a059967c3c674dbde57 BUG: 1235231 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: http://review.gluster.org/11355 Tested-by: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
This commit is contained in:
parent
7b51bd636f
commit
381afd4f48
33
tests/bugs/nfs/socket-as-fifo.py
Executable file
33
tests/bugs/nfs/socket-as-fifo.py
Executable file
@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Create a unix domain socket and test if it is a socket (and not a fifo/pipe).
|
||||
#
|
||||
# Author: Niels de Vos <ndevos@redhat.com>
|
||||
#
|
||||
|
||||
import os
|
||||
import stat
|
||||
import sys
|
||||
import socket
|
||||
|
||||
ret = 1
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print 'Usage: %s <socket>' % (sys.argv[0])
|
||||
sys.exit(ret)
|
||||
|
||||
path = sys.argv[1]
|
||||
|
||||
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
sock.bind(path)
|
||||
|
||||
stbuf = os.stat(path)
|
||||
mode = stbuf.st_mode
|
||||
|
||||
if stat.S_ISSOCK(mode):
|
||||
ret = 0
|
||||
|
||||
sock.close()
|
||||
os.unlink(path)
|
||||
|
||||
sys.exit(ret)
|
22
tests/bugs/nfs/socket-as-fifo.t
Normal file
22
tests/bugs/nfs/socket-as-fifo.t
Normal file
@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
. $(dirname $0)/../../include.rc
|
||||
. $(dirname $0)/../../volume.rc
|
||||
. $(dirname $0)/../../nfs.rc
|
||||
|
||||
cleanup;
|
||||
|
||||
TEST glusterd
|
||||
TEST pidof glusterd
|
||||
|
||||
TEST $CLI volume create $V0 $H0:$B0/$V0
|
||||
TEST $CLI volume start $V0
|
||||
EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available;
|
||||
TEST mount_nfs $H0:/$V0 $N0 nolock
|
||||
|
||||
# this is the actual test
|
||||
TEST $(dirname $0)/socket-as-fifo.py $N0/not-a-fifo.socket
|
||||
|
||||
TEST umount_nfs $N0
|
||||
|
||||
cleanup
|
@ -3153,7 +3153,7 @@ rpcerr:
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
nfs3_mknod_reply (rpcsvc_request_t *req, nfsstat3 stat, struct nfs3_fh *fh,
|
||||
struct iatt *buf, struct iatt *preparent,
|
||||
struct iatt *postparent)
|
||||
@ -3249,7 +3249,7 @@ nfs3err:
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
nfs3_mknod_device (nfs3_call_state_t *cs)
|
||||
{
|
||||
int ret = -EFAULT;
|
||||
@ -3280,12 +3280,11 @@ nfs3_mknod_device (nfs3_call_state_t *cs)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
nfs3_mknod_fifo (nfs3_call_state_t *cs)
|
||||
static int
|
||||
nfs3_mknod_fifo (nfs3_call_state_t *cs, mode_t mode)
|
||||
{
|
||||
int ret = -EFAULT;
|
||||
nfs_user_t nfu = {0, };
|
||||
mode_t mode = S_IFIFO;
|
||||
|
||||
if (!cs)
|
||||
return ret;
|
||||
@ -3304,7 +3303,7 @@ nfs3_mknod_fifo (nfs3_call_state_t *cs)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
nfs3_mknod_resume (void *carg)
|
||||
{
|
||||
nfsstat3 stat = NFS3ERR_SERVERFAULT;
|
||||
@ -3323,8 +3322,10 @@ nfs3_mknod_resume (void *carg)
|
||||
ret = nfs3_mknod_device (cs);
|
||||
break;
|
||||
case NF3SOCK:
|
||||
ret = nfs3_mknod_fifo (cs, S_IFSOCK);
|
||||
break;
|
||||
case NF3FIFO:
|
||||
ret = nfs3_mknod_fifo (cs);
|
||||
ret = nfs3_mknod_fifo (cs, S_IFIFO);
|
||||
break;
|
||||
default:
|
||||
ret = -EBADF;
|
||||
|
Loading…
x
Reference in New Issue
Block a user