summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorRichard Lowe <richlowe@richlowe.net>2012-04-27 17:48:39 +0100
committerRichard Lowe <richlowe@richlowe.net>2012-04-27 17:48:39 +0100
commitd0b2dca528da7be0d70565a5655d328da4e28ec2 (patch)
tree6cae3bb104f5d82304f5c7fafc7b336b30078215 /usr/src
parent6a9cb0ea17f11529b1bb8ca31944abd37736b99e (diff)
downloadillumos-gate-d0b2dca528da7be0d70565a5655d328da4e28ec2.tar.gz
2658 scf_get_bootconfig will indirectly stomp caller memory
Reviewed by: Dan McDonald <danmcd@nexenta.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: T. Nguyen <truongqnguien@gmail.com> Approved by: Gordon Ross <gwr@nexenta.com>
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/lib/libscf/common/highlevel.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/usr/src/lib/libscf/common/highlevel.c b/usr/src/lib/libscf/common/highlevel.c
index d5ab524d0c..dddd551e51 100644
--- a/usr/src/lib/libscf/common/highlevel.c
+++ b/usr/src/lib/libscf/common/highlevel.c
@@ -159,6 +159,8 @@ scferror:
void
scf_get_boot_config(uint8_t *boot_config)
{
+ uint64_t ret = 0;
+
assert(boot_config);
*boot_config = 0;
@@ -176,7 +178,7 @@ scf_get_boot_config(uint8_t *boot_config)
scf_propvec_t *prop;
for (prop = ua_boot_config; prop->pv_prop != NULL; prop++)
- prop->pv_ptr = boot_config;
+ prop->pv_ptr = &ret;
prop = NULL;
if (scf_read_propvec(FMRI_BOOT_CONFIG, BOOT_CONFIG_PG_PARAMS,
B_TRUE, ua_boot_config, &prop) != SCF_FAILED) {
@@ -187,9 +189,9 @@ scf_get_boot_config(uint8_t *boot_config)
* blacklisted.
*/
if (scf_is_fb_blacklisted())
- *boot_config &= ~(UA_FASTREBOOT_DEFAULT |
- UA_FASTREBOOT_ONPANIC);
+ return;
#endif /* __x86 */
+ *boot_config = (uint8_t)ret;
return;
}
#if defined(FASTREBOOT_DEBUG)