summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorloos <loos@FreeBSD.org>2015-01-30 14:09:07 +0000
committerloos <loos@FreeBSD.org>2015-01-30 14:09:07 +0000
commitaef5f9f1b801cc4daa87bcea3d98b46b639ffc5c (patch)
tree1ede8b131bb3c28cebaf9a04cda7634566657e9a
parente4bf748e4c19149c9289f4e058de7cb0e2f7a044 (diff)
downloadFreeBSD-src-aef5f9f1b801cc4daa87bcea3d98b46b639ffc5c.zip
FreeBSD-src-aef5f9f1b801cc4daa87bcea3d98b46b639ffc5c.tar.gz
Do not leak the OFW memory when the result does not satisfy our alignment
requirement. While here, fix style(9) issues.
-rw-r--r--sys/dev/ofw/openfirm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/ofw/openfirm.c b/sys/dev/ofw/openfirm.c
index 5bcf3d1..7da5e58 100644
--- a/sys/dev/ofw/openfirm.c
+++ b/sys/dev/ofw/openfirm.c
@@ -459,11 +459,16 @@ OF_getencprop_alloc(phandle_t package, const char *name, int elsz, void **buf)
int i;
retval = OF_getprop_alloc(package, name, elsz, buf);
- if (retval == -1 || retval*elsz % 4 != 0)
+ if (retval == -1)
return (-1);
+ if (retval * elsz % 4 != 0) {
+ free(*buf, M_OFWPROP);
+ *buf = NULL;
+ return (-1);
+ }
cell = *buf;
- for (i = 0; i < retval*elsz/4; i++)
+ for (i = 0; i < retval * elsz / 4; i++)
cell[i] = be32toh(cell[i]);
return (retval);
OpenPOWER on IntegriCloud