Skip to content

Commit 92bbdd1

Browse files
authored
Merge pull request #2008 from compnerd/security-through-obscurity
2 parents 93180b8 + e53af5a commit 92bbdd1

File tree

3 files changed

+41
-48
lines changed

3 files changed

+41
-48
lines changed

TestFoundation/TestFileHandle.swift

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -301,38 +301,41 @@ class TestFileHandle : XCTestCase {
301301
}
302302

303303
func test_truncateFile() {
304-
mkstemp(template: "test_truncateFile.XXXXXX") { (fh) in
305-
fh.truncateFile(atOffset: 50)
306-
XCTAssertEqual(fh.offsetInFile, 50)
304+
let url: URL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(ProcessInfo.processInfo.globallyUniqueString, isDirectory: false)
305+
_ = FileManager.default.createFile(atPath: url.path, contents: Data())
307306

308-
fh.truncateFile(atOffset: 0)
309-
XCTAssertEqual(fh.offsetInFile, 0)
307+
let fh: FileHandle = FileHandle(forUpdatingAtPath: url.path)!
310308

311-
fh.truncateFile(atOffset: 100)
312-
XCTAssertEqual(fh.offsetInFile, 100)
309+
fh.truncateFile(atOffset: 50)
310+
XCTAssertEqual(fh.offsetInFile, 50)
313311

314-
fh.write(Data([1, 2]))
315-
XCTAssertEqual(fh.offsetInFile, 102)
312+
fh.truncateFile(atOffset: 0)
313+
XCTAssertEqual(fh.offsetInFile, 0)
316314

317-
fh.seek(toFileOffset: 4)
318-
XCTAssertEqual(fh.offsetInFile, 4)
315+
fh.truncateFile(atOffset: 100)
316+
XCTAssertEqual(fh.offsetInFile, 100)
319317

320-
(0..<20).forEach { fh.write(Data([$0])) }
321-
XCTAssertEqual(fh.offsetInFile, 24)
318+
fh.write(Data([1, 2]))
319+
XCTAssertEqual(fh.offsetInFile, 102)
322320

323-
fh.seekToEndOfFile()
324-
XCTAssertEqual(fh.offsetInFile, 102)
321+
fh.seek(toFileOffset: 4)
322+
XCTAssertEqual(fh.offsetInFile, 4)
325323

326-
fh.truncateFile(atOffset: 10)
327-
XCTAssertEqual(fh.offsetInFile, 10)
324+
(0..<20).forEach { fh.write(Data([$0])) }
325+
XCTAssertEqual(fh.offsetInFile, 24)
328326

329-
fh.seek(toFileOffset: 0)
330-
XCTAssertEqual(fh.offsetInFile, 0)
327+
fh.seekToEndOfFile()
328+
XCTAssertEqual(fh.offsetInFile, 102)
331329

332-
let data = fh.readDataToEndOfFile()
333-
XCTAssertEqual(data.count, 10)
334-
XCTAssertEqual(data, Data([0, 0, 0, 0, 0, 1, 2, 3, 4, 5]))
335-
}
330+
fh.truncateFile(atOffset: 10)
331+
XCTAssertEqual(fh.offsetInFile, 10)
332+
333+
fh.seek(toFileOffset: 0)
334+
XCTAssertEqual(fh.offsetInFile, 0)
335+
336+
let data = fh.readDataToEndOfFile()
337+
XCTAssertEqual(data.count, 10)
338+
XCTAssertEqual(data, Data([0, 0, 0, 0, 0, 1, 2, 3, 4, 5]))
336339
}
337340

338341
func test_readabilityHandlerCloseFileRace() throws {

TestFoundation/TestProcess.swift

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -231,21 +231,24 @@ class TestProcess : XCTestCase {
231231
process.launchPath = "/usr/bin/which"
232232
process.arguments = ["which"]
233233

234-
mkstemp(template: "TestProcess.XXXXXX") { handle in
235-
process.standardOutput = handle
234+
let url: URL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(ProcessInfo.processInfo.globallyUniqueString, isDirectory: false)
235+
_ = FileManager.default.createFile(atPath: url.path, contents: Data())
236236

237-
process.launch()
238-
process.waitUntilExit()
239-
XCTAssertEqual(process.terminationStatus, 0)
237+
let handle: FileHandle = FileHandle(forUpdatingAtPath: url.path)!
240238

241-
handle.seek(toFileOffset: 0)
242-
let data = handle.readDataToEndOfFile()
243-
guard let string = String(data: data, encoding: .ascii) else {
244-
XCTFail("Could not read stdout")
245-
return
246-
}
247-
XCTAssertTrue(string.hasSuffix("/which\n"))
239+
process.standardOutput = handle
240+
241+
process.launch()
242+
process.waitUntilExit()
243+
XCTAssertEqual(process.terminationStatus, 0)
244+
245+
handle.seek(toFileOffset: 0)
246+
let data = handle.readDataToEndOfFile()
247+
guard let string = String(data: data, encoding: .ascii) else {
248+
XCTFail("Could not read stdout")
249+
return
248250
}
251+
XCTAssertTrue(string.hasSuffix("/which\n"))
249252
}
250253

251254
func test_passthrough_environment() {

TestFoundation/TestUtils.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,3 @@ func ensureFiles(_ fileNames: [String]) -> Bool {
4242
}
4343
return result
4444
}
45-
46-
func mkstemp(template: String, body: (FileHandle) throws -> Void) rethrows {
47-
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(template)
48-
49-
try url.withUnsafeFileSystemRepresentation {
50-
switch mkstemp(UnsafeMutablePointer(mutating: $0!)) {
51-
case -1: XCTFail("Could not create temporary file")
52-
case let fd:
53-
defer { url.withUnsafeFileSystemRepresentation { _ = unlink($0!) } }
54-
try body(FileHandle(fileDescriptor: fd, closeOnDealloc: true))
55-
}
56-
}
57-
}

0 commit comments

Comments
 (0)