svn commit: r352902 - releng/12.1/sbin/fsck_msdosfs
Xin LI
delphij at FreeBSD.org
Mon Sep 30 14:32:42 UTC 2019
Author: delphij
Date: Mon Sep 30 14:32:41 2019
New Revision: 352902
URL: https://svnweb.freebsd.org/changeset/base/352902
Log:
MFS r352872: MFC r351802:
Correct overflow logic in fullpath().
Obtained from: OpenBSD
Approved by: re (gjb)
Modified:
releng/12.1/sbin/fsck_msdosfs/dir.c
Directory Properties:
releng/12.1/ (props changed)
Modified: releng/12.1/sbin/fsck_msdosfs/dir.c
==============================================================================
--- releng/12.1/sbin/fsck_msdosfs/dir.c Mon Sep 30 14:19:18 2019 (r352901)
+++ releng/12.1/sbin/fsck_msdosfs/dir.c Mon Sep 30 14:32:41 2019 (r352902)
@@ -168,20 +168,24 @@ fullpath(struct dosDirEntry *dir)
char *cp, *np;
int nl;
- cp = namebuf + sizeof namebuf - 1;
- *cp = '\0';
- do {
+ cp = namebuf + sizeof namebuf;
+ *--cp = '\0';
+
+ for(;;) {
np = dir->lname[0] ? dir->lname : dir->name;
nl = strlen(np);
- if ((cp -= nl) <= namebuf + 1)
+ if (cp <= namebuf + 1 + nl) {
+ *--cp = '?';
break;
+ }
+ cp -= nl;
memcpy(cp, np, nl);
+ dir = dir->parent;
+ if (!dir)
+ break;
*--cp = '/';
- } while ((dir = dir->parent) != NULL);
- if (dir)
- *--cp = '?';
- else
- cp++;
+ }
+
return cp;
}
More information about the svn-src-releng
mailing list