IOSAD-92 treat decrypt_message()'s keylist is inout for extraKeys

IOS-1270_CRASHING_TEST
Dirk Zimmermann 5 years ago
parent e0cbda92c8
commit e67470dae6

@ -119,20 +119,24 @@ void decryptMessageDictFree(message *src, message *dst, stringlist_t *extraKeys)
message *_src = PEP_messageDictToStruct(messageDict);
message *_dst = NULL;
stringlist_t *_keys = NULL;
stringlist_t *theKeys = NULL;
PEP_decrypt_flags theFlags = 0;
if (flags) {
theFlags = *flags;
}
if (extraKeys && [*extraKeys count]) {
theKeys = PEP_arrayToStringlist(*extraKeys);
}
PEP_rating internalRating = PEP_rating_undefined;
[self lockWrite];
PEP_STATUS theStatus = decrypt_message(_session,
_src,
&_dst,
&_keys,
&theKeys,
&internalRating,
&theFlags);
[self unlockWrite];
@ -142,7 +146,7 @@ void decryptMessageDictFree(message *src, message *dst, stringlist_t *extraKeys)
}
if ([NSError setError:error fromPEPStatus:theStatus]) {
decryptMessageDictFree(_src, _dst, _keys);
decryptMessageDictFree(_src, _dst, theKeys);
return nil;
}
@ -158,21 +162,16 @@ void decryptMessageDictFree(message *src, message *dst, stringlist_t *extraKeys)
dst_ = PEP_messageDictFromStruct(_src);
}
NSArray *keys_ = nil;
if (_keys) {
keys_ = PEP_arrayFromStringlist(_keys);
}
if (theFlags & PEP_decrypt_flag_untrusted_server) {
[messageDict replaceWithMessage:_src];
}
decryptMessageDictFree(_src, _dst, _keys);
if (extraKeys) {
*extraKeys = keys_;
*extraKeys = PEP_arrayFromStringlist(theKeys);
}
decryptMessageDictFree(_src, _dst, theKeys);
if (rating) {
*rating = internalRating;
}

Loading…
Cancel
Save