Check for g_read_data(9) errors properly:

o The only indication of error condition is NULL value returned by
  the function;

o value pointed to by error argument is undefined in the case when
  operation completes successfully.

Discussed with: phk
This commit is contained in:
Maxim Sobolev 2005-11-30 19:24:51 +00:00
parent 6dfb88de83
commit 8a4a44b5aa
17 changed files with 26 additions and 26 deletions

View File

@ -576,7 +576,7 @@ g_eli_read_metadata(struct g_class *mp, struct g_provider *pp,
buf = g_read_data(cp, pp->mediasize - pp->sectorsize, pp->sectorsize,
&error);
g_topology_lock();
if (error != 0)
if (buf == NULL)
goto end;
eli_metadata_decode(buf, md);
end:

View File

@ -300,7 +300,7 @@ g_aes_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
sectorsize = cp->provider->sectorsize;
mediasize = cp->provider->mediasize;
buf = g_read_data(cp, 0, sectorsize, &error);
if (buf == NULL || error != 0) {
if (buf == NULL) {
break;
}
sc = g_malloc(sizeof(struct g_aes_softc), M_WAITOK | M_ZERO);

View File

@ -166,7 +166,7 @@ g_apple_taste(struct g_class *mp, struct g_provider *pp, int insist)
break;
buf = g_read_data(cp, 0, sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
break;
/*
@ -188,7 +188,7 @@ g_apple_taste(struct g_class *mp, struct g_provider *pp, int insist)
* Read in the first partition map
*/
buf = g_read_data(cp, sectorsize, sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
break;
/*
@ -206,7 +206,7 @@ g_apple_taste(struct g_class *mp, struct g_provider *pp, int insist)
buf = g_read_data(cp, 2 * sectorsize,
(NAPMPART - 1) * sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
break;
for (i = 1; i < NAPMPART; i++) {

View File

@ -207,7 +207,7 @@ g_bsd_try(struct g_geom *gp, struct g_slicer *gsp, struct g_consumer *cp, int se
error = 0;
secoff = offset % secsize;
buf = g_read_data(cp, offset - secoff, secsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
return (ENOENT);
/* Decode into our native format. */
@ -248,7 +248,7 @@ g_bsd_writelabel(struct g_geom *gp, u_char *bootcode)
secoff = ms->labeloffset % secsize;
if (bootcode == NULL) {
buf = g_read_data(cp, ms->labeloffset - secoff, secsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
return (error);
bcopy(ms->label, buf + secoff, sizeof(ms->label));
} else {

View File

@ -373,7 +373,7 @@ g_fox_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
g_topology_unlock();
buf = g_read_data(cp, 0, sectorsize, &error);
g_topology_lock();
if (buf == NULL || error != 0)
if (buf == NULL)
break;
if (memcmp(buf, FOX_MAGIC, strlen(FOX_MAGIC)))
break;

View File

@ -300,7 +300,7 @@ g_gpt_has_pmbr(struct g_consumer *cp, int *error)
uint16_t magic;
buf = g_read_data(cp, 0L, cp->provider->sectorsize, error);
if (*error != 0)
if (buf == NULL)
return (0);
pmbr = 0;
@ -826,14 +826,14 @@ g_gpt_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
* there's a GPT, including whether recovery is appropriate.
*/
buf = g_read_data(cp, pp->sectorsize, pp->sectorsize, &error);
if (error != 0)
if (buf == NULL)
goto fail;
g_gpt_load_hdr(softc, pp, GPT_HDR_PRIMARY, buf);
g_free(buf);
buf = g_read_data(cp, pp->mediasize - pp->sectorsize, pp->sectorsize,
&error);
if (error != 0)
if (buf == NULL)
goto fail;
g_gpt_load_hdr(softc, pp, GPT_HDR_SECONDARY, buf);
g_free(buf);
@ -915,7 +915,7 @@ g_gpt_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
ofs = hdr->hdr_lba_table * pp->sectorsize;
buf = g_read_data(cp, ofs, nbytes, &error);
if (error != 0)
if (buf == NULL)
goto fail;
/*
@ -934,7 +934,7 @@ g_gpt_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
hdr = softc->hdr + GPT_HDR_SECONDARY;
ofs = hdr->hdr_lba_table * pp->sectorsize;
buf = g_read_data(cp, ofs, nbytes, &error);
if (error != 0)
if (buf == NULL)
goto fail;
if (!g_gpt_tbl_ok(hdr, buf)) {

View File

@ -284,7 +284,7 @@ g_mbr_taste(struct g_class *mp, struct g_provider *pp, int insist)
break;
ms->sectorsize = sectorsize;
buf = g_read_data(cp, 0, sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
break;
/*
@ -454,7 +454,7 @@ g_mbrext_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
break;
for (;;) {
buf = g_read_data(cp, off, sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
break;
if (buf[0x1fe] != 0x55 && buf[0x1ff] != 0xaa) {
g_free(buf);

View File

@ -289,7 +289,7 @@ g_pc98_taste(struct g_class *mp, struct g_provider *pp, int flags)
if (sectorsize % 512 != 0)
break;
buf = g_read_data(cp, 0, 8192, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
break;
ms->fwsectors = fwsectors;
ms->fwheads = fwheads;

View File

@ -278,7 +278,7 @@ g_sunlabel_taste(struct g_class *mp, struct g_provider *pp, int flags)
g_topology_unlock();
buf = g_read_data(cp, 0, ms->sectorsize, &error);
g_topology_lock();
if (buf == NULL || error != 0)
if (buf == NULL)
break;
/*

View File

@ -100,7 +100,7 @@ g_vol_ffs_taste(struct g_class *mp, struct g_provider *pp, int flags)
fs = (struct fs *) g_read_data(cp, superblock,
SBLOCKSIZE, &error);
if (fs == NULL || error != 0)
if (fs == NULL)
continue;
/* Check for magic and make sure things are the right size */
if (fs->fs_magic == FS_UFS1_MAGIC) {

View File

@ -57,7 +57,7 @@ g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size)
return;
sector = (char *)g_read_data(cp, ISO9660_OFFSET, pp->sectorsize,
&error);
if (sector == NULL || error != 0)
if (sector == NULL)
return;
if (bcmp(sector, ISO9660_MAGIC, sizeof(ISO9660_MAGIC) - 1) != 0) {
g_free(sector);

View File

@ -56,7 +56,7 @@ g_label_msdosfs_taste(struct g_consumer *cp, char *label, size_t size)
label[0] = '\0';
sector = (char *)g_read_data(cp, 0, pp->sectorsize, &error);
if (sector == NULL || error != 0)
if (sector == NULL)
return;
if (strncmp(sector + 0x36, FAT12, strlen(FAT12)) == 0) {
G_LABEL_DEBUG(1, "MSDOS (FAT12) file system detected on %s.",

View File

@ -72,7 +72,7 @@ g_label_ufs_taste(struct g_consumer *cp, char *label, size_t size)
fs = (struct fs *)g_read_data(cp, superblock, SBLOCKSIZE,
&error);
if (fs == NULL || error != 0)
if (fs == NULL)
continue;
/* Check for magic and make sure things are the right size */
if (fs->fs_magic == FS_UFS1_MAGIC) {

View File

@ -2346,7 +2346,7 @@ g_mirror_read_metadata(struct g_consumer *cp, struct g_mirror_metadata *md)
&error);
g_topology_lock();
g_access(cp, -1, 0, 0);
if (error != 0) {
if (buf == NULL) {
G_MIRROR_DEBUG(1, "Cannot read metadata from %s (error=%d).",
cp->provider->name, error);
if (buf != NULL)

View File

@ -2571,7 +2571,7 @@ g_raid3_read_metadata(struct g_consumer *cp, struct g_raid3_metadata *md)
&error);
g_topology_lock();
g_access(cp, -1, 0, 0);
if (error != 0) {
if (buf == NULL) {
G_RAID3_DEBUG(1, "Cannot read metadata from %s (error=%d).",
cp->provider->name, error);
if (buf != NULL)

View File

@ -380,7 +380,7 @@ g_uzip_taste(struct g_class *mp, struct g_provider *pp, int flags)
DPRINTF(("%s: media sectorsize %u, mediasize %lld\n",
gp->name, pp->sectorsize, pp->mediasize));
buf = g_read_data(cp, 0, pp->sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
goto err;
header = (struct cloop_header *) buf;
if (strncmp(header->magic, CLOOP_MAGIC_START,
@ -430,7 +430,7 @@ g_uzip_taste(struct g_class *mp, struct g_provider *pp, int flags)
free(buf, M_GEOM);
buf = g_read_data(
cp, blk * pp->sectorsize, pp->sectorsize, &error);
if (buf == NULL || error != 0)
if (buf == NULL)
goto err;
nread = MIN(total_offsets - offsets_read,
pp->sectorsize / sizeof(uint64_t));

View File

@ -453,7 +453,7 @@ gv_drive_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
/* Now check if the provided slice is a valid vinum drive. */
do {
vhdr = g_read_data(cp, GV_HDR_OFFSET, pp->sectorsize, &error);
if (vhdr == NULL || error != 0)
if (vhdr == NULL)
break;
if (vhdr->magic != GV_MAGIC) {
g_free(vhdr);