From b201dcb584b430d71ad673893dfb9228b4b8d71f Mon Sep 17 00:00:00 2001
From: Bill King <bill.king@nokia.com>
Date: Thu, 27 May 2010 12:15:53 +0200
Subject: [PATCH] Fix issues in botan shown up by a coverity scan

Reviewed-by: kh
---
 src/libs/3rdparty/botan/src/alloc/mem_pool/mem_pool.cpp | 2 +-
 src/libs/3rdparty/botan/src/pk_pad/emsa2/emsa2.cpp      | 3 ++-
 src/libs/3rdparty/botan/src/rng/randpool/randpool.cpp   | 3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/libs/3rdparty/botan/src/alloc/mem_pool/mem_pool.cpp b/src/libs/3rdparty/botan/src/alloc/mem_pool/mem_pool.cpp
index 38e0c3285ff..a6ebef35fd8 100644
--- a/src/libs/3rdparty/botan/src/alloc/mem_pool/mem_pool.cpp
+++ b/src/libs/3rdparty/botan/src/alloc/mem_pool/mem_pool.cpp
@@ -180,7 +180,7 @@ void Pooling_Allocator::deallocate(void* ptr, u32bit n)
    const u32bit BITMAP_SIZE = Memory_Block::bitmap_size();
    const u32bit BLOCK_SIZE = Memory_Block::block_size();
 
-   if(ptr == 0 && n == 0)
+   if(ptr == 0 || n == 0)
       return;
 
    Mutex_Holder lock(mutex);
diff --git a/src/libs/3rdparty/botan/src/pk_pad/emsa2/emsa2.cpp b/src/libs/3rdparty/botan/src/pk_pad/emsa2/emsa2.cpp
index 168f9209e35..aee323130e8 100644
--- a/src/libs/3rdparty/botan/src/pk_pad/emsa2/emsa2.cpp
+++ b/src/libs/3rdparty/botan/src/pk_pad/emsa2/emsa2.cpp
@@ -103,8 +103,9 @@ EMSA2::EMSA2(HashFunction* hash_in) : hash(hash_in)
 
    if(hash_id == 0)
       {
+      std::string hashname = hash->name();
       delete hash;
-      throw Encoding_Error("EMSA2 cannot be used with " + hash->name());
+      throw Encoding_Error("EMSA2 cannot be used with " + hashname);
       }
    }
 
diff --git a/src/libs/3rdparty/botan/src/rng/randpool/randpool.cpp b/src/libs/3rdparty/botan/src/rng/randpool/randpool.cpp
index 77a5228c663..4d7b92d15b6 100644
--- a/src/libs/3rdparty/botan/src/rng/randpool/randpool.cpp
+++ b/src/libs/3rdparty/botan/src/rng/randpool/randpool.cpp
@@ -186,10 +186,11 @@ Randpool::Randpool(BlockCipher* cipher_in,
       !cipher->valid_keylength(OUTPUT_LENGTH) ||
       !mac->valid_keylength(OUTPUT_LENGTH))
       {
+      std::string ciphername = cipher->name(), macname = mac->name();
       delete cipher;
       delete mac;
       throw Internal_Error("Randpool: Invalid algorithm combination " +
-                           cipher->name() + "/" + mac->name());
+                           ciphername + "/" + macname);
       }
 
    buffer.create(BLOCK_SIZE);
-- 
GitLab