aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Gmelin <grembo@FreeBSD.org>2022-09-07 16:56:49 +0000
committerMichael Gmelin <grembo@FreeBSD.org>2022-09-08 00:16:34 +0000
commit0eb736c0f673d2804a0c8c14fa1e4eae228ab6d2 (patch)
tree59916da021ee0fabdd261b5b357c4da86c61fb80
parentb3b6a959c85af3aabbde3ef2b80dbd4bf5b6f5a7 (diff)
downloadsrc-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.c2
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);