FYI... We figured out how to get Windows scans from the command line using nmake.
75 or so of the findings were for memory leaks on Integer::One() and Integer::Zero(). At least three are for Microsoft STL code. I'm pretty sure OS X self-scan tools are broken. I have not been able to get them to work on three different Macs. Jeff ---------- Forwarded message ---------- From: <[email protected]> Date: Thu, Sep 29, 2016 at 2:49 AM Subject: New Defects reported by Coverity Scan for Cryptopp To: [email protected] Hi, Please find the latest report on new defect(s) introduced to Cryptopp found with Coverity Scan. 89 new defect(s) introduced to Cryptopp found with Coverity Scan. 3 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 20 of 89 defect(s) ** CID 171280: Resource leaks (RESOURCE_LEAK) /pubkey.cpp: 106 in CryptoPP::TF_VerifierBase::InputSignature(CryptoPP::PK_MessageAccumulator &, const unsigned char *, unsigned int) const() ________________________________________________________________________________________________________ *** CID 171280: Resource leaks (RESOURCE_LEAK) /pubkey.cpp: 106 in CryptoPP::TF_VerifierBase::InputSignature(CryptoPP::PK_MessageAccumulator &, const unsigned char *, unsigned int) const() 100 if (MessageRepresentativeBitLength() < encoding.MinRepresentativeBitLength(id.second, ma.AccessHash().DigestSize())) 101 throw PK_SignatureScheme::KeyTooShort(); 102 103 ma.m_representative.New(MessageRepresentativeLength()); 104 Integer x = GetTrapdoorFunctionInterface().ApplyFunction(Integer(signature, signatureLength)); 105 if (x.BitCount() > MessageRepresentativeBitLength()) >>> CID 171280: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 106 x = Integer::Zero(); // don't return false here to prevent timing attack 107 x.Encode(ma.m_representative, ma.m_representative.size()); 108 } 109 110 bool TF_VerifierBase::VerifyAndRestart(PK_MessageAccumulator &messageAccumulator) const 111 { ** CID 171279: (RESOURCE_LEAK) /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_GFP>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_LUC>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_GFP_DefaultSafePrime>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_LUC_DefaultSafePrime>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP>>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_EC<CryptoPP::EC2N>>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_DSA>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() ________________________________________________________________________________________________________ *** CID 171279: (RESOURCE_LEAK) /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_GFP>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_LUC>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_GFP_DefaultSafePrime>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_LUC_DefaultSafePrime>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP>>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_EC<CryptoPP::EC2N>>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 /pubkey.h: 1181 in CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_DSA>::GenerateRandom(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 1175 1176 void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) 1177 { 1178 if (!params.GetThisObject(this->AccessGroupParameters())) 1179 this->AccessGroupParameters().GenerateRandom(rng, params); 1180 // std::pair<const byte *, int> seed; >>> CID 171279: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1181 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1182 // Integer::ANY, Integer::Zero(), Integer::One(), 1183 // params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL); 1184 SetPrivateExponent(x); 1185 } 1186 ** CID 171278: (RESOURCE_LEAK) /integer.cpp: 3509 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /integer.cpp: 3522 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /integer.cpp: 3560 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() ________________________________________________________________________________________________________ *** CID 171278: (RESOURCE_LEAK) /integer.cpp: 3509 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 3503 word32 m_counter; 3504 SecByteBlock m_counterAndSeed; 3505 }; 3506 3507 bool Integer::GenerateRandomNoThrow(RandomNumberGenerator &i_rng, const NameValuePairs ¶ms) 3508 { >>> CID 171278: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 3509 Integer min = params.GetValueWithDefault("Min", Integer::Zero()); 3510 Integer max; 3511 if (!params.GetValue("Max", max)) 3512 { 3513 int bitLength; 3514 if (params.GetIntValue("BitLength", bitLength)) /integer.cpp: 3522 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 3516 else 3517 throw InvalidArgument("Integer: missing Max argument"); 3518 } 3519 if (min > max) 3520 throw InvalidArgument("Integer: Min must be no greater than Max"); 3521 >>> CID 171278: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 3522 Integer equiv = params.GetValueWithDefault("EquivalentTo", Integer::Zero()); 3523 Integer mod = params.GetValueWithDefault("Mod", Integer::One()); 3524 3525 if (equiv.IsNegative() || equiv >= mod) 3526 throw InvalidArgument("Integer: invalid EquivalentTo and/or Mod argument"); 3527 /integer.cpp: 3560 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 3554 Randomize(rng, min, max); 3555 else 3556 { 3557 Integer min1 = min + (equiv-min)%mod; 3558 if (max < min1) 3559 return false; >>> CID 171278: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 3560 Randomize(rng, Zero(), (max - min1) / mod); 3561 *this *= mod; 3562 *this += min1; 3563 } 3564 return true; 3565 ** CID 171277: Resource leaks (RESOURCE_LEAK) /integer.cpp: 3727 in CryptoPP::Integer::operator --()() ________________________________________________________________________________________________________ *** CID 171277: Resource leaks (RESOURCE_LEAK) /integer.cpp: 3727 in CryptoPP::Integer::operator --()() 3721 reg[reg.size()/2]=1; 3722 } 3723 } 3724 else 3725 { 3726 if (Decrement(reg, reg.size())) >>> CID 171277: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 3727 *this = -One(); 3728 } 3729 return *this; 3730 } 3731 3732 void PositiveAdd(Integer &sum, const Integer &a, const Integer& b) ** CID 171276: Resource leaks (RESOURCE_LEAK) /pubkey.h: 1916 in CryptoPP::DL_SimpleKeyAgreementDomainBase<CryptoPP::Integer>::GeneratePrivateKey(CryptoPP::RandomNumberGenerator &, unsigned char *) const() ________________________________________________________________________________________________________ *** CID 171276: Resource leaks (RESOURCE_LEAK) /pubkey.h: 1916 in CryptoPP::DL_SimpleKeyAgreementDomainBase<CryptoPP::Integer>::GeneratePrivateKey(CryptoPP::RandomNumberGenerator &, unsigned char *) const() 1910 unsigned int AgreedValueLength() const {return GetAbstractGroupParameters().GetEncodedElementSize(false);} 1911 unsigned int PrivateKeyLength() const {return GetAbstractGroupParameters().GetSubgroupOrder().ByteCount();} 1912 unsigned int PublicKeyLength() const {return GetAbstractGroupParameters().GetEncodedElementSize(true);} 1913 1914 void GeneratePrivateKey(RandomNumberGenerator &rng, byte *privateKey) const 1915 { >>> CID 171276: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 1916 Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent()); 1917 x.Encode(privateKey, PrivateKeyLength()); 1918 } 1919 1920 void GeneratePublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const 1921 { ** CID 171275: Low impact quality (MISSING_MOVE_ASSIGNMENT) /ec2n.h: 22 in () ________________________________________________________________________________________________________ *** CID 171275: Low impact quality (MISSING_MOVE_ASSIGNMENT) /ec2n.h: 22 in () 16 #include "smartptr.h" 17 #include "pubkey.h" 18 19 NAMESPACE_BEGIN(CryptoPP) 20 21 //! Elliptic Curve Point >>> CID 171275: Low impact quality (MISSING_MOVE_ASSIGNMENT) >>> Class "CryptoPP::EC2NPoint" may benefit from adding a move assignment >>> operator. See other events which show the copy assignment operator being >>> applied to rvalue(s), where a move assignment may be faster. 22 struct CRYPTOPP_DLL EC2NPoint 23 { 24 EC2NPoint() : identity(true) {} 25 EC2NPoint(const PolynomialMod2 &x, const PolynomialMod2 &y) 26 : identity(false), x(x), y(y) {} 27 ** CID 171274: Resource leaks (RESOURCE_LEAK) /esign.cpp: 63 in CryptoPP::ESIGNFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() ________________________________________________________________________________________________________ *** CID 171274: Resource leaks (RESOURCE_LEAK) /esign.cpp: 63 in CryptoPP::ESIGNFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() 57 } 58 59 bool ESIGNFunction::Validate(RandomNumberGenerator& rng, unsigned int level) const 60 { 61 CRYPTOPP_UNUSED(rng), CRYPTOPP_UNUSED(level); 62 bool pass = true; >>> CID 171274: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 63 pass = pass && m_n > Integer::One() && m_n.IsOdd(); 64 pass = pass && m_e >= 8 && m_e < m_n; 65 return pass; 66 } 67 68 bool ESIGNFunction::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const ** CID 171273: Resource leaks (RESOURCE_LEAK) /rw.cpp: 77 in CryptoPP::RWFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() ________________________________________________________________________________________________________ *** CID 171273: Resource leaks (RESOURCE_LEAK) /rw.cpp: 77 in CryptoPP::RWFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() 71 } 72 73 bool RWFunction::Validate(RandomNumberGenerator &rng, unsigned int level) const 74 { 75 CRYPTOPP_UNUSED(rng), CRYPTOPP_UNUSED(level); 76 bool pass = true; >>> CID 171273: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 77 pass = pass && m_n > Integer::One() && m_n%8 == 5; 78 return pass; 79 } 80 81 bool RWFunction::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const 82 { ** CID 171272: (RESOURCE_LEAK) /integer.cpp: 3523 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() /integer.cpp: 3553 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() ________________________________________________________________________________________________________ *** CID 171272: (RESOURCE_LEAK) /integer.cpp: 3523 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 3517 throw InvalidArgument("Integer: missing Max argument"); 3518 } 3519 if (min > max) 3520 throw InvalidArgument("Integer: Min must be no greater than Max"); 3521 3522 Integer equiv = params.GetValueWithDefault("EquivalentTo", Integer::Zero()); >>> CID 171272: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 3523 Integer mod = params.GetValueWithDefault("Mod", Integer::One()); 3524 3525 if (equiv.IsNegative() || equiv >= mod) 3526 throw InvalidArgument("Integer: invalid EquivalentTo and/or Mod argument"); 3527 3528 Integer::RandomNumberType rnType = params.GetValueWithDefault("RandomNumberType", Integer::ANY); /integer.cpp: 3553 in CryptoPP::Integer::GenerateRandomNoThrow(CryptoPP::RandomNumberGenerator &, const CryptoPP::NameValuePairs &)() 3547 } 3548 RandomNumberGenerator &rng = kdf2Rng.get() ? (RandomNumberGenerator &)*kdf2Rng : i_rng; 3549 3550 switch (rnType) 3551 { 3552 case ANY: >>> CID 171272: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 3553 if (mod == One()) 3554 Randomize(rng, min, max); 3555 else 3556 { 3557 Integer min1 = min + (equiv-min)%mod; 3558 if (max < min1) ** CID 171271: (RESOURCE_LEAK) /nbtheory.cpp: 542 in CryptoPP::MaurerProvablePrime(CryptoPP::RandomNumberGenerator &, unsigned int)() /nbtheory.cpp: 546 in CryptoPP::MaurerProvablePrime(CryptoPP::RandomNumberGenerator &, unsigned int)() ________________________________________________________________________________________________________ *** CID 171271: (RESOURCE_LEAK) /nbtheory.cpp: 542 in CryptoPP::MaurerProvablePrime(CryptoPP::RandomNumberGenerator &, unsigned int)() 536 Integer I = Integer::Power2(bits-2)/q; 537 Integer I2 = I << 1; 538 unsigned int trialDivisorBound = (unsigned int)STDMIN((unsigned long)primeTable[primeTableSize-1], (unsigned long)bits*bits/c_opt); 539 bool success = false; 540 while (!success) 541 { >>> CID 171271: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 542 p.Randomize(rng, I, I2, Integer::ANY); 543 p *= q; p <<= 1; ++p; 544 if (!TrialDivision(p, trialDivisorBound)) 545 { 546 a.Randomize(rng, 2, p-1, Integer::ANY); 547 b = a_exp_b_mod_c(a, (p-1)/q, p); /nbtheory.cpp: 546 in CryptoPP::MaurerProvablePrime(CryptoPP::RandomNumberGenerator &, unsigned int)() 540 while (!success) 541 { 542 p.Randomize(rng, I, I2, Integer::ANY); 543 p *= q; p <<= 1; ++p; 544 if (!TrialDivision(p, trialDivisorBound)) 545 { >>> CID 171271: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 546 a.Randomize(rng, 2, p-1, Integer::ANY); 547 b = a_exp_b_mod_c(a, (p-1)/q, p); 548 success = (GCD(b-1, p) == 1) && (a_exp_b_mod_c(b, q, p) == 1); 549 } 550 } 551 } ** CID 171270: Resource leaks (RESOURCE_LEAK) /integer.cpp: 4241 in CryptoPP::Integer::InverseMod(const CryptoPP::Integer&) const() ________________________________________________________________________________________________________ *** CID 171270: Resource leaks (RESOURCE_LEAK) /integer.cpp: 4241 in CryptoPP::Integer::InverseMod(const CryptoPP::Integer&) const() 4235 return Modulo(m).InverseMod(m); 4236 4237 if (m.IsEven()) 4238 { 4239 if (!m || IsEven()) 4240 return Zero(); // no inverse >>> CID 171270: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 4241 if (*this == One()) 4242 return One(); 4243 4244 Integer u = m.Modulo(*this).InverseMod(*this); 4245 return !u ? Zero() : (m*(*this-u)+1)/(*this); 4246 } ** CID 171269: Resource leaks (RESOURCE_LEAK) /rw.cpp: 68 in CryptoPP::RWFunction::ApplyFunction(const CryptoPP::Integer &) const() ________________________________________________________________________________________________________ *** CID 171269: Resource leaks (RESOURCE_LEAK) /rw.cpp: 68 in CryptoPP::RWFunction::ApplyFunction(const CryptoPP::Integer &) const() 62 case r4+8: 63 out.Negate(); 64 out += m_n; 65 out <<= 1; 66 break; 67 default: >>> CID 171269: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 68 out = Integer::Zero(); 69 } 70 return out; 71 } 72 73 bool RWFunction::Validate(RandomNumberGenerator &rng, unsigned int level) const ** CID 171268: Low impact quality (MISSING_MOVE_ASSIGNMENT) /pubkey.h: 572 in () ________________________________________________________________________________________________________ *** CID 171268: Low impact quality (MISSING_MOVE_ASSIGNMENT) /pubkey.h: 572 in () 566 { 567 typedef T4 HashFunction; 568 }; 569 570 //! _ 571 template <class BASE, class SCHEME_OPTIONS, class KEY_CLASS> >>> CID 171268: Low impact quality (MISSING_MOVE_ASSIGNMENT) >>> Class "CryptoPP::TF_ObjectImplBase<CryptoPP::TF_VerifierBase, >>> CryptoPP::TF_SignatureSchemeOptions<CryptoPP::TF_SS<CryptoPP::P1363_EMSA5, >>> CryptoPP::SHA1, CryptoPP::ESIGN_Keys, int>, CryptoPP::ESIGN_Keys, >>> CryptoPP::EMSA5Pad<CryptoPP::P1363_MGF1>, CryptoPP::SHA1>, >>> CryptoPP::ESIGNFunction>" may benefit from adding a move assignment >>> operator. See other events which show the copy assignment operator being >>> applied to rvalue(s), where a move assignment may be faster. 572 class CRYPTOPP_NO_VTABLE TF_ObjectImplBase : public AlgorithmImpl<BASE, typename SCHEME_OPTIONS::AlgorithmInfo> 573 { 574 public: 575 typedef SCHEME_OPTIONS SchemeOptions; 576 typedef KEY_CLASS KeyClass; 577 ** CID 171267: (RESOURCE_LEAK) /luc.cpp: 76 in CryptoPP::LUCFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() /luc.cpp: 77 in CryptoPP::LUCFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() ________________________________________________________________________________________________________ *** CID 171267: (RESOURCE_LEAK) /luc.cpp: 76 in CryptoPP::LUCFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() 70 } 71 72 bool LUCFunction::Validate(RandomNumberGenerator &rng, unsigned int level) const 73 { 74 CRYPTOPP_UNUSED(rng), CRYPTOPP_UNUSED(level); 75 bool pass = true; >>> CID 171267: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 76 pass = pass && m_n > Integer::One() && m_n.IsOdd(); 77 pass = pass && m_e > Integer::One() && m_e.IsOdd() && m_e < m_n; 78 return pass; 79 } 80 81 bool LUCFunction::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const /luc.cpp: 77 in CryptoPP::LUCFunction::Validate(CryptoPP::RandomNumberGenerator &, unsigned int) const() 71 72 bool LUCFunction::Validate(RandomNumberGenerator &rng, unsigned int level) const 73 { 74 CRYPTOPP_UNUSED(rng), CRYPTOPP_UNUSED(level); 75 bool pass = true; 76 pass = pass && m_n > Integer::One() && m_n.IsOdd(); >>> CID 171267: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 77 pass = pass && m_e > Integer::One() && m_e.IsOdd() && m_e < m_n; 78 return pass; 79 } 80 81 bool LUCFunction::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const 82 { ** CID 171266: Resource leaks (RESOURCE_LEAK) /gfpcrypt.cpp: 138 in CryptoPP::DL_GroupParameters_IntegerBased::ValidateGroup(CryptoPP::RandomNumberGenerator &, unsigned int) const() ________________________________________________________________________________________________________ *** CID 171266: Resource leaks (RESOURCE_LEAK) /gfpcrypt.cpp: 138 in CryptoPP::DL_GroupParameters_IntegerBased::ValidateGroup(CryptoPP::RandomNumberGenerator &, unsigned int) const() 132 133 bool pass = true; 134 pass = pass && p > Integer::One() && p.IsOdd(); 135 pass = pass && q > Integer::One() && q.IsOdd(); 136 137 if (level >= 1) >>> CID 171266: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 138 pass = pass && GetCofactor() > Integer::One() && GetGroupOrder() % q == Integer::Zero(); 139 if (level >= 2) 140 pass = pass && VerifyPrime(rng, q, level-2) && VerifyPrime(rng, p, level-2); 141 142 return pass; 143 } ** CID 171265: Low impact quality (MISSING_MOVE_ASSIGNMENT) /ecp.h: 20 in () ________________________________________________________________________________________________________ *** CID 171265: Low impact quality (MISSING_MOVE_ASSIGNMENT) /ecp.h: 20 in () 14 #include "smartptr.h" 15 #include "pubkey.h" 16 17 NAMESPACE_BEGIN(CryptoPP) 18 19 //! Elliptical Curve Point >>> CID 171265: Low impact quality (MISSING_MOVE_ASSIGNMENT) >>> Class "CryptoPP::ECPPoint" may benefit from adding a move assignment >>> operator. See other events which show the copy assignment operator being >>> applied to rvalue(s), where a move assignment may be faster. 20 struct CRYPTOPP_DLL ECPPoint 21 { 22 ECPPoint() : identity(true) {} 23 ECPPoint(const Integer &x, const Integer &y) 24 : identity(false), x(x), y(y) {} 25 ** CID 171264: Low impact quality (MISSING_MOVE_ASSIGNMENT) /pubkey.h: 105 in () ________________________________________________________________________________________________________ *** CID 171264: Low impact quality (MISSING_MOVE_ASSIGNMENT) /pubkey.h: 105 in () 99 //! \class RandomizedTrapdoorFunction 100 //! \brief Applies the trapdoor function, using random data if required 101 //! \details \p ApplyFunction() is the foundation for encrypting a message under a public key. 102 //! Derived classes will override it at some point. 103 //! \sa TrapdoorFunctionBounds(), RandomizedTrapdoorFunction(), TrapdoorFunction(), 104 //! RandomizedTrapdoorFunctionInverse() and TrapdoorFunctionInverse() >>> CID 171264: Low impact quality (MISSING_MOVE_ASSIGNMENT) >>> Class "CryptoPP::RandomizedTrapdoorFunction" may benefit from adding a >>> move assignment operator. See other events which show the copy assignment >>> operator being applied to rvalue(s), where a move assignment may be faster. 105 class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE RandomizedTrapdoorFunction : public TrapdoorFunctionBounds 106 { 107 public: 108 #ifndef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562 109 virtual ~RandomizedTrapdoorFunction() { } 110 #endif ** CID 171263: (RESOURCE_LEAK) /integer.cpp: 3213 in CryptoPP::StringToInteger<wchar_t>(const T1 *, CryptoPP::ByteOrder)() /integer.cpp: 3213 in CryptoPP::StringToInteger<char>(const T1 *, CryptoPP::ByteOrder)() ________________________________________________________________________________________________________ *** CID 171263: (RESOURCE_LEAK) /integer.cpp: 3213 in CryptoPP::StringToInteger<wchar_t>(const T1 *, CryptoPP::ByteOrder)() 3207 } 3208 } 3209 else if (radix == 16 && order == LITTLE_ENDIAN_ORDER) 3210 { 3211 // Nibble high, low and count 3212 unsigned int nh = 0, nl = 0, nc = 0; >>> CID 171263: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 3213 Integer position(Integer::One()); 3214 3215 for (unsigned int i=0; i<length; i++) 3216 { 3217 int digit, ch = static_cast<int>(str[i]); 3218 /integer.cpp: 3213 in CryptoPP::StringToInteger<char>(const T1 *, CryptoPP::ByteOrder)() 3207 } 3208 } 3209 else if (radix == 16 && order == LITTLE_ENDIAN_ORDER) 3210 { 3211 // Nibble high, low and count 3212 unsigned int nh = 0, nl = 0, nc = 0; >>> CID 171263: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::One()" >>> leaks it. 3213 Integer position(Integer::One()); 3214 3215 for (unsigned int i=0; i<length; i++) 3216 { 3217 int digit, ch = static_cast<int>(str[i]); 3218 ** CID 171262: (RESOURCE_LEAK) /eccrypto.cpp: 499 in CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP>::AssignFrom(const CryptoPP::NameValuePairs &)() /eccrypto.cpp: 499 in CryptoPP::DL_GroupParameters_EC<CryptoPP::EC2N>::AssignFrom(const CryptoPP::NameValuePairs &)() ________________________________________________________________________________________________________ *** CID 171262: (RESOURCE_LEAK) /eccrypto.cpp: 499 in CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP>::AssignFrom(const CryptoPP::NameValuePairs &)() 493 Point G; 494 Integer n; 495 496 source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::Curve(), ec); 497 source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::SubgroupGenerator(), G); 498 source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::SubgroupOrder(), n); >>> CID 171262: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 499 Integer k = source.GetValueWithDefault(Name::Cofactor(), Integer::Zero()); 500 501 Initialize(ec, G, n, k); 502 } 503 } 504 /eccrypto.cpp: 499 in CryptoPP::DL_GroupParameters_EC<CryptoPP::EC2N>::AssignFrom(const CryptoPP::NameValuePairs &)() 493 Point G; 494 Integer n; 495 496 source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::Curve(), ec); 497 source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::SubgroupGenerator(), G); 498 source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::SubgroupOrder(), n); >>> CID 171262: (RESOURCE_LEAK) >>> Failing to save or free storage allocated by >>> "CryptoPP::Integer::Zero()" leaks it. 499 Integer k = source.GetValueWithDefault(Name::Cofactor(), Integer::Zero()); 500 501 Initialize(ec, G, n, k); 502 } 503 } 504 ** CID 171261: Resource leaks (RESOURCE_LEAK) /nbtheory.cpp: 821 in CryptoPP::Lucas(const CryptoPP::Integer &, const CryptoPP::Integer &, const CryptoPP::Integer &)() ________________________________________________________________________________________________________ *** CID 171261: Resource leaks (RESOURCE_LEAK) /nbtheory.cpp: 821 in CryptoPP::Lucas(const CryptoPP::Integer &, const CryptoPP::Integer &, const CryptoPP::Integer &)() 815 { 816 unsigned i = e.BitCount(); 817 if (i==0) 818 return Integer::Two(); 819 820 MontgomeryRepresentation m(n); >>> CID 171261: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "CryptoPP::Integer::Two()" >>> leaks it. 821 Integer p=m.ConvertIn(pIn%n), two=m.ConvertIn(Integer::Two()); 822 Integer v=p, v1=m.Subtract(m.Square(p), two); 823 824 i--; 825 while (i--) 826 { ________________________________________________________________________________________________________ To view the defects in Coverity Scan visit, https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVdnYQMGA7SsScSrNyVa5ApxivS82-2Fj2G1beWVoIdy6g-3D-3D_Q7QzZ7iXo-2FBXM79C9lXioIEFwFf94JwOslZnckW5VaeEd-2FIwjQvJLGaeiCAy2Riq2t6HXYhh42biB6qe0gXizVQUV94RZLuVnYWNEpLIIsiHYLfJUiyYXKLYy9WGtxJACnbFNgi2R3dP-2F-2Fnj4BICusOOVcEcrxu16R-2BXallVn9qlgMDAzK6MIuSt2V0nJCJZzhoxoVoIiRzS-2BpczRj-2BjklFlZVn-2FRiU9vHue4VishR4-3D To manage Coverity Scan email notifications for "[email protected]", click https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVDbis712qZDP-2FA8y06Nq4CXLNPK1M7hXpumClmWuCSHG-2B2Y5bsVtwbGjQUYWAAHbcdcHpqFAd3PfbD2n3RCBPd6cW3fgaMMD5p8WHPvm07JjJgjN9fM5jVe-2BNGsB3Crc-3D_Q7QzZ7iXo-2FBXM79C9lXioIEFwFf94JwOslZnckW5VaeEd-2FIwjQvJLGaeiCAy2Riqs0b-2BVB2Nk-2FWQv1ObjWRfxb1CC5S7UfNUzwQ4Q7q0NHfJOBi1upVw4orRHTC-2F2ljVzpweuD1xvGtXl98jTBvscvnPebjWoFf1HUXZipczSKOYE1HJU9a2dVqt6ipxD6Lxl6ey31bvwXiLkMzNFkqHGHNiUL38s-2Feo2KTj-2Bw6IoLo-3D -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
