@@ -23,9 +23,11 @@ public class CatArgon2Crypto: CatUnsymmetricCrypto {
23
23
}
24
24
25
25
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)
27
28
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)
29
31
let saltlen = strlen ( NSString ( string: context. salt) . utf8String)
30
32
let encodedlen = argon2_encodedlen ( UInt32 ( context. iterations) ,
31
33
UInt32 ( context. memory) ,
@@ -85,10 +87,15 @@ public class CatArgon2Crypto: CatUnsymmetricCrypto {
85
87
completeHandler!( cryptoResult)
86
88
}
87
89
}
90
+
91
+ free ( pwdutf8)
92
+ free ( saltutf8)
93
+ encoded. deallocate ( capacity: encodedlen)
88
94
}
89
95
90
96
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)
92
99
let pwdlen = strlen ( NSString ( string: password) . utf8String)
93
100
let encoded = strdup ( NSString ( string: hash) . utf8String)
94
101
var resultCode : Int32
@@ -114,5 +121,8 @@ public class CatArgon2Crypto: CatUnsymmetricCrypto {
114
121
completeHandler!( cryptoResult)
115
122
}
116
123
}
124
+
125
+ free ( pwdutf8)
126
+ free ( encoded)
117
127
}
118
128
}
0 commit comments