From: yeji01.kim Date: Thu, 30 Jan 2020 08:32:10 +0000 (+0900) Subject: Fix coverity issue X-Git-Tag: accepted/tizen/6.0/unified/20201030.115225^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_6.0;p=platform%2Fcore%2Fsecurity%2Fode.git Fix coverity issue - add return value check Change-Id: I92a56325afd4ec623c84579d437bd67239677663 Signed-off-by: yeji01.kim --- diff --git a/server/key-manager/key-generator.cpp b/server/key-manager/key-generator.cpp index 2e2abc0..eeb04fc 100644 --- a/server/key-manager/key-generator.cpp +++ b/server/key-manager/key-generator.cpp @@ -64,9 +64,10 @@ BinaryData PBKDF(const BinaryData& pass, { BinaryData ret(resultSize, 0); - ::PKCS5_PBKDF2_HMAC((char *)pass.data(), pass.size(), + if (::PKCS5_PBKDF2_HMAC((char *)pass.data(), pass.size(), salt.data(), salt.size(), iteration, - EVP_sha256(), resultSize, ret.data()); + EVP_sha256(), resultSize, ret.data()) != 1) + throw runtime::Exception("PBKDF failed"); return ret; } @@ -83,13 +84,23 @@ BinaryData AESEncrypt(const BinaryData& in, if (ctx == nullptr) throw runtime::Exception("Failed to allocate memory for chipher context"); - ::EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data()); + if (::EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data()) != 1) { + ::EVP_CIPHER_CTX_free(ctx); + throw runtime::Exception("Failed to initialize AES encryption"); + } ::EVP_CIPHER_CTX_set_padding(ctx, 0); - ::EVP_EncryptUpdate(ctx, ret.data(), &len, in.data(), in.size()); + + if (::EVP_EncryptUpdate(ctx, ret.data(), &len, in.data(), in.size()) != 1) { + ::EVP_CIPHER_CTX_free(ctx); + throw runtime::Exception("Failed to update AES encryption"); + } outLen = len; - ::EVP_EncryptFinal_ex(ctx, &ret[len], &len); + if (::EVP_EncryptFinal_ex(ctx, &ret[len], &len) != 1) { + ::EVP_CIPHER_CTX_free(ctx); + throw runtime::Exception("Failed to finalize AES encryption"); + } outLen += len; ::EVP_CIPHER_CTX_free(ctx); @@ -110,13 +121,23 @@ BinaryData AESDecrypt(const BinaryData& in, if (ctx == nullptr) throw runtime::Exception("Failed to allocate memory for chipher context"); - ::EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data()); + if (::EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data()) != 1) { + ::EVP_CIPHER_CTX_free(ctx); + throw runtime::Exception("Failed to initialize AES decryption"); + } + ::EVP_CIPHER_CTX_set_padding(ctx, 0); - ::EVP_DecryptUpdate(ctx, ret.data(), &len, in.data(), in.size()); + if (::EVP_DecryptUpdate(ctx, ret.data(), &len, in.data(), in.size()) != 1) { + ::EVP_CIPHER_CTX_free(ctx); + throw runtime::Exception("Failed to update AES decryption"); + } len1 = len; - ::EVP_DecryptFinal_ex(ctx, &ret[len], &len); + if (::EVP_DecryptFinal_ex(ctx, &ret[len], &len) != 1) { + ::EVP_CIPHER_CTX_free(ctx); + throw runtime::Exception("Failed to finalize AES decryption"); + } len1 += len; ::EVP_CIPHER_CTX_free(ctx); @@ -129,8 +150,9 @@ BinaryData HMAC(const BinaryData& key, const BinaryData& in) BinaryData ret(256 / 8); unsigned int md_len; - ::HMAC(EVP_sha256(), key.data(), key.size(), in.data(), in.size(), - ret.data(), &md_len); + if (::HMAC(EVP_sha256(), key.data(), key.size(), in.data(), in.size(), + ret.data(), &md_len) == nullptr) + throw runtime::Exception("HMAC failed"); return ret; }