diff --git a/.gitignore b/.gitignore index 673c48e..e671b73 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ udftools-1.0.0b3.tar.gz /udftools-1.2.tar.gz /udftools-1.3.tar.gz /udftools-2.1.tar.gz +/udftools-2.2.tar.gz +/udftools-2.3.tar.gz diff --git a/sources b/sources index 9f4f01c..4f2392e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (udftools-2.1.tar.gz) = 0bdb3f2e0595200dadb771af4f31ba513d0bf6a0fbd30bc3a1f8aba4ab5f487f61635e65dc155926d2f566cb6e2b2f3a57938071616058cf703692d529971a64 +SHA512 (udftools-2.3.tar.gz) = 17304264388ae53e348d6aa870f0d23c29477344fee848236b46886c086221941872073974f804c0735eafd0cf9f7acdac7988132f03c0a87dba37467b5bda95 diff --git a/udftools-2.3-backported_fixes.patch b/udftools-2.3-backported_fixes.patch new file mode 100644 index 0000000..94be4b3 --- /dev/null +++ b/udftools-2.3-backported_fixes.patch @@ -0,0 +1,357 @@ +From 5905cc991fa466239fba4b6cd7f9f3bda5a87641 Mon Sep 17 00:00:00 2001 +From: Zhang Sheng +Date: Wed, 24 Mar 2021 13:50:05 +0800 +Subject: [PATCH] libudffs: Fix misspelling + +--- + libudffs/extent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libudffs/extent.c b/libudffs/extent.c +index 827d2b7..382962e 100644 +--- a/libudffs/extent.c ++++ b/libudffs/extent.c +@@ -449,7 +449,7 @@ struct udf_desc *find_desc(struct udf_extent *ext, uint32_t offset) + /** + * @brief allocate a new udf_descriptor having a udf_data item and insert it + * into the udf_descriptor list of a udf_extent ordered by block number +- * @oaram ext the udf_extent containing the udf_descriptor list head ++ * @param ext the udf_extent containing the udf_descriptor list head + * @param ident the tag ident of the new udf_descriptor + * @param offset the first block the new descriptor describes + * @param length the length of the udf_data item payload in bytes + +From 0d92ec4627e9921c4d8fa6f9db2ec584d5c8e3ad Mon Sep 17 00:00:00 2001 +From: Zhang Sheng +Date: Thu, 1 Apr 2021 21:15:16 +0800 +Subject: [PATCH] wrudf: Fix incorrect return value checking for `lseek` + +--- + wrudf/wrudf-cdrw.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wrudf/wrudf-cdrw.c b/wrudf/wrudf-cdrw.c +index 7e4391e..569c578 100644 +--- a/wrudf/wrudf-cdrw.c ++++ b/wrudf/wrudf-cdrw.c +@@ -583,7 +583,7 @@ readSingleBlock(uint32_t pbn) + return blockBuffer; + } else { + off = lseek(device, 2048 * pbn, SEEK_SET); +- if( off != (off_t)-1 ) ++ if( off == (off_t)-1 ) + return NULL; + len = read(device, blockBuffer, 2048); + if( len != 2048 ) + +From 6063117955e96f2acd4425dade79fa1428a6cced Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pali=20Roh=C3=A1r?= +Date: Tue, 20 Apr 2021 00:13:03 +0200 +Subject: [PATCH] bswap: Fix typo + +--- + include/bswap.h | 96 ++++++++++++++++++++++++------------------------- + 1 file changed, 48 insertions(+), 48 deletions(-) + +diff --git a/include/bswap.h b/include/bswap.h +index 8cfc7ff..e436903 100644 +--- a/include/bswap.h ++++ b/include/bswap.h +@@ -28,17 +28,17 @@ + #include + #include + +-#define constant_swab16(x) \ ++#define constant_swap16(x) \ + ((uint16_t)((((uint16_t)(x) & 0x00FFU) << 8) | \ + (((uint16_t)(x) & 0xFF00U) >> 8))) + +-#define constant_swab32(x) \ ++#define constant_swap32(x) \ + ((uint32_t)((((uint32_t)(x) & 0x000000FFU) << 24) | \ + (((uint32_t)(x) & 0x0000FF00U) << 8) | \ + (((uint32_t)(x) & 0x00FF0000U) >> 8) | \ + (((uint32_t)(x) & 0xFF000000U) >> 24))) + +-#define constant_swab64(x) \ ++#define constant_swap64(x) \ + ((uint64_t)((((uint64_t)(x) & 0x00000000000000FFULL) << 56) | \ + (((uint64_t)(x) & 0x000000000000FF00ULL) << 40) | \ + (((uint64_t)(x) & 0x0000000000FF0000ULL) << 24) | \ +@@ -48,13 +48,13 @@ + (((uint64_t)(x) & 0x00FF000000000000ULL) >> 40) | \ + (((uint64_t)(x) & 0xFF00000000000000ULL) >> 56))) + +-static inline uint16_t swab16(uint16_t x) ++static inline uint16_t swap16(uint16_t x) + { + return ((uint16_t)((((uint16_t)(x) & 0x00FFU) << 8) | \ + (((uint16_t)(x) & 0xFF00U) >> 8))); + } + +-static inline uint32_t swab32(uint32_t x) ++static inline uint32_t swap32(uint32_t x) + { + return ((uint32_t)((((uint32_t)(x) & 0x000000FFU) << 24) | \ + (((uint32_t)(x) & 0x0000FF00U) << 8) | \ +@@ -62,7 +62,7 @@ static inline uint32_t swab32(uint32_t x) + (((uint32_t)(x) & 0xFF000000U) >> 24))); + } + +-static inline uint64_t swab64(uint64_t x) ++static inline uint64_t swap64(uint64_t x) + { + return ((uint64_t)((((uint64_t)(x) & 0x00000000000000FFULL) << 56) | \ + (((uint64_t)(x) & 0x000000000000FF00ULL) << 40) | \ +@@ -74,17 +74,17 @@ static inline uint64_t swab64(uint64_t x) + (((uint64_t)(x) & 0xFF00000000000000ULL) >> 56))); + } + +-#define constant_swab16p(x) \ ++#define constant_swap16p(x) \ + ((uint16_t)(((*(uint16_t *)(x) & 0x00FFU) << 8) | \ + ((*(uint16_t *)(x) & 0xFF00U) >> 8))) + +-#define constant_swab32p(x) \ ++#define constant_swap32p(x) \ + ((uint32_t)(((*(uint32_t *)(x) & 0x000000FFU) << 24) | \ + ((*(uint32_t *)(x) & 0x0000FF00U) << 8) | \ + ((*(uint32_t *)(x) & 0x00FF0000U) >> 8) | \ + ((*(uint32_t *)(x) & 0xFF000000U) >> 24))) + +-#define constant_swab64p(x) \ ++#define constant_swap64p(x) \ + ((uint64_t)(((*(uint64_t *)(x) & 0x00000000000000FFULL) << 56) | \ + ((*(uint64_t *)(x) & 0x000000000000FF00ULL) << 40) | \ + ((*(uint64_t *)(x) & 0x0000000000FF0000ULL) << 24) | \ +@@ -95,13 +95,13 @@ static inline uint64_t swab64(uint64_t x) + ((*(uint64_t *)(x) & 0xFF00000000000000ULL) >> 56))) + + +-static inline uint16_t swab16p(uint16_t *x) ++static inline uint16_t swap16p(uint16_t *x) + { + return ((uint16_t)(((*(uint16_t *)(x) & 0x00FFU) << 8) | \ + ((*(uint16_t *)(x) & 0xFF00U) >> 8))); + } + +-static inline uint32_t swab32p(uint32_t *x) ++static inline uint32_t swap32p(uint32_t *x) + { + return ((uint32_t)(((*(uint32_t *)(x) & 0x000000FFU) << 24) | \ + ((*(uint32_t *)(x) & 0x0000FF00U) << 8) | \ +@@ -109,7 +109,7 @@ static inline uint32_t swab32p(uint32_t *x) + ((*(uint32_t *)(x) & 0xFF000000U) >> 24))); + } + +-static inline uint64_t swab64p(uint64_t *x) ++static inline uint64_t swap64p(uint64_t *x) + { + return ((uint64_t)(((*(uint64_t *)(x) & 0x00000000000000FFULL) << 56) | \ + ((*(uint64_t *)(x) & 0x000000000000FF00ULL) << 40) | \ +@@ -124,37 +124,37 @@ static inline uint64_t swab64p(uint64_t *x) + #ifdef WORDS_BIGENDIAN + + #define le16_to_cpu(x) (__builtin_constant_p(x) ? \ +- constant_swab16(x) : \ +- swab16(x)) ++ constant_swap16(x) : \ ++ swap16(x)) + + #define le32_to_cpu(x) (__builtin_constant_p(x) ? \ +- constant_swab32(x) : \ +- swab32(x)) ++ constant_swap32(x) : \ ++ swap32(x)) + + #define le64_to_cpu(x) (__builtin_constant_p(x) ? \ +- constant_swab64(x) : \ +- swab64(x)) ++ constant_swap64(x) : \ ++ swap64(x)) + + +-#define constant_le16_to_cpu(x) constant_swab16((x)) +-#define constant_le32_to_cpu(x) constant_swab32((x)) +-#define constant_le64_to_cpu(x) constant_swab64((x)) ++#define constant_le16_to_cpu(x) constant_swap16((x)) ++#define constant_le32_to_cpu(x) constant_swap32((x)) ++#define constant_le64_to_cpu(x) constant_swap64((x)) + + #define le16_to_cpup(x) (__builtin_constant_p(x) ? \ +- constant_swab16p(x) : \ +- swab16p(x)) ++ constant_swap16p(x) : \ ++ swap16p(x)) + + #define le32_to_cpup(x) (__builtin_constant_p(x) ? \ +- constant_swab32p(x) : \ +- swab32p(x)) ++ constant_swap32p(x) : \ ++ swap32p(x)) + + #define le64_to_cpup(x) (__builtin_constant_p(x) ? \ +- constant_swab64p(x) : \ +- swab64p(x)) ++ constant_swap64p(x) : \ ++ swap64p(x)) + +-#define constant_le16_to_cpup(x) constant_swab16p((x)) +-#define constant_le32_to_cpup(x) constant_swab32p((x)) +-#define constant_le64_to_cpup(x) constant_swab64p((x)) ++#define constant_le16_to_cpup(x) constant_swap16p((x)) ++#define constant_le32_to_cpup(x) constant_swap32p((x)) ++#define constant_le64_to_cpup(x) constant_swap64p((x)) + + #define be16_to_cpu(x) ((uint16_t)(x)) + #define be32_to_cpu(x) ((uint32_t)(x)) +@@ -191,37 +191,37 @@ static inline uint64_t swab64p(uint64_t *x) + #define constant_le64_to_cpup(x) (*(uint64_t *)(x)) + + #define be16_to_cpu(x) (__builtin_constant_p(x) ? \ +- constant_swab16(x) : \ +- swab16(x)) ++ constant_swap16(x) : \ ++ swap16(x)) + + #define be32_to_cpu(x) (__builtin_constant_p(x) ? \ +- constant_swab32(x) : \ +- swab32(x)) ++ constant_swap32(x) : \ ++ swap32(x)) + + #define be64_to_cpu(x) (__builtin_constant_p(x) ? \ +- constant_swab64(x) : \ +- swab64(x)) ++ constant_swap64(x) : \ ++ swap64(x)) + + +-#define constant_be16_to_cpu(x) constant_swab16((x)) +-#define constant_be32_to_cpu(x) constant_swab32((x)) +-#define constant_be64_to_cpu(x) constant_swab64((x)) ++#define constant_be16_to_cpu(x) constant_swap16((x)) ++#define constant_be32_to_cpu(x) constant_swap32((x)) ++#define constant_be64_to_cpu(x) constant_swap64((x)) + + #define be16_to_cpup(x) (__builtin_constant_p(x) ? \ +- constant_swab16p(x) : \ +- swab16p(x)) ++ constant_swap16p(x) : \ ++ swap16p(x)) + + #define be32_to_cpup(x) (__builtin_constant_p(x) ? \ +- constant_swab32p(x) : \ +- swab32p(x)) ++ constant_swap32p(x) : \ ++ swap32p(x)) + + #define be64_to_cpup(x) (__builtin_constant_p(x) ? \ +- constant_swab64p(x) : \ +- swab64p(x)) ++ constant_swap64p(x) : \ ++ swap64p(x)) + +-#define constant_be16_to_cpup(x) constant_swab16p((x)) +-#define constant_be32_to_cpup(x) constant_swab32p((x)) +-#define constant_be64_to_cpup(x) constant_swab64p((x)) ++#define constant_be16_to_cpup(x) constant_swap16p((x)) ++#define constant_be32_to_cpup(x) constant_swap32p((x)) ++#define constant_be64_to_cpup(x) constant_swap64p((x)) + + #endif /* WORDS_BIGENDIAN */ + + +From 07c5f12de1f9d3582b21d78296b7d05403dca008 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pali=20Roh=C3=A1r?= +Date: Tue, 20 Apr 2021 00:13:26 +0200 +Subject: [PATCH] mkudffs: Add missing branch for mmc_profile detection + +--- + mkudffs/options.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/mkudffs/options.c b/mkudffs/options.c +index 58d810a..0b9e4a7 100644 +--- a/mkudffs/options.c ++++ b/mkudffs/options.c +@@ -797,6 +797,10 @@ void parse_args(int argc, char *argv[], struct udf_disc *disc, char **device, in + else /* All other disc statuses means that medium is recordable = CD-R */ + mmc_profile = 0x09; + } ++ else ++ { ++ mmc_profile = 0x00; /* Unknown optical disc */ ++ } + } + else + { + +From 7a432b0bcd76cbd6a79925cde213f5d9073df137 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pali=20Roh=C3=A1r?= +Date: Sat, 12 Jun 2021 12:09:05 +0200 +Subject: [PATCH] wrudf: Fix parsing Volume Descriptor Sequence + +Fixes reading Reserve Volume Descriptor Sequence and fixes crashing when +readTaggedBlock() returns NULL. +--- + wrudf/wrudf.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/wrudf/wrudf.c b/wrudf/wrudf.c +index 79ca383..7a500c9 100644 +--- a/wrudf/wrudf.c ++++ b/wrudf/wrudf.c +@@ -93,6 +93,7 @@ void + initialise(char *devicename) + { + uint32_t i, len, blkno, lastblk, size; ++ int inMainSeq; + long_ad *fsdAd; + short_ad *adSpaceMap; + struct sparablePartitionMap *spm; +@@ -158,17 +159,17 @@ initialise(char *devicename) + /* read Volume Descriptor Sequence */ + blkno = extentMainVolDescSeq.extLocation; + len = extentMainVolDescSeq.extLength; ++ inMainSeq = 1; + + for( i = 0; i < len; blkno++, i += 2048 ) { +- int inMainSeq = 1; +- + if( (p = readTaggedBlock(blkno, ABSOLUTE)) == NULL ) { + if( !inMainSeq ) + fail("Volume Descriptor Sequences read failure\n"); +- blkno = extentRsrvVolDescSeq.extLocation; ++ blkno = extentRsrvVolDescSeq.extLocation - 1; + len = extentRsrvVolDescSeq.extLength; + inMainSeq = 0; +- i = 0; ++ i = (uint32_t) -2048; ++ continue; + } + switch( p->descTag.tagIdent ) { + case TAG_IDENT_PVD: + +From b08c75d234d69b2d1cf07dc639d432db767a775f Mon Sep 17 00:00:00 2001 +From: Jiri Kucera +Date: Sun, 13 Jun 2021 19:37:47 +0200 +Subject: [PATCH] wrudf-cdr.c: Exit on allocation failure + +--- + wrudf/wrudf-cdr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wrudf/wrudf-cdr.c b/wrudf/wrudf-cdr.c +index 538167a..27883da 100644 +--- a/wrudf/wrudf-cdr.c ++++ b/wrudf/wrudf-cdr.c +@@ -26,7 +26,7 @@ uint32_t newVATentry() { + sizeVAT += 2048; + vat = realloc(vat, sizeVAT); + if( vat == NULL ) +- printf("VAT reallocation failed\n"); ++ fail("VAT reallocation failed\n"); + } + /* could go through VAT and try to find unused 0xFFFFFFFF entry rather than alloc new one at the end */ + vat[newVATindex] = getNWA() - pd->partitionStartingLocation; diff --git a/udftools.spec b/udftools.spec index 9a8793e..5f86291 100644 --- a/udftools.spec +++ b/udftools.spec @@ -1,13 +1,13 @@ Summary: Linux UDF Filesystem userspace utilities Name: udftools -Version: 2.1 -Release: 5%{?dist} -License: GPLv2+ +Version: 2.3 +Release: 14%{?dist} +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later URL: http://sourceforge.net/projects/linux-udf/ -#Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz -Source: https://github.com/pali/udftools/releases/tag/%{version}/udftools-%{version}.tar.gz -#old versions at Source: https://sourceforge.net/projects/linux-udf/files/%{name}/%{version}/%{name}-%{version}.tar.gz -Source2: wrudf.1 +Source: https://github.com/pali/udftools/releases/download/%{version}/udftools-%{version}.tar.gz +Patch1: udftools-2.3-backported_fixes.patch +BuildRequires: make BuildRequires: readline-devel, ncurses-devel BuildRequires: autoconf, automake, libtool, perl-Carp BuildRequires: udev @@ -18,24 +18,23 @@ Linux UDF Filesystem userspace utilities. %prep -%setup +%autosetup -p1 %build #./bootstrap #not in the tarball anymore, lets use pregenerated autotools ##export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing --std=gnu99" %configure %make_build -##%{__make} %{?_smp_mflags} +##%%{__make} %%{?_smp_mflags} %install %make_install -#./libtool --finish %{buildroot}%{_libdir} #causes failure and is probably unneeded, we dont ship a library -install -m 644 %{SOURCE2} %buildroot%{_mandir}/man1/ +#./libtool --finish %%{buildroot}%%{_libdir} #causes failure and is probably unneeded, we dont ship a library rm -rf %{buildroot}%{_bindir}/udffsck %files -%doc AUTHORS ChangeLog +%doc AUTHORS NEWS %license COPYING %{_bindir}/* %{_sbindir}/* @@ -45,6 +44,58 @@ rm -rf %{buildroot}%{_bindir}/udffsck %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 2.3-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Sat Jan 17 2026 Fedora Release Engineering - 2.3-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 2.3-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jan 19 2025 Fedora Release Engineering - 2.3-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jul 26 2024 Miroslav Suchý - 2.3-10 +- convert license to SPDX + +* Sat Jul 20 2024 Fedora Release Engineering - 2.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 2.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 2.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jan 21 2023 Fedora Release Engineering - 2.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering - 2.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 2.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 2.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jun 15 2021 Jiri Kucera - 2.3-2 +- wrudf: Fix parsing Volume Descriptor Sequence +- wrudf: Exit on allocation failure + +* Wed Jun 09 2021 Jiri Kucera - 2.3-1 +- Update to 2.3 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Apr 20 2020 Filipe Rosset - 2.2-1 +- Update to 2.2 + * Fri Jan 31 2020 Fedora Release Engineering - 2.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild diff --git a/wrudf.1 b/wrudf.1 deleted file mode 100644 index cab2d53..0000000 --- a/wrudf.1 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Text automatically generated by txt2man -.TH wrudf 1 "16 April 2013" "udftools" "Linux Reference Manual" -.SH NAME -\fBwrudf \fP- Maintain an UDF filesystem. -.SH SYNOPSIS -.nf -.fam C -\fBwrudf\fP \fIdevice\fP -\fBwrudf\fP \fB--help\fP | \fB-help\fP | \fB-h\fP -.fam T -.fi -.fam T -.fi -.SH DESCRIPTION -\fBwrudf\fP provides an interactive shell with operations on existing UDF filesystem: cp, rm, mkdir, rmdir, ls, cd. -.SS COMMANDS -.TP -.B -cp -copy -.TP -.B -rm -remove -.TP -.B -mkdir -make directory -.TP -.B -rmdir -remove directory -.TP -.B -lsc -list files (Compact disc version) -.TP -.B -lsh -list files (Hard disc version) -.TP -.B -cdc -change working directory (Compact disc) -.TP -.B -cdh -change working directory (Hard disc) -.TP -.B -quit -quit \fBwrudf\fP -.TP -.B -exit -quit \fBwrudf\fP -.SH AVAILABILITY -\fBwrudf\fP is part of the udftools package and is available from http://linux-udf.sourceforge.net. -.SH SEE ALSO -\fBcdrwtool\fP(1), \fBmkudffs\fP(8), \fBpktsetup\fP(8)