Toshaan Bharvani
1 year ago
commit
658f018671
3 changed files with 156 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||||
|
--- a/fsck/fsck.c 2021-11-17 10:13:55.729267514 +0100 |
||||||
|
+++ b/fsck/fsck.c 2022-05-10 12:19:36.397415101 +0200 |
||||||
|
@@ -796,6 +796,7 @@ |
||||||
|
if (exfat_read(exfat->blk_dev->dev_fd, boot_sect, |
||||||
|
sizeof(*boot_sect), 0) != (ssize_t)sizeof(*boot_sect)) { |
||||||
|
exfat_err("failed to read Main boot sector\n"); |
||||||
|
+ free(boot_sect); |
||||||
|
return -EIO; |
||||||
|
} |
||||||
|
|
@ -0,0 +1,83 @@ |
|||||||
|
From 88a334ac2f98affcc526e861c2ed1b8bd2c34b3c Mon Sep 17 00:00:00 2001 |
||||||
|
From: Pavel Reichl <preichl@redhat.com> |
||||||
|
Date: Wed, 11 May 2022 23:20:43 +0200 |
||||||
|
Subject: [PATCH] exfatprogs: fix some minor code issues |
||||||
|
|
||||||
|
* Add checking of function return value |
||||||
|
* Fix potentially overflowing expression |
||||||
|
|
||||||
|
Signed-off-by: Pavel Reichl <preichl@redhat.com> |
||||||
|
--- |
||||||
|
fsck/de_iter.c | 9 ++++++--- |
||||||
|
lib/libexfat.c | 13 ++++++++++--- |
||||||
|
2 files changed, 16 insertions(+), 6 deletions(-) |
||||||
|
|
||||||
|
diff --git a/fsck/de_iter.c b/fsck/de_iter.c |
||||||
|
index bc95c49..587b027 100644 |
||||||
|
--- a/fsck/de_iter.c |
||||||
|
+++ b/fsck/de_iter.c |
||||||
|
@@ -82,6 +82,9 @@ static int read_ahead_next_blocks(struct exfat_de_iter *iter, |
||||||
|
offset >= iter->ra_begin_offset) { |
||||||
|
ret = get_next_clus(exfat, iter->parent, |
||||||
|
p_clus, &ra_p_clus); |
||||||
|
+ if (ret) |
||||||
|
+ return ret; |
||||||
|
+ |
||||||
|
if (ra_p_clus == EXFAT_EOF_CLUSTER) |
||||||
|
return -EIO; |
||||||
|
|
||||||
|
@@ -172,10 +175,10 @@ static ssize_t read_block(struct exfat_de_iter *iter, unsigned int block) |
||||||
|
ret = get_next_clus(exfat, iter->parent, |
||||||
|
prev_desc->p_clus, &desc->p_clus); |
||||||
|
desc->offset = 0; |
||||||
|
- if (!ret && desc->p_clus == EXFAT_EOF_CLUSTER) |
||||||
|
- return EOF; |
||||||
|
- else if (ret) |
||||||
|
+ if (ret) |
||||||
|
return ret; |
||||||
|
+ else if (desc->p_clus == EXFAT_EOF_CLUSTER) |
||||||
|
+ return EOF; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
diff --git a/lib/libexfat.c b/lib/libexfat.c |
||||||
|
index 42e3fdc..ee48d3a 100644 |
||||||
|
--- a/lib/libexfat.c |
||||||
|
+++ b/lib/libexfat.c |
||||||
|
@@ -470,7 +470,12 @@ int exfat_set_volume_label(struct exfat_blk_dev *bd, |
||||||
|
exfat_err("volume entry write failed: %d\n", errno); |
||||||
|
return -1; |
||||||
|
} |
||||||
|
- fsync(bd->dev_fd); |
||||||
|
+ |
||||||
|
+ if (fsync(bd->dev_fd) == -1) { |
||||||
|
+ exfat_err("failed to sync volume entry: %d, %s\n", errno, |
||||||
|
+ strerror(errno)); |
||||||
|
+ return -1; |
||||||
|
+ } |
||||||
|
|
||||||
|
exfat_info("new label: %s\n", label_input); |
||||||
|
return 0; |
||||||
|
@@ -479,7 +484,8 @@ int exfat_set_volume_label(struct exfat_blk_dev *bd, |
||||||
|
int exfat_read_sector(struct exfat_blk_dev *bd, void *buf, unsigned int sec_off) |
||||||
|
{ |
||||||
|
int ret; |
||||||
|
- unsigned long long offset = sec_off * bd->sector_size; |
||||||
|
+ unsigned long long offset = |
||||||
|
+ (unsigned long long)sec_off * bd->sector_size; |
||||||
|
|
||||||
|
ret = pread(bd->dev_fd, buf, bd->sector_size, offset); |
||||||
|
if (ret < 0) { |
||||||
|
@@ -493,7 +499,8 @@ int exfat_write_sector(struct exfat_blk_dev *bd, void *buf, |
||||||
|
unsigned int sec_off) |
||||||
|
{ |
||||||
|
int bytes; |
||||||
|
- unsigned long long offset = sec_off * bd->sector_size; |
||||||
|
+ unsigned long long offset = |
||||||
|
+ (unsigned long long)sec_off * bd->sector_size; |
||||||
|
|
||||||
|
bytes = pwrite(bd->dev_fd, buf, bd->sector_size, offset); |
||||||
|
if (bytes != (int)bd->sector_size) { |
||||||
|
-- |
||||||
|
2.35.3 |
||||||
|
|
@ -0,0 +1,63 @@ |
|||||||
|
Name: exfatprogs |
||||||
|
Version: 1.1.3 |
||||||
|
Release: 3%{?dist} |
||||||
|
Summary: Userspace utilities for exFAT filesystems |
||||||
|
License: GPLv2 |
||||||
|
URL: https://github.com/%{name}/%{name} |
||||||
|
|
||||||
|
Source0: %{url}/releases/download/%{version}/%{name}-%{version}.tar.xz |
||||||
|
Patch0: 0001-fsck-fix-memory-leak.patch |
||||||
|
Patch1: 0002.patch |
||||||
|
|
||||||
|
BuildRequires: autoconf |
||||||
|
BuildRequires: automake |
||||||
|
BuildRequires: gcc |
||||||
|
BuildRequires: libtool |
||||||
|
BuildRequires: make |
||||||
|
|
||||||
|
%description |
||||||
|
Utilities for formatting and repairing exFAT filesystems. |
||||||
|
|
||||||
|
%prep |
||||||
|
%autosetup -p1 |
||||||
|
|
||||||
|
%build |
||||||
|
autoreconf -vif |
||||||
|
%configure \ |
||||||
|
--enable-shared=yes \ |
||||||
|
--enable-static=no |
||||||
|
%make_build |
||||||
|
|
||||||
|
%install |
||||||
|
%make_install |
||||||
|
|
||||||
|
%files |
||||||
|
%license COPYING |
||||||
|
%doc README.md |
||||||
|
%{_sbindir}/dump.exfat |
||||||
|
%{_sbindir}/exfatlabel |
||||||
|
%{_sbindir}/fsck.exfat |
||||||
|
%{_sbindir}/mkfs.exfat |
||||||
|
%{_sbindir}/tune.exfat |
||||||
|
%{_mandir}/man8/dump.exfat.* |
||||||
|
%{_mandir}/man8/exfatlabel.* |
||||||
|
%{_mandir}/man8/fsck.exfat.* |
||||||
|
%{_mandir}/man8/mkfs.exfat.* |
||||||
|
%{_mandir}/man8/tune.exfat.* |
||||||
|
|
||||||
|
%changelog |
||||||
|
* Tue May 24 2022 Pavel Reichl <preichl@redhat.com> - 1.1.3-3.test |
||||||
|
- Fix some covscan issues |
||||||
|
|
||||||
|
* Mon May 09 2022 Pavel Reichl <preichl@redhat.com> - 1.1.3-2 |
||||||
|
- Fix memomry leak |
||||||
|
|
||||||
|
* Wed Apr 20 2022 Pavel Reichl <preichl@redhat.com> - 1.1.3-1 |
||||||
|
- Rebase |
||||||
|
|
||||||
|
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.1.2-2 |
||||||
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags |
||||||
|
Related: rhbz#1991688 |
||||||
|
|
||||||
|
* Tue Jun 1 2021 Pavel Reichl <preichl@redhat.com> - 1.1.2-1 |
||||||
|
- First build. |
Loading…
Reference in new issue