udftools/SOURCES/udftools-2.3-backported_fixes.patch
2021-10-08 18:01:04 +00:00

358 lines
12 KiB
Diff

From 5905cc991fa466239fba4b6cd7f9f3bda5a87641 Mon Sep 17 00:00:00 2001
From: Zhang Sheng <zhangsheng@uniontech.com>
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 <zhangsheng@uniontech.com>
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?= <pali.rohar@gmail.com>
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?= <pali.rohar@gmail.com>
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?= <pali.rohar@gmail.com>
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 <jkucera@redhat.com>
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;