summaryrefslogtreecommitdiff
path: root/sys-apps/gptfdisk/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-07-08 15:03:58 +0100
committerV3n3RiX <venerix@redcorelinux.org>2021-07-08 15:03:58 +0100
commit814f4cf860e299a046b649eaee5463427984c09c (patch)
tree74c45f097899310e599dad6b8df5b63e0f085bc0 /sys-apps/gptfdisk/files
parent7f0ccc917c7abe6223784c703d86cd14755691fb (diff)
gentoo resync : 08.07.2021
Diffstat (limited to 'sys-apps/gptfdisk/files')
-rw-r--r--sys-apps/gptfdisk/files/gptfdisk-1.0.7-remove_byteswap.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/sys-apps/gptfdisk/files/gptfdisk-1.0.7-remove_byteswap.patch b/sys-apps/gptfdisk/files/gptfdisk-1.0.7-remove_byteswap.patch
new file mode 100644
index 000000000000..c1874d6edd7c
--- /dev/null
+++ b/sys-apps/gptfdisk/files/gptfdisk-1.0.7-remove_byteswap.patch
@@ -0,0 +1,50 @@
+From fded770b55fdb3a201ad515d785c17ac35705652 Mon Sep 17 00:00:00 2001
+From: Erik Larsson <catacombae@gmail.com>
+Date: Tue, 8 Jun 2021 16:11:21 +0300
+Subject: [PATCH] gptpart.cc: Remove byteswap commands in
+ GPTPart::SetName(const string&).
+
+The byteswapping done in GPTPart::SetName(const string&) was reversed
+later when GPTPart::ReversePartBytes() was called.
+
+The intended design seems to have been to keep the fields in native
+endianness until just before the partition is written to disk when all
+the GPTPart data is byteswapped all at once with a call to
+GPTPart::ReversePartBytes().
+However this was defeated by leaving the original byteswaps in there and
+effectively the name was swapped back to the native-endian form. For big
+endian systems this meant that a UTF-16BE string was written to disk,
+violating the specification and causing interoperability problems.
+
+Fixed by removing these inline byteswaps in GPTPart::SetName(const
+string&).
+---
+ gptpart.cc | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/gptpart.cc b/gptpart.cc
+index 81bbcf0..841140a 100644
+--- a/gptpart.cc
++++ b/gptpart.cc
+@@ -242,7 +242,6 @@ void GPTPart::SetName(const string & theName) {
+ // then to utf16le
+ if ( uni < 0x10000 ) {
+ name[ pos ] = (uint16_t) uni ;
+- if ( ! IsLittleEndian() ) ReverseBytes( name + pos , 2 ) ;
+ pos ++ ;
+ } // if
+ else {
+@@ -252,10 +251,8 @@ void GPTPart::SetName(const string & theName) {
+ } // if
+ uni -= 0x10000 ;
+ name[ pos ] = (uint16_t)( uni >> 10 ) | 0xd800 ;
+- if ( ! IsLittleEndian() ) ReverseBytes( name + pos , 2 ) ;
+ pos ++ ;
+ name[ pos ] = (uint16_t)( uni & 0x3ff ) | 0xdc00 ;
+- if ( ! IsLittleEndian() ) ReverseBytes( name + pos , 2 ) ;
+ pos ++ ;
+ }
+ } // for
+--
+2.32.0
+