From 658f018671a533a1b4607ddf86950bdb67d7d997 Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Fri, 3 Mar 2023 17:33:36 +0100 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- SOURCES/0001-fsck-fix-memory-leak.patch | 10 +++ SOURCES/0002.patch | 83 +++++++++++++++++++++++++ SPECS/exfatprogs.spec | 63 +++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 SOURCES/0001-fsck-fix-memory-leak.patch create mode 100644 SOURCES/0002.patch create mode 100644 SPECS/exfatprogs.spec diff --git a/SOURCES/0001-fsck-fix-memory-leak.patch b/SOURCES/0001-fsck-fix-memory-leak.patch new file mode 100644 index 0000000..07c9044 --- /dev/null +++ b/SOURCES/0001-fsck-fix-memory-leak.patch @@ -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; + } + diff --git a/SOURCES/0002.patch b/SOURCES/0002.patch new file mode 100644 index 0000000..0e75caf --- /dev/null +++ b/SOURCES/0002.patch @@ -0,0 +1,83 @@ +From 88a334ac2f98affcc526e861c2ed1b8bd2c34b3c Mon Sep 17 00:00:00 2001 +From: Pavel Reichl +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 +--- + 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 + diff --git a/SPECS/exfatprogs.spec b/SPECS/exfatprogs.spec new file mode 100644 index 0000000..5890593 --- /dev/null +++ b/SPECS/exfatprogs.spec @@ -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 - 1.1.3-3.test +- Fix some covscan issues + +* Mon May 09 2022 Pavel Reichl - 1.1.3-2 +- Fix memomry leak + +* Wed Apr 20 2022 Pavel Reichl - 1.1.3-1 +- Rebase + +* Mon Aug 09 2021 Mohan Boddu - 1.1.2-2 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Jun 1 2021 Pavel Reichl - 1.1.2-1 +- First build.