patch-2.2.18 linux/net/core/scm.c
Next file: linux/net/core/sock.c
Previous file: linux/net/core/dv.c
Back to the patch index
Back to the overall index
- Lines: 27
- Date:
Tue Nov 7 13:18:31 2000
- Orig file:
v2.2.17/net/core/scm.c
- Orig date:
Fri Apr 21 12:47:11 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/net/core/scm.c linux/net/core/scm.c
@@ -210,12 +210,16 @@
{
struct cmsghdr *cm = (struct cmsghdr*)msg->msg_control;
- int fdmax = (msg->msg_controllen - sizeof(struct cmsghdr))/sizeof(int);
+ int fdmax = 0;
int fdnum = scm->fp->count;
struct file **fp = scm->fp->fp;
int *cmfptr;
int err = 0, i;
+ if (msg->msg_controllen > sizeof(struct cmsghdr))
+ fdmax = ((msg->msg_controllen - sizeof(struct cmsghdr))
+ / sizeof(int));
+
if (fdnum < fdmax)
fdmax = fdnum;
@@ -251,7 +255,7 @@
msg->msg_controllen -= cmlen;
}
}
- if (i < fdnum)
+ if (i < fdnum || (fdnum && fdmax <= 0))
msg->msg_flags |= MSG_CTRUNC;
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)