svn commit: r210744 - stable/8/sbin/bsdlabel
Jaakko Heinonen
jh at FreeBSD.org
Mon Aug 2 09:03:32 UTC 2010
Author: jh
Date: Mon Aug 2 09:03:31 2010
New Revision: 210744
URL: http://svn.freebsd.org/changeset/base/210744
Log:
MFC r209614:
- Don't assign the return value from read(2) to a variable of type
int.
- Use errx(3) instead of err(3) to print the error message on short
reads in readlabel(). errno won't be set on short reads which can
easily occur here due to the fixed size read request.
PR: 144307
Modified:
stable/8/sbin/bsdlabel/bsdlabel.c
Directory Properties:
stable/8/sbin/bsdlabel/ (props changed)
Modified: stable/8/sbin/bsdlabel/bsdlabel.c
==============================================================================
--- stable/8/sbin/bsdlabel/bsdlabel.c Mon Aug 2 08:35:16 2010 (r210743)
+++ stable/8/sbin/bsdlabel/bsdlabel.c Mon Aug 2 09:03:31 2010 (r210744)
@@ -347,7 +347,7 @@ makelabel(const char *type, struct diskl
static void
readboot(void)
{
- int fd, i;
+ int fd;
struct stat st;
uint64_t *p;
@@ -358,8 +358,7 @@ readboot(void)
err(1, "cannot open %s", xxboot);
fstat(fd, &st);
if (alphacksum && st.st_size <= BBSIZE - 512) {
- i = read(fd, bootarea + 512, st.st_size);
- if (i != st.st_size)
+ if (read(fd, bootarea + 512, st.st_size) != st.st_size)
err(1, "read error %s", xxboot);
/*
@@ -372,8 +371,7 @@ readboot(void)
p[62] = 0;
return;
} else if ((!alphacksum) && st.st_size <= BBSIZE) {
- i = read(fd, bootarea, st.st_size);
- if (i != st.st_size)
+ if (read(fd, bootarea, st.st_size) != st.st_size)
err(1, "read error %s", xxboot);
return;
}
@@ -479,6 +477,7 @@ get_file_parms(int f)
static int
readlabel(int flag)
{
+ ssize_t nbytes;
uint32_t lba;
int f, i;
int error;
@@ -498,8 +497,11 @@ readlabel(int flag)
errx(1,
"disks with more than 2^32-1 sectors are not supported");
(void)lseek(f, (off_t)0, SEEK_SET);
- if (read(f, bootarea, BBSIZE) != BBSIZE)
+ nbytes = read(f, bootarea, BBSIZE);
+ if (nbytes == -1)
err(4, "%s read", specname);
+ if (nbytes != BBSIZE)
+ errx(4, "couldn't read %d bytes from %s", BBSIZE, specname);
close (f);
error = bsd_disklabel_le_dec(
bootarea + (labeloffset + labelsoffset * secsize),
More information about the svn-src-stable
mailing list