Module Name: src Committed By: rillig Date: Wed Apr 24 21:59:39 UTC 2024
Modified Files: src/usr.sbin/makefs: walk.c Log Message: makefs: fix out-of-bounds fsnode count in fsnode_sort Found by running './makefs img.dat cd9660'. While here, apply more KNF. To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/usr.sbin/makefs/walk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/makefs/walk.c diff -u src/usr.sbin/makefs/walk.c:1.38 src/usr.sbin/makefs/walk.c:1.39 --- src/usr.sbin/makefs/walk.c:1.38 Wed Apr 24 14:23:37 2024 +++ src/usr.sbin/makefs/walk.c Wed Apr 24 21:59:39 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: walk.c,v 1.38 2024/04/24 14:23:37 christos Exp $ */ +/* $NetBSD: walk.c,v 1.39 2024/04/24 21:59:39 rillig Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -41,7 +41,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(__lint) -__RCSID("$NetBSD: walk.c,v 1.38 2024/04/24 14:23:37 christos Exp $"); +__RCSID("$NetBSD: walk.c,v 1.39 2024/04/24 21:59:39 rillig Exp $"); #endif /* !__lint */ #include <sys/param.h> @@ -93,7 +93,6 @@ fsnode_sort(fsnode *first, const char *r size_t num = 0; for (fsnode *tmp = first; tmp; tmp = tmp->next, num++) { - num++; if (debug & DEBUG_DUMP_FSNODES_VERBOSE) printf("%s: pre sort: %s %s %s\n", __func__, root, dir, tmp->name); @@ -103,7 +102,7 @@ fsnode_sort(fsnode *first, const char *r for (fsnode *tmp = first; tmp; tmp = tmp->next) *listptr++ = tmp; - qsort (list, num, sizeof(*list), fsnode_cmp); + qsort(list, num, sizeof(*list), fsnode_cmp); for (size_t i = 0; i < num - 1; ++i) list[i]->next = list[i + 1]; @@ -562,7 +561,7 @@ apply_specdir(const char *dir, NODE *spe if (curfsnode->type != S_IFDIR) errx(EXIT_FAILURE, "`%s' is not a directory", path); - assert (curfsnode->child != NULL); + assert(curfsnode->child != NULL); apply_specdir(path, curnode, curfsnode->child, speconly); } } @@ -676,14 +675,14 @@ dump_fsnodes(fsnode *root) assert(cur->symlink != NULL); printf(" -> %s", cur->symlink); } else { - assert (cur->symlink == NULL); + assert(cur->symlink == NULL); } if (cur->inode->nlink > 1) printf(", nlinks=%d", cur->inode->nlink); putchar('\n'); if (cur->child) { - assert (cur->type == S_IFDIR); + assert(cur->type == S_IFDIR); dump_fsnodes(cur->child); } }