From 181803af54c29e63a92002e9842333c85f900798 Mon Sep 17 00:00:00 2001 From: Jonathan Flat <50605158+jrflat@users.noreply.github.com> Date: Thu, 1 Aug 2024 21:03:00 -0700 Subject: [PATCH] Prevent null character in Windows home directory (#808) --- Sources/FoundationEssentials/String/String+Path.swift | 4 ++-- Sources/FoundationEssentials/URL/URL.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/FoundationEssentials/String/String+Path.swift b/Sources/FoundationEssentials/String/String+Path.swift index 79bcbfa76..b51625ee5 100644 --- a/Sources/FoundationEssentials/String/String+Path.swift +++ b/Sources/FoundationEssentials/String/String+Path.swift @@ -374,7 +374,7 @@ extension String { guard GetEnvironmentVariableW(pwszVariable, $0.baseAddress, dwLength) == dwLength - 1 else { return nil } - return String(decoding: $0, as: UTF16.self) + return String(decodingCString: $0.baseAddress!, as: UTF16.self) } } } @@ -436,7 +436,7 @@ extension String { guard GetUserProfileDirectoryW(hToken, $0.baseAddress, &dwcchSize) else { fatalError("unable to query user profile directory") } - return String(decoding: $0, as: UTF16.self) + return String(decodingCString: $0.baseAddress!, as: UTF16.self) } #else #if targetEnvironment(simulator) diff --git a/Sources/FoundationEssentials/URL/URL.swift b/Sources/FoundationEssentials/URL/URL.swift index 56a88db60..e83c01ab1 100644 --- a/Sources/FoundationEssentials/URL/URL.swift +++ b/Sources/FoundationEssentials/URL/URL.swift @@ -1324,7 +1324,7 @@ public struct URL: Equatable, Sendable, Hashable { if result.count > 1 && result.utf8.last == UInt8(ascii: "/") { _ = result.popLast() } - let charsToLeaveEncoded = Set([UInt8(ascii: "/")]) + let charsToLeaveEncoded: Set = [._slash, 0] return Parser.percentDecode(result, excluding: charsToLeaveEncoded) ?? "" }