git: 0eb736c0f673 - main - stand: Unbreak FAT32 in loader
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 08 Sep 2022 00:19:16 UTC
The branch main has been updated by grembo (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=0eb736c0f673d2804a0c8c14fa1e4eae228ab6d2 commit 0eb736c0f673d2804a0c8c14fa1e4eae228ab6d2 Author: Michael Gmelin <grembo@FreeBSD.org> AuthorDate: 2022-09-07 16:56:49 +0000 Commit: Michael Gmelin <grembo@FreeBSD.org> CommitDate: 2022-09-08 00:16:34 +0000 stand: Unbreak FAT32 in loader This corrects an issue introduced in b4cb3fe0e39a3, where a freshly allocated `DOS_FS` structure would not be initialized properly before use in `dos_open`. In case of FAT32 file systems, this would leave `fs->dirents` uninitialized and - depending on its content and due to checks in `parsebs` - prevent mounting the file system successfully. This particularily impacted the EFI loader, as it was sometimes not able to read files from a FAT32-formatted EFI partition, including LoaderEnv (`/efi/freebsd/loader.env`). Accepted by: imp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D36482 --- stand/libsa/dosfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/dosfs.c b/stand/libsa/dosfs.c index 09f09dc66809..e50f8f25e16a 100644 --- a/stand/libsa/dosfs.c +++ b/stand/libsa/dosfs.c @@ -321,7 +321,7 @@ dos_open(const char *path, struct open_file *fd) if (mnt == NULL) { /* Allocate mount structure, associate with open */ - if ((fs = malloc(sizeof(DOS_FS))) == NULL) + if ((fs = calloc(1, sizeof(DOS_FS))) == NULL) return (errno); if ((err = dos_mount_impl(fs, fd))) { free(fs);