diff options
author | Michael Gmelin <grembo@FreeBSD.org> | 2022-09-07 16:56:49 +0000 |
---|---|---|
committer | Michael Gmelin <grembo@FreeBSD.org> | 2022-09-08 00:16:34 +0000 |
commit | 0eb736c0f673d2804a0c8c14fa1e4eae228ab6d2 (patch) | |
tree | 59916da021ee0fabdd261b5b357c4da86c61fb80 | |
parent | b3b6a959c85af3aabbde3ef2b80dbd4bf5b6f5a7 (diff) | |
download | src-0eb736c0f673d2804a0c8c14fa1e4eae228ab6d2.tar.gz src-0eb736c0f673d2804a0c8c14fa1e4eae228ab6d2.zip |
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
-rw-r--r-- | stand/libsa/dosfs.c | 2 |
1 files changed, 1 insertions, 1 deletions
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); |