It's a bad idea to pass really long user provided lengths to malloc.

Index: softraid_crypto.c
===================================================================
RCS file: /home/tedu/cvs/src/sys/dev/softraid_crypto.c,v
retrieving revision 1.70
diff -u -p -r1.70 softraid_crypto.c
--- softraid_crypto.c   5 Jul 2011 19:02:47 -0000       1.70
+++ softraid_crypto.c   6 Jul 2011 22:45:43 -0000
@@ -392,7 +392,7 @@ sr_crypto_get_kdf(struct bioc_createraid
                return (rv);
        if (bc->bc_opaque == NULL)
                return (rv);
-       if (bc->bc_opaque_size < sizeof(*kdfinfo))
+       if (bc->bc_opaque_size != sizeof(*kdfinfo))
                return (rv);
 
        kdfinfo = malloc(bc->bc_opaque_size, M_DEVBUF, M_WAITOK | M_ZERO);

Reply via email to