diff options
author | 2014-11-30 21:45:04 +0000 | |
---|---|---|
committer | 2014-11-30 21:45:04 +0000 | |
commit | f4b3fec4a7174e78e9a495fb1e991643d183d543 (patch) | |
tree | 30465a28e5ccaeb8ed653174518ec7be8a627d44 | |
parent | do not use .St -p1003.1d-99 which is used in exactly two pages; (diff) | |
download | wireguard-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.c | 6 |
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) { |