summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorcperciva <cperciva@FreeBSD.org>2004-01-26 15:05:30 +0000
committercperciva <cperciva@FreeBSD.org>2004-01-26 15:05:30 +0000
commit3a15ac7b11b935e1782804d428a4147f3f5fec27 (patch)
tree98dad340eeda79234192f74dcba37022c19180a8 /sbin
parent7ce7ecdff6a94c18c2c9e30b1348c73f3e3a6175 (diff)
downloadFreeBSD-src-3a15ac7b11b935e1782804d428a4147f3f5fec27.zip
FreeBSD-src-3a15ac7b11b935e1782804d428a4147f3f5fec27.tar.gz
Avoid dereferencing null pointers in fsck_ffs. (pfatal may return,
so it isn't a safe way of handling [mc]alloc failures.) PR: misc/61800 Approved by: rwatson (mentor)
Diffstat (limited to 'sbin')
-rw-r--r--sbin/fsck_ffs/pass1.c4
-rw-r--r--sbin/fsck_ffs/setup.c5
2 files changed, 7 insertions, 2 deletions
diff --git a/sbin/fsck_ffs/pass1.c b/sbin/fsck_ffs/pass1.c
index 272b5f1..341d027 100644
--- a/sbin/fsck_ffs/pass1.c
+++ b/sbin/fsck_ffs/pass1.c
@@ -141,7 +141,7 @@ pass1(void)
}
info = calloc((unsigned)inosused, sizeof(struct inostat));
if (info == NULL)
- pfatal("cannot alloc %u bytes for inoinfo\n",
+ errx(EEXIT, "cannot alloc %u bytes for inoinfo",
(unsigned)(sizeof(struct inostat) * inosused));
inostathead[c].il_stat = info;
/*
@@ -175,7 +175,7 @@ pass1(void)
}
info = calloc((unsigned)inosused, sizeof(struct inostat));
if (info == NULL)
- pfatal("cannot alloc %u bytes for inoinfo\n",
+ errx(EEXIT, "cannot alloc %u bytes for inoinfo",
(unsigned)(sizeof(struct inostat) * inosused));
memmove(info, inostathead[c].il_stat, inosused * sizeof(*info));
free(inostathead[c].il_stat);
diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c
index f6e541d..5fb24c1 100644
--- a/sbin/fsck_ffs/setup.c
+++ b/sbin/fsck_ffs/setup.c
@@ -227,6 +227,11 @@ setup(char *dev)
*/
asked = 0;
sblock.fs_csp = calloc(1, sblock.fs_cssize);
+ if (sblock.fs_csp == NULL) {
+ printf("cannot alloc %u bytes for cg summary info\n",
+ (unsigned)sblock.fs_cssize);
+ goto badsb;
+ }
for (i = 0, j = 0; i < sblock.fs_cssize; i += sblock.fs_bsize, j++) {
size = sblock.fs_cssize - i < sblock.fs_bsize ?
sblock.fs_cssize - i : sblock.fs_bsize;
OpenPOWER on IntegriCloud