diff options
author | cperciva <cperciva@FreeBSD.org> | 2004-01-26 15:05:30 +0000 |
---|---|---|
committer | cperciva <cperciva@FreeBSD.org> | 2004-01-26 15:05:30 +0000 |
commit | 3a15ac7b11b935e1782804d428a4147f3f5fec27 (patch) | |
tree | 98dad340eeda79234192f74dcba37022c19180a8 /sbin/fsck_ffs | |
parent | 7ce7ecdff6a94c18c2c9e30b1348c73f3e3a6175 (diff) | |
download | FreeBSD-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/fsck_ffs')
-rw-r--r-- | sbin/fsck_ffs/pass1.c | 4 | ||||
-rw-r--r-- | sbin/fsck_ffs/setup.c | 5 |
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; |