mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-21 17:36:30 +00:00
Strip null character off udisks2 paths (#4215)
* Strip null character off udisks2 paths * Fix circular import
This commit is contained in:
parent
852771fbcf
commit
c9ee76f1d3
@ -32,7 +32,7 @@ from ..const import (
|
||||
from ..interface import DBusInterfaceProxy, dbus_property
|
||||
from ..utils import dbus_connected
|
||||
from .const import UDISKS2_DEFAULT_OPTIONS, FormatType
|
||||
from .data import FormatOptions
|
||||
from .data import FormatOptions, udisks2_bytes_to_path
|
||||
from .filesystem import UDisks2Filesystem
|
||||
from .partition_table import UDisks2PartitionTable
|
||||
|
||||
@ -88,7 +88,7 @@ class UDisks2Block(DBusInterfaceProxy):
|
||||
@dbus_property
|
||||
def device(self) -> Path:
|
||||
"""Return device file."""
|
||||
return Path(bytes(self.properties[DBUS_ATTR_DEVICE]).decode())
|
||||
return udisks2_bytes_to_path(self.properties[DBUS_ATTR_DEVICE])
|
||||
|
||||
@property
|
||||
@dbus_property
|
||||
@ -113,7 +113,7 @@ class UDisks2Block(DBusInterfaceProxy):
|
||||
def symlinks(self) -> list[Path]:
|
||||
"""Return list of symlinks."""
|
||||
return [
|
||||
Path(bytes(symlink).decode(encoding="utf-8"))
|
||||
udisks2_bytes_to_path(symlink)
|
||||
for symlink in self.properties[DBUS_ATTR_SYMLINKS]
|
||||
]
|
||||
|
||||
|
@ -11,6 +11,14 @@ from typing_extensions import NotRequired
|
||||
from .const import EncryptType, EraseMode
|
||||
|
||||
|
||||
def udisks2_bytes_to_path(path_bytes: bytearray) -> Path:
|
||||
"""Convert bytes to path object without null character on end."""
|
||||
if path_bytes and path_bytes[-1] == 0:
|
||||
return Path(path_bytes[:-1].decode())
|
||||
|
||||
return Path(path_bytes.decode())
|
||||
|
||||
|
||||
def _optional_variant(signature: str, value: Any | None) -> Variant | None:
|
||||
"""Output variant if value is not none."""
|
||||
return Variant(signature, value) if value is not None else None
|
||||
|
@ -11,7 +11,7 @@ from ..const import (
|
||||
from ..interface import DBusInterfaceProxy, dbus_property
|
||||
from ..utils import dbus_connected
|
||||
from .const import UDISKS2_DEFAULT_OPTIONS
|
||||
from .data import MountOptions, UnmountOptions
|
||||
from .data import MountOptions, UnmountOptions, udisks2_bytes_to_path
|
||||
|
||||
|
||||
class UDisks2Filesystem(DBusInterfaceProxy):
|
||||
@ -35,7 +35,7 @@ class UDisks2Filesystem(DBusInterfaceProxy):
|
||||
def mount_points(self) -> list[Path]:
|
||||
"""Return mount points."""
|
||||
return [
|
||||
Path(bytes(mount_point).decode())
|
||||
udisks2_bytes_to_path(mount_point)
|
||||
for mount_point in self.properties[DBUS_ATTR_MOUNT_POINTS]
|
||||
]
|
||||
|
||||
|
@ -208,11 +208,11 @@ FIXTURES: dict[str, BlockFixture] = {
|
||||
UserspaceMountOptions=[],
|
||||
),
|
||||
"/org/freedesktop/UDisks2/block_devices/sda": BlockFixture(
|
||||
Device=b"/dev/sda",
|
||||
PreferredDevice=b"/dev/sda",
|
||||
Device=b"/dev/sda\x00",
|
||||
PreferredDevice=b"/dev/sda\x00",
|
||||
Symlinks=[
|
||||
b"/dev/disk/by-id/usb-SSK_SSK_Storage_DF56419883D56-0:0",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.4:1.0-scsi-0:0:0:0",
|
||||
b"/dev/disk/by-id/usb-SSK_SSK_Storage_DF56419883D56-0:0\x00",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.4:1.0-scsi-0:0:0:0\x00",
|
||||
],
|
||||
DeviceNumber=2048,
|
||||
Id="by-id-usb-SSK_SSK_Storage_DF56419883D56-0:0",
|
||||
@ -238,15 +238,15 @@ FIXTURES: dict[str, BlockFixture] = {
|
||||
UserspaceMountOptions=[],
|
||||
),
|
||||
"/org/freedesktop/UDisks2/block_devices/sda1": BlockFixture(
|
||||
Device=b"/dev/sda1",
|
||||
PreferredDevice=b"/dev/sda1",
|
||||
Device=b"/dev/sda1\x00",
|
||||
PreferredDevice=b"/dev/sda1\x00",
|
||||
Symlinks=[
|
||||
b"/dev/disk/by-id/usb-SSK_SSK_Storage_DF56419883D56-0:0-part1",
|
||||
b"/dev/disk/by-label/hassos-data",
|
||||
b"/dev/disk/by-partlabel/hassos-data-external",
|
||||
b"/dev/disk/by-partuuid/6f3f99f4-4d34-476b-b051-77886da57fa9",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.4:1.0-scsi-0:0:0:0-part1",
|
||||
b"/dev/disk/by-uuid/b82b23cb-0c47-4bbb-acf5-2a2afa8894a2",
|
||||
b"/dev/disk/by-id/usb-SSK_SSK_Storage_DF56419883D56-0:0-part1\x00",
|
||||
b"/dev/disk/by-label/hassos-data\x00",
|
||||
b"/dev/disk/by-partlabel/hassos-data-external\x00",
|
||||
b"/dev/disk/by-partuuid/6f3f99f4-4d34-476b-b051-77886da57fa9\x00",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.4:1.0-scsi-0:0:0:0-part1\x00",
|
||||
b"/dev/disk/by-uuid/b82b23cb-0c47-4bbb-acf5-2a2afa8894a2\x00",
|
||||
],
|
||||
DeviceNumber=2049,
|
||||
Id="by-id-usb-SSK_SSK_Storage_DF56419883D56-0:0-part1",
|
||||
@ -272,11 +272,11 @@ FIXTURES: dict[str, BlockFixture] = {
|
||||
UserspaceMountOptions=[],
|
||||
),
|
||||
"/org/freedesktop/UDisks2/block_devices/sdb": BlockFixture(
|
||||
Device=b"/dev/sdb",
|
||||
PreferredDevice=b"/dev/sdb",
|
||||
Device=b"/dev/sdb\x00",
|
||||
PreferredDevice=b"/dev/sdb\x00",
|
||||
Symlinks=[
|
||||
b"/dev/disk/by-id/usb-Generic_Flash_Disk_61BCDDB6-0:0",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.2:1.0-scsi-0:0:0:0",
|
||||
b"/dev/disk/by-id/usb-Generic_Flash_Disk_61BCDDB6-0:0\x00",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.2:1.0-scsi-0:0:0:0\x00",
|
||||
],
|
||||
DeviceNumber=2064,
|
||||
Id="",
|
||||
@ -302,12 +302,12 @@ FIXTURES: dict[str, BlockFixture] = {
|
||||
UserspaceMountOptions=[],
|
||||
),
|
||||
"/org/freedesktop/UDisks2/block_devices/sdb1": BlockFixture(
|
||||
Device=b"/dev/sdb1",
|
||||
PreferredDevice=b"/dev/sdb1",
|
||||
Device=b"/dev/sdb1\x00",
|
||||
PreferredDevice=b"/dev/sdb1\x00",
|
||||
Symlinks=[
|
||||
b"/dev/disk/by-id/usb-Generic_Flash_Disk_61BCDDB6-0:0-part1",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.2:1.0-scsi-0:0:0:0-part1",
|
||||
b"/dev/disk/by-uuid/2802-1EDE",
|
||||
b"/dev/disk/by-id/usb-Generic_Flash_Disk_61BCDDB6-0:0-part1\x00",
|
||||
b"/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.2:1.0-scsi-0:0:0:0-part1\x00",
|
||||
b"/dev/disk/by-uuid/2802-1EDE\x00",
|
||||
],
|
||||
DeviceNumber=2065,
|
||||
Id="by-uuid-2802-1EDE",
|
||||
|
@ -54,7 +54,7 @@ FIXTURES: dict[str, FilesystemFixture] = {
|
||||
MountPoints=[], Size=250058113024
|
||||
),
|
||||
"/org/freedesktop/UDisks2/block_devices/sdb1": FilesystemFixture(
|
||||
MountPoints=[b"/mnt/data/supervisor/media/ext"], Size=67108864
|
||||
MountPoints=[b"/mnt/data/supervisor/media/ext\x00"], Size=67108864
|
||||
),
|
||||
"/org/freedesktop/UDisks2/block_devices/zram1": FilesystemFixture(
|
||||
MountPoints=[b"/var"], Size=0
|
||||
|
Loading…
x
Reference in New Issue
Block a user