]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/core/scm.c
[NET]: Fix function put_cmsg() which may cause usr application memory overflow
[linux-2.6-omap-h63xx.git] / net / core / scm.c
index 100ba6d9d478d7df1082a3790ddfac0e6c012d73..10f5c65f6a470cc914de500b43d63990e89db1b6 100644 (file)
@@ -196,6 +196,8 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
        if (copy_to_user(CMSG_DATA(cm), data, cmlen - sizeof(struct cmsghdr)))
                goto out;
        cmlen = CMSG_SPACE(len);
+       if (msg->msg_controllen < cmlen)
+               cmlen = msg->msg_controllen;
        msg->msg_control += cmlen;
        msg->msg_controllen -= cmlen;
        err = 0;