diff options
author | sobomax <sobomax@FreeBSD.org> | 2005-11-30 19:24:51 +0000 |
---|---|---|
committer | sobomax <sobomax@FreeBSD.org> | 2005-11-30 19:24:51 +0000 |
commit | 29543921eae6a40180f2f784021ed1b42d328e2a (patch) | |
tree | 81ef73354089000f24e964c7cdffc0035dfe7d01 | |
parent | 937b629bd5f0ccf20166962cb9ec63905573b02c (diff) | |
download | FreeBSD-src-29543921eae6a40180f2f784021ed1b42d328e2a.zip FreeBSD-src-29543921eae6a40180f2f784021ed1b42d328e2a.tar.gz |
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
-rw-r--r-- | sys/geom/eli/g_eli.c | 2 | ||||
-rw-r--r-- | sys/geom/geom_aes.c | 2 | ||||
-rw-r--r-- | sys/geom/geom_apple.c | 6 | ||||
-rw-r--r-- | sys/geom/geom_bsd.c | 4 | ||||
-rw-r--r-- | sys/geom/geom_fox.c | 2 | ||||
-rw-r--r-- | sys/geom/geom_gpt.c | 10 | ||||
-rw-r--r-- | sys/geom/geom_mbr.c | 4 | ||||
-rw-r--r-- | sys/geom/geom_pc98.c | 2 | ||||
-rw-r--r-- | sys/geom/geom_sunlabel.c | 2 | ||||
-rw-r--r-- | sys/geom/geom_vol_ffs.c | 2 | ||||
-rw-r--r-- | sys/geom/label/g_label_iso9660.c | 2 | ||||
-rw-r--r-- | sys/geom/label/g_label_msdosfs.c | 2 | ||||
-rw-r--r-- | sys/geom/label/g_label_ufs.c | 2 | ||||
-rw-r--r-- | sys/geom/mirror/g_mirror.c | 2 | ||||
-rw-r--r-- | sys/geom/raid3/g_raid3.c | 2 | ||||
-rw-r--r-- | sys/geom/uzip/g_uzip.c | 4 | ||||
-rw-r--r-- | sys/geom/vinum/geom_vinum_drive.c | 2 |
17 files changed, 26 insertions, 26 deletions
diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c index 230156a..f00a6e2 100644 --- a/sys/geom/eli/g_eli.c +++ b/sys/geom/eli/g_eli.c @@ -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: diff --git a/sys/geom/geom_aes.c b/sys/geom/geom_aes.c index de7e1c6..e0b414b 100644 --- a/sys/geom/geom_aes.c +++ b/sys/geom/geom_aes.c @@ -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); diff --git a/sys/geom/geom_apple.c b/sys/geom/geom_apple.c index 04f5cac..883fe70 100644 --- a/sys/geom/geom_apple.c +++ b/sys/geom/geom_apple.c @@ -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++) { diff --git a/sys/geom/geom_bsd.c b/sys/geom/geom_bsd.c index 6b2220d..d715ded 100644 --- a/sys/geom/geom_bsd.c +++ b/sys/geom/geom_bsd.c @@ -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 { diff --git a/sys/geom/geom_fox.c b/sys/geom/geom_fox.c index 2eef7cd..89f444b 100644 --- a/sys/geom/geom_fox.c +++ b/sys/geom/geom_fox.c @@ -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; diff --git a/sys/geom/geom_gpt.c b/sys/geom/geom_gpt.c index 5f07a81..89a91ab 100644 --- a/sys/geom/geom_gpt.c +++ b/sys/geom/geom_gpt.c @@ -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)) { diff --git a/sys/geom/geom_mbr.c b/sys/geom/geom_mbr.c index 9fbb3c7..218517e 100644 --- a/sys/geom/geom_mbr.c +++ b/sys/geom/geom_mbr.c @@ -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); diff --git a/sys/geom/geom_pc98.c b/sys/geom/geom_pc98.c index 77c4ac2..a380f0d 100644 --- a/sys/geom/geom_pc98.c +++ b/sys/geom/geom_pc98.c @@ -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; diff --git a/sys/geom/geom_sunlabel.c b/sys/geom/geom_sunlabel.c index 4c453cd..06e3bbd7 100644 --- a/sys/geom/geom_sunlabel.c +++ b/sys/geom/geom_sunlabel.c @@ -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; /* diff --git a/sys/geom/geom_vol_ffs.c b/sys/geom/geom_vol_ffs.c index d90222f..f6fd88e 100644 --- a/sys/geom/geom_vol_ffs.c +++ b/sys/geom/geom_vol_ffs.c @@ -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) { diff --git a/sys/geom/label/g_label_iso9660.c b/sys/geom/label/g_label_iso9660.c index 0a2fa8e..21078e1 100644 --- a/sys/geom/label/g_label_iso9660.c +++ b/sys/geom/label/g_label_iso9660.c @@ -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); diff --git a/sys/geom/label/g_label_msdosfs.c b/sys/geom/label/g_label_msdosfs.c index ff0d7c3..670b52a 100644 --- a/sys/geom/label/g_label_msdosfs.c +++ b/sys/geom/label/g_label_msdosfs.c @@ -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.", diff --git a/sys/geom/label/g_label_ufs.c b/sys/geom/label/g_label_ufs.c index 1be6b85..890669b 100644 --- a/sys/geom/label/g_label_ufs.c +++ b/sys/geom/label/g_label_ufs.c @@ -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) { diff --git a/sys/geom/mirror/g_mirror.c b/sys/geom/mirror/g_mirror.c index b6b0040..e627c60 100644 --- a/sys/geom/mirror/g_mirror.c +++ b/sys/geom/mirror/g_mirror.c @@ -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) diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c index a16817d..0d109df 100644 --- a/sys/geom/raid3/g_raid3.c +++ b/sys/geom/raid3/g_raid3.c @@ -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) diff --git a/sys/geom/uzip/g_uzip.c b/sys/geom/uzip/g_uzip.c index 7fb5614..4fcb137 100644 --- a/sys/geom/uzip/g_uzip.c +++ b/sys/geom/uzip/g_uzip.c @@ -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)); diff --git a/sys/geom/vinum/geom_vinum_drive.c b/sys/geom/vinum/geom_vinum_drive.c index 2cdeb08..519c9f1 100644 --- a/sys/geom/vinum/geom_vinum_drive.c +++ b/sys/geom/vinum/geom_vinum_drive.c @@ -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); |