taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 2208c29f1a731d65d5da76ede258c5ffbd5f9aa4
parent cca98ab52cc17281ed8eaffaf2258ddfff14ec3d
Author: Marc Stibane <marc@taler.net>
Date:   Mon, 29 Jun 2026 10:07:31 +0200

clamp init and append

Diffstat:
MTalerWallet1/Helper/Data+fromUInt8Array.swift | 21+++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/TalerWallet1/Helper/Data+fromUInt8Array.swift b/TalerWallet1/Helper/Data+fromUInt8Array.swift @@ -23,15 +23,20 @@ extension Data { return self.map { String(format: format, $0) }.joined() } - mutating func append(data: Data, offset: Int, size: Int) { - let start = data.startIndex + offset - let end = start + size - self.append(data[start..<end]) + static func clampedData(_ data: Data, offset: UInt, size: UInt) -> Data { + let endIndex = UInt(data.endIndex) + let start = UInt(data.startIndex) + offset + let start2 = Swift.min(start, endIndex-1) + let end = start2 + size + let end2 = Swift.min(end, endIndex) + return data[start2..<end2] } - init(fromData data: Data, offset: Int, size: Int) { - let start = data.startIndex + offset - let end = start + size - self.init(data[start..<end]) + mutating func append(data: Data, offset: UInt, size: UInt) { + self.append(Data.clampedData(data, offset: offset, size: size)) + } + + init(fromData data: Data, offset: UInt, size: UInt) { + self.init(Data.clampedData(data, offset: offset, size: size)) } }