Print this page
11416 smbios_info_slot_peers() gets NULL check wrong
@@ -19,11 +19,11 @@
* CDDL HEADER END
*/
/*
* Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
- * Copyright (c) 2018, Joyent, Inc.
+ * Copyright 2019 Joyent, Inc.
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
@@ -696,18 +696,20 @@
int
smbios_info_slot_peers(smbios_hdl_t *shp, id_t id, uint_t *npeers,
smbios_slot_peer_t **peerp)
{
const smb_struct_t *stp = smb_lookup_id(shp, id);
- const smb_slot_t *slotp = (const smb_slot_t *)stp->smbst_hdr;
+ const smb_slot_t *slotp;
smbios_slot_peer_t *peer;
size_t minlen;
uint_t i;
if (stp == NULL)
return (-1); /* errno is set for us */
+ slotp = (const smb_slot_t *)stp->smbst_hdr;
+
if (stp->smbst_hdr->smbh_type != SMB_TYPE_SLOT)
return (smb_set_errno(shp, ESMB_TYPE));
if (stp->smbst_hdr->smbh_len <= offsetof(smb_slot_t, smbsl_npeers) ||
slotp->smbsl_npeers == 0) {