diff -ruN linux.orig/net/core/scm.c linux/net/core/scm.c --- linux.orig/net/core/scm.c Thu Apr 22 19:45:19 1999 +++ linux/net/core/scm.c Sun Oct 29 15:13:14 2000 @@ -216,6 +216,13 @@ int *cmfptr; int err = 0, i; + /* Handle the case when we don't even have enough room for the header. + Fixed Oct 29 2000 by Philippe Troin */ + if (msg->msg_controllen < sizeof(struct cmsghdr)) { + msg->msg_flags |= MSG_CTRUNC; + goto out; + } + if (fdnum < fdmax) fdmax = fdnum; @@ -258,6 +265,7 @@ * All of the files that fit in the message have had their * usage counts incremented, so we just free the list. */ +out: __scm_destroy(scm); }