diff options
author | des <des@FreeBSD.org> | 1998-07-29 17:50:06 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 1998-07-29 17:50:06 +0000 |
commit | b4fe2eae8203da40c5de8d68fd8a30a9fb79b5f2 (patch) | |
tree | 5b0b9d624d7c2129b1189931e5d5345889e673d5 /usr.bin/du | |
parent | 57b661836aae1698e2f0388e6462e8f1521b801d (diff) | |
download | FreeBSD-src-b4fe2eae8203da40c5de8d68fd8a30a9fb79b5f2.zip FreeBSD-src-b4fe2eae8203da40c5de8d68fd8a30a9fb79b5f2.tar.gz |
Don't try to dereference a pointer to freed memory.
PR: bin/7393
Diffstat (limited to 'usr.bin/du')
-rw-r--r-- | usr.bin/du/du.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/usr.bin/du/du.c b/usr.bin/du/du.c index 4c81e62..4c75b70 100644 --- a/usr.bin/du/du.c +++ b/usr.bin/du/du.c @@ -67,8 +67,7 @@ main(argc, argv) { FTS *fts; FTSENT *p; - FTSENT *savedp; - long blocksize; + long blocksize, savednumber = 0; int ftsoptions; int listall; int depth; @@ -184,7 +183,6 @@ main(argc, argv) err(1, "fts_open"); while ((p = fts_read(fts)) != NULL) { - savedp = p; switch (p->fts_info) { case FTS_D: /* Ignore. */ break; @@ -216,15 +214,14 @@ main(argc, argv) p->fts_parent->fts_number += p->fts_statp->st_blocks; } + savednumber = p->fts_number; } if (errno) err(1, "fts_read"); - if (cflag) { - p = savedp->fts_parent; - (void) printf("%ld\ttotal\n", howmany(p->fts_number, blocksize)); - } + if (cflag) + (void) printf("%ld\ttotal\n", howmany(savednumber, blocksize)); exit(rval); } |