Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade: udftools version to 2.3 #11888

Merged
merged 4 commits into from
Mar 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
357 changes: 357 additions & 0 deletions SPECS-EXTENDED/udftools/udftools-2.3-backported_fixes.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,357 @@
From 5905cc991fa466239fba4b6cd7f9f3bda5a87641 Mon Sep 17 00:00:00 2001
From: Zhang Sheng <[email protected]>
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 <[email protected]>
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?= <[email protected]>
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 <stdint.h>
#include <sys/types.h>

-#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?= <[email protected]>
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?= <[email protected]>
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 <[email protected]>
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;
5 changes: 2 additions & 3 deletions SPECS-EXTENDED/udftools/udftools.signatures.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"Signatures": {
"udftools-2.1.tar.gz": "783221bcc2518ea480cee01ceeb8825db7a089f4e986b557f6460f89636142b6",
"wrudf.1": "970a2547045d13e9a76f57339e6152747bc25f5f30c84006cbb6faaa6937d4bc"
"udftools-2.3.tar.gz": "750dcf5c797765eb42265e0a56d1a99f97f94b7f6f4534263a5410503f0caf59"
}
}
}
Loading
Loading