From 5fc64bfa2f90b0cb3c309aefedd56b79992419b9 Mon Sep 17 00:00:00 2001 From: Henrik Husted Jensen Date: Wed, 1 Oct 2014 14:28:49 +0200 Subject: [PATCH] * We may not always be able to access the zrtp secrets (locked filesystem on iOS) --- src/zidCache.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/zidCache.c b/src/zidCache.c index 4743383..750bfeb 100644 --- a/src/zidCache.c +++ b/src/zidCache.c @@ -53,11 +53,20 @@ int bzrtp_getSelfZID(bzrtpContext_t *context, uint8_t selfZID[12]) { } /* load the cache buffer and parse it to an xml doc. TODO: lock it as we may write it */ if (context->zrtpCallbacks.bzrtp_loadCache != NULL) { - uint8_t *cacheStringBuffer; + uint8_t *cacheStringBuffer = NULL; uint32_t cacheStringLength; context->zrtpCallbacks.bzrtp_loadCache(context->channelContext[0]->clientData, &cacheStringBuffer, &cacheStringLength); - context->cacheBuffer = xmlParseDoc(cacheStringBuffer); - free(cacheStringBuffer); + if( cacheStringBuffer ) + { + context->cacheBuffer = xmlParseDoc(cacheStringBuffer); + free(cacheStringBuffer); + } + else + { + /* we are running cacheless, return a random number */ + bzrtpCrypto_getRandom(context->RNGContext, selfZID, 12); + return 0; + } } else { /* we are running cacheless, return a random number */ bzrtpCrypto_getRandom(context->RNGContext, selfZID, 12); -- 1.8.4.2