DragonFlyBSD Kernel Audit
DF-1661 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/misc/ipmi/ipmi.c b/sys/dev/misc/ipmi/ipmi.c
--- a/sys/dev/misc/ipmi/ipmi.c
+++ b/sys/dev/misc/ipmi/ipmi.c
@@ -461,9 +461,9 @@
 		len = min(recv->msg.data_len, len);
 		recv->msg.data_len = len;
 		error = copyout(&addr, recv->addr,sizeof(addr));
-		if (error == 0)
+		if (error == 0 && len >= 1)
 			error = copyout(&kreq->ir_compcode, recv->msg.data, 1);
-		if (error == 0)
+		if (error == 0 && len > 1)
 			error = copyout(kreq->ir_reply, recv->msg.data + 1,
 			    len - 1);
 		ipmi_free_request(kreq);