summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2014-11-30 21:45:04 +0000
committerkettenis <kettenis@openbsd.org>2014-11-30 21:45:04 +0000
commitf4b3fec4a7174e78e9a495fb1e991643d183d543 (patch)
tree30465a28e5ccaeb8ed653174518ec7be8a627d44
parentdo not use .St -p1003.1d-99 which is used in exactly two pages; (diff)
downloadwireguard-openbsd-f4b3fec4a7174e78e9a495fb1e991643d183d543.tar.xz
wireguard-openbsd-f4b3fec4a7174e78e9a495fb1e991643d183d543.zip
Don't overwrite fields in the message when setting up the REMOTE_NDIS_SET_MSG
command in urndis_ctrl_set(). Seems many RNDIS hardware doesn't care about the overwritten fields, but the SunMicro Virtual Eth Device found in newer Oracle SPARC hardware does. ok armani@
-rw-r--r--sys/dev/usb/if_urndis.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/usb/if_urndis.c b/sys/dev/usb/if_urndis.c
index 3b4cb629a64..e4a115480c4 100644
--- a/sys/dev/usb/if_urndis.c
+++ b/sys/dev/usb/if_urndis.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_urndis.c,v 1.49 2014/07/13 15:52:49 mpi Exp $ */
+/* $OpenBSD: if_urndis.c,v 1.50 2014/11/30 21:45:04 kettenis Exp $ */
/*
* Copyright (c) 2010 Jonathan Armani <armani@openbsd.org>
@@ -554,7 +554,7 @@ urndis_ctrl_set(struct urndis_softc *sc, u_int32_t oid, void *buf, size_t len)
msg->rm_infobuflen = htole32(len);
if (len != 0) {
msg->rm_infobufoffset = htole32(20);
- memcpy((char*)msg + 20, buf, len);
+ memcpy((char*)msg + 28, buf, len);
} else
msg->rm_infobufoffset = 0;
msg->rm_devicevchdl = 0;
@@ -570,7 +570,7 @@ urndis_ctrl_set(struct urndis_softc *sc, u_int32_t oid, void *buf, size_t len)
letoh32(msg->rm_infobufoffset),
letoh32(msg->rm_devicevchdl)));
- rval = urndis_ctrl_send(sc, msg, sizeof(*msg));
+ rval = urndis_ctrl_send(sc, msg, sizeof(*msg) + len);
free(msg, M_TEMP, 0);
if (rval != RNDIS_STATUS_SUCCESS) {