summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2017-10-18 12:33:25 +0000
committerpatrick <patrick@openbsd.org>2017-10-18 12:33:25 +0000
commitf2549dfcc7ffe072c9f694b1fc840493429ff725 (patch)
treec8bdc6259720f9e6c877a9902fab02f79bf650a5
parentAdd missing SHN_XINDEX needed by devel/ctftools. (diff)
downloadwireguard-openbsd-f2549dfcc7ffe072c9f694b1fc840493429ff725.tar.xz
wireguard-openbsd-f2549dfcc7ffe072c9f694b1fc840493429ff725.zip
Only overwrite the caller's variable if we successfully read data from
the chip.
-rw-r--r--sys/dev/ic/bwfm.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/ic/bwfm.c b/sys/dev/ic/bwfm.c
index 5b5301504e0..a4e4c76a862 100644
--- a/sys/dev/ic/bwfm.c
+++ b/sys/dev/ic/bwfm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bwfm.c,v 1.5 2017/10/16 22:27:16 patrick Exp $ */
+/* $OpenBSD: bwfm.c,v 1.6 2017/10/18 12:33:25 patrick Exp $ */
/*
* Copyright (c) 2010-2016 Broadcom Corporation
* Copyright (c) 2016,2017 Patrick Wildt <patrick@blueri.se>
@@ -1183,7 +1183,8 @@ bwfm_fwvar_cmd_get_int(struct bwfm_softc *sc, int cmd, uint32_t *data)
{
int ret;
ret = bwfm_fwvar_cmd_get_data(sc, cmd, data, sizeof(*data));
- *data = letoh32(*data);
+ if (!ret)
+ *data = letoh32(*data);
return ret;
}
@@ -1205,7 +1206,8 @@ bwfm_fwvar_var_get_data(struct bwfm_softc *sc, char *name, void *data, size_t le
memcpy(buf + strlen(name) + 1, data, len);
ret = bwfm_fwvar_cmd_get_data(sc, BWFM_C_GET_VAR,
buf, strlen(name) + 1 + len);
- memcpy(data, buf, len);
+ if (!ret)
+ memcpy(data, buf, len);
free(buf, M_TEMP, strlen(name) + 1 + len);
return ret;
}