From 1b38ee8b46fbf9a5b263f6f0ede12f2fba1145d2 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 20 Dec 2025 01:48:10 +0100 Subject: [PATCH] fix: harden device model decoding --- apps/ios/Sources/Bridge/BridgeConnectionController.swift | 5 +++-- apps/ios/Sources/Settings/SettingsTab.swift | 5 +++-- apps/macos/Sources/Clawdis/InstanceIdentity.swift | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/ios/Sources/Bridge/BridgeConnectionController.swift b/apps/ios/Sources/Bridge/BridgeConnectionController.swift index f6de737f0..f3623e379 100644 --- a/apps/ios/Sources/Bridge/BridgeConnectionController.swift +++ b/apps/ios/Sources/Bridge/BridgeConnectionController.swift @@ -221,9 +221,10 @@ final class BridgeConnectionController { var systemInfo = utsname() uname(&systemInfo) let machine = withUnsafeBytes(of: &systemInfo.machine) { ptr in - String(decoding: ptr.prefix { $0 != 0 }, as: UTF8.self) + String(bytes: ptr.prefix { $0 != 0 }, encoding: .utf8) } - return machine.isEmpty ? "unknown" : machine + let trimmed = machine?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + return trimmed.isEmpty ? "unknown" : trimmed } private func appVersion() -> String { diff --git a/apps/ios/Sources/Settings/SettingsTab.swift b/apps/ios/Sources/Settings/SettingsTab.swift index c3ed69afe..5707d211d 100644 --- a/apps/ios/Sources/Settings/SettingsTab.swift +++ b/apps/ios/Sources/Settings/SettingsTab.swift @@ -277,9 +277,10 @@ struct SettingsTab: View { var systemInfo = utsname() uname(&systemInfo) let machine = withUnsafeBytes(of: &systemInfo.machine) { ptr in - String(decoding: ptr.prefix { $0 != 0 }, as: UTF8.self) + String(bytes: ptr.prefix { $0 != 0 }, encoding: .utf8) } - return machine.isEmpty ? "unknown" : machine + let trimmed = machine?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + return trimmed.isEmpty ? "unknown" : trimmed } private func currentCaps() -> [String] { diff --git a/apps/macos/Sources/Clawdis/InstanceIdentity.swift b/apps/macos/Sources/Clawdis/InstanceIdentity.swift index 58357854e..de61a1057 100644 --- a/apps/macos/Sources/Clawdis/InstanceIdentity.swift +++ b/apps/macos/Sources/Clawdis/InstanceIdentity.swift @@ -40,7 +40,8 @@ enum InstanceIdentity { guard sysctlbyname("hw.model", &buffer, &size, nil, 0) == 0 else { return nil } let bytes = buffer.prefix { $0 != 0 }.map { UInt8(bitPattern: $0) } - let s = String(decoding: bytes, as: UTF8.self).trimmingCharacters(in: .whitespacesAndNewlines) - return s.isEmpty ? nil : s + guard let raw = String(bytes: bytes, encoding: .utf8) else { return nil } + let trimmed = raw.trimmingCharacters(in: .whitespacesAndNewlines) + return trimmed.isEmpty ? nil : trimmed }() }