mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-06-23 08:28:46 +00:00
fix(storage): ensure little endian is always used in python implementation
[no changelog]
This commit is contained in:
parent
e0594c9c62
commit
abcbf88e9b
@ -1,5 +1,4 @@
|
|||||||
import sys
|
from struct import pack, unpack
|
||||||
from struct import pack
|
|
||||||
|
|
||||||
from . import consts
|
from . import consts
|
||||||
|
|
||||||
@ -213,12 +212,11 @@ class NorcowBitwise(Norcow):
|
|||||||
if offset >= consts.NORCOW_SECTOR_SIZE:
|
if offset >= consts.NORCOW_SECTOR_SIZE:
|
||||||
raise ValueError("Norcow: no data on this offset")
|
raise ValueError("Norcow: no data on this offset")
|
||||||
|
|
||||||
key = self.sectors[self.active_sector][offset : offset + 2]
|
key, length = unpack(
|
||||||
key = int.from_bytes(key, sys.byteorder)
|
"<HH", self.sectors[self.active_sector][offset : offset + 4]
|
||||||
|
)
|
||||||
if key == consts.NORCOW_KEY_FREE:
|
if key == consts.NORCOW_KEY_FREE:
|
||||||
raise ValueError("Norcow: no data on this offset")
|
raise ValueError("Norcow: no data on this offset")
|
||||||
length = self.sectors[self.active_sector][offset + 2 : offset + 4]
|
|
||||||
length = int.from_bytes(length, sys.byteorder)
|
|
||||||
value = self.sectors[self.active_sector][offset + 4 : offset + 4 + length]
|
value = self.sectors[self.active_sector][offset + 4 : offset + 4 + length]
|
||||||
|
|
||||||
return key, value
|
return key, value
|
||||||
@ -275,8 +273,9 @@ class NorcowBlockwise(Norcow):
|
|||||||
return len(data)
|
return len(data)
|
||||||
else:
|
else:
|
||||||
if key == 0:
|
if key == 0:
|
||||||
old_key = self.sectors[self.active_sector][pos + 0 : pos + 2]
|
old_key, _ = unpack(
|
||||||
old_key = int.from_bytes(old_key, sys.byteorder)
|
"<HH", self.sectors[self.active_sector][pos : pos + 4]
|
||||||
|
)
|
||||||
data = align_data(
|
data = align_data(
|
||||||
pack("<HH", old_key, len(new_value)), self.block_size, b"\x00"
|
pack("<HH", old_key, len(new_value)), self.block_size, b"\x00"
|
||||||
)
|
)
|
||||||
@ -308,18 +307,15 @@ class NorcowBlockwise(Norcow):
|
|||||||
if offset >= consts.NORCOW_SECTOR_SIZE:
|
if offset >= consts.NORCOW_SECTOR_SIZE:
|
||||||
raise ValueError("Norcow: no data on this offset")
|
raise ValueError("Norcow: no data on this offset")
|
||||||
|
|
||||||
length = self.sectors[self.active_sector][offset + 2 : offset + 4]
|
key, length = unpack(
|
||||||
length = int.from_bytes(length, sys.byteorder)
|
"<HH", self.sectors[self.active_sector][offset : offset + 4]
|
||||||
|
)
|
||||||
|
|
||||||
if length <= self.small_item_size:
|
if length <= self.small_item_size:
|
||||||
key = self.sectors[self.active_sector][offset : offset + 2]
|
|
||||||
key = int.from_bytes(key, sys.byteorder)
|
|
||||||
if key == consts.NORCOW_KEY_FREE:
|
if key == consts.NORCOW_KEY_FREE:
|
||||||
raise ValueError("Norcow: no data on this offset")
|
raise ValueError("Norcow: no data on this offset")
|
||||||
value = self.sectors[self.active_sector][offset + 4 : offset + 4 + length]
|
value = self.sectors[self.active_sector][offset + 4 : offset + 4 + length]
|
||||||
else:
|
else:
|
||||||
key = self.sectors[self.active_sector][offset : offset + 2]
|
|
||||||
key = int.from_bytes(key, sys.byteorder)
|
|
||||||
if key == consts.NORCOW_KEY_FREE:
|
if key == consts.NORCOW_KEY_FREE:
|
||||||
raise ValueError("Norcow: no data on this offset")
|
raise ValueError("Norcow: no data on this offset")
|
||||||
deleted = self.sectors[self.active_sector][
|
deleted = self.sectors[self.active_sector][
|
||||||
|
Loading…
Reference in New Issue
Block a user