diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index f5ae2086c..584e374e5 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -407,7 +407,7 @@ private class SignalCallData: NSObject { throw CallError.obsoleteCall(description: "Missing peerConnectionClient") } - Logger.info("session description for outgoing call: \(call.identifiersForLogs), sdp: \(sessionDescription.sdp).") + Logger.info("session description for outgoing call: \(call.identifiersForLogs), sdp: \(sessionDescription.logSafeDescription).") return peerConnectionClient.setLocalSessionDescription(sessionDescription).then { do { @@ -714,7 +714,7 @@ private class SignalCallData: NSObject { throw CallError.obsoleteCall(description: "negotiateSessionDescription() response for obsolete call") } - Logger.info("session description for incoming call: \(newCall.identifiersForLogs), sdp: \(negotiatedSessionDescription.sdp).") + Logger.info("session description for incoming call: \(newCall.identifiersForLogs), sdp: \(negotiatedSessionDescription.logSafeDescription).") do { let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder(id: newCall.signalingId, diff --git a/Signal/src/call/PeerConnectionClient.swift b/Signal/src/call/PeerConnectionClient.swift index 3c13e9cfc..a31b8850c 100644 --- a/Signal/src/call/PeerConnectionClient.swift +++ b/Signal/src/call/PeerConnectionClient.swift @@ -1109,6 +1109,21 @@ class HardenedRTCSessionDescription { return RTCSessionDescription.init(type: rtcSessionDescription.type, sdp: description) } + + var logSafeDescription: String { + var text = sdp + text = text.replacingOccurrences(of: "\r", with: "\n") + text = text.replacingOccurrences(of: "\n\n", with: "\n") + let lines = text.components(separatedBy: "\n") + let filteredLines: [String] = lines.map { line in + guard !line.contains("ice-pwd") else { + return "[ REDACTED ice-pwd ]" + } + return line + } + let filteredText = filteredLines.joined(separator: "\n") + return filteredText + } } protocol VideoCaptureSettingsDelegate: class {