handle malloc failure and sk_vpd_prodname potentially being null for

other reasons

Noticed by:	Coverity Prevent analysis tool
Reviewed by:	bz, jmg
This commit is contained in:
Sam Leffler 2005-03-26 22:57:28 +00:00
parent 5309f84168
commit af5691cdd5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=144164
2 changed files with 16 additions and 10 deletions

View file

@ -496,10 +496,12 @@ sk_vpd_read(sc)
pos += sizeof(res);
sc->sk_vpd_prodname = malloc(res.vr_len + 1, M_DEVBUF, M_NOWAIT);
for (i = 0; i < res.vr_len; i++)
sc->sk_vpd_prodname[i] = sk_vpd_readbyte(sc, i + pos);
sc->sk_vpd_prodname[i] = '\0';
pos += i;
if (sc->sk_vpd_prodname != NULL) {
for (i = 0; i < res.vr_len; i++)
sc->sk_vpd_prodname[i] = sk_vpd_readbyte(sc, i + pos);
sc->sk_vpd_prodname[i] = '\0';
}
pos += res.vr_len;
sk_vpd_read_res(sc, &res, pos);
@ -1781,7 +1783,8 @@ skc_attach(dev)
}
/* Announce the product name and more VPD data if there. */
device_printf(dev, "%s rev. %s(0x%x)\n", pname, revstr, sc->sk_rev);
device_printf(dev, "%s rev. %s(0x%x)\n",
pname != NULL ? pname : "<unknown>", revstr, sc->sk_rev);
if (bootverbose) {
if (sc->sk_vpd_readonly != NULL &&

View file

@ -496,10 +496,12 @@ sk_vpd_read(sc)
pos += sizeof(res);
sc->sk_vpd_prodname = malloc(res.vr_len + 1, M_DEVBUF, M_NOWAIT);
for (i = 0; i < res.vr_len; i++)
sc->sk_vpd_prodname[i] = sk_vpd_readbyte(sc, i + pos);
sc->sk_vpd_prodname[i] = '\0';
pos += i;
if (sc->sk_vpd_prodname != NULL) {
for (i = 0; i < res.vr_len; i++)
sc->sk_vpd_prodname[i] = sk_vpd_readbyte(sc, i + pos);
sc->sk_vpd_prodname[i] = '\0';
}
pos += res.vr_len;
sk_vpd_read_res(sc, &res, pos);
@ -1781,7 +1783,8 @@ skc_attach(dev)
}
/* Announce the product name and more VPD data if there. */
device_printf(dev, "%s rev. %s(0x%x)\n", pname, revstr, sc->sk_rev);
device_printf(dev, "%s rev. %s(0x%x)\n",
pname != NULL ? pname : "<unknown>", revstr, sc->sk_rev);
if (bootverbose) {
if (sc->sk_vpd_readonly != NULL &&