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 &params)
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 &params)
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 &params)
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 &params)
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 &params)
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 &params)
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 &params)
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 &params)
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.

Reply via email to