Skip to content

Commit dbd8227

Browse files
committed
Fix memory leak
1 parent 6cb1625 commit dbd8227

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

CatCrypto/CatArgon2Crypto.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ public class CatArgon2Crypto: CatUnsymmetricCrypto {
2323
}
2424

2525
override public func hash(password: String, completeHandler: ((CatCryptoHashResult) -> Void)?) {
26-
let pwd = UnsafeRawPointer(strdup(NSString(string: password).utf8String))
26+
let pwdutf8 = strdup(NSString(string: password).utf8String)
27+
let pwd = UnsafeRawPointer(pwdutf8)
2728
let pwdlen = strlen(NSString(string: password).utf8String)
28-
let salt = UnsafeRawPointer(strdup(NSString(string: context.salt).utf8String))
29+
let saltutf8 = strdup(NSString(string: context.salt).utf8String)
30+
let salt = UnsafeRawPointer(saltutf8)
2931
let saltlen = strlen(NSString(string: context.salt).utf8String)
3032
let encodedlen = argon2_encodedlen(UInt32(context.iterations),
3133
UInt32(context.memory),
@@ -85,10 +87,15 @@ public class CatArgon2Crypto: CatUnsymmetricCrypto {
8587
completeHandler!(cryptoResult)
8688
}
8789
}
90+
91+
free(pwdutf8)
92+
free(saltutf8)
93+
encoded.deallocate(capacity: encodedlen)
8894
}
8995

9096
override public func verify(hash: String, password: String, completeHandler: ((CatCryptoVerifyResult) -> Void)?) {
91-
let pwd = UnsafeRawPointer(strdup(NSString(string: password).utf8String))
97+
let pwdutf8 = strdup(NSString(string: password).utf8String)
98+
let pwd = UnsafeRawPointer(pwdutf8)
9299
let pwdlen = strlen(NSString(string: password).utf8String)
93100
let encoded = strdup(NSString(string: hash).utf8String)
94101
var resultCode: Int32
@@ -114,5 +121,8 @@ public class CatArgon2Crypto: CatUnsymmetricCrypto {
114121
completeHandler!(cryptoResult)
115122
}
116123
}
124+
125+
free(pwdutf8)
126+
free(encoded)
117127
}
118128
}

0 commit comments

Comments
 (0)