Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-20832

Urgent: Upgrade botan to 2.x

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Duplicate
    • Affects Version/s: Qt Creator 4.7.0
    • Fix Version/s: None
    • Component/s: Remote Linux
    • Labels:
      None

      Description

      Qt Creator 4.7 does not compile with Botan 2.7, the latest version of Botan.

      The current bundled version is 1.10.2, which was released on 2012-06-17 (six years and one month ago). Botan is a crypto library, so bundling an old version is bad practice. Not compiling with the latest is UNACCEPTABLE.

      Please treat this bug as a P0.

      In file included from sshbotanconversions_p.h:31,
                       from sshkeygenerator.cpp:28:
      /usr/include/botan-2/botan/botan.h:20:4: warning: #warning "botan/botan.h is deprecated" [-Wcpp]
         #warning "botan/botan.h is deprecated"
          ^~~~~~~
      In file included from sshkeygenerator.cpp:28:
      sshbotanconversions_p.h: In function ‘QByteArray QSsh::Internal::convertByteArray(Botan::SecureVector<unsigned char>&)’:
      sshbotanconversions_p.h:48:63: error: invalid cast from type ‘std::vector<unsigned char, Botan::secure_allocator<unsigned char> >::const_iterator’ {aka ‘__gnu_cxx::__normal_iterator<const unsigned char*, std::vector<unsigned char, Botan::secure_allocator<unsigned char> > >’} to type ‘const char*’
           return QByteArray(reinterpret_cast<const char *>(v.begin()), static_cast<int>(v.size()));
                                                                     ^
      sshkeygenerator.cpp: In member function ‘bool QSsh::SshKeyGenerator::generateKeys(QSsh::SshKeyGenerator::KeyType, QSsh::SshKeyGenerator::PrivateKeyFormat, int, QSsh::SshKeyGenerator::EncryptionMode)’:
      sshkeygenerator.cpp:62:25: error: expected primary-expression before ‘(’ token
                   key = KeyPtr(new RSA_PrivateKey(rng, keySize));
                               ^
      sshkeygenerator.cpp:62:30: error: expected type-specifier before ‘RSA_PrivateKey’
                   key = KeyPtr(new RSA_PrivateKey(rng, keySize));
                                    ^~~~~~~~~~~~~~
      sshkeygenerator.cpp:65:25: error: expected primary-expression before ‘(’ token
                   key = KeyPtr(new DSA_PrivateKey(rng, DL_Group(rng, DL_Group::DSA_Kosherizer, keySize)));
                               ^
      sshkeygenerator.cpp:65:30: error: expected type-specifier before ‘DSA_PrivateKey’
                   key = KeyPtr(new DSA_PrivateKey(rng, DL_Group(rng, DL_Group::DSA_Kosherizer, keySize)));
                                    ^~~~~~~~~~~~~~
      sshkeygenerator.cpp:69:25: error: expected primary-expression before ‘(’ token
                   key = KeyPtr(new ECDSA_PrivateKey(rng, EC_Group(SshCapabilities::oid(algo))));
                               ^
      sshkeygenerator.cpp:69:30: error: expected type-specifier before ‘ECDSA_PrivateKey’
                   key = KeyPtr(new ECDSA_PrivateKey(rng, EC_Group(SshCapabilities::oid(algo))));
                                    ^~~~~~~~~~~~~~~~
      sshkeygenerator.cpp: In member function ‘void QSsh::SshKeyGenerator::generateOpenSslPublicKeyString(const KeyPtr&)’:
      sshkeygenerator.cpp:136:30: error: ‘RSA_PrivateKey’ was not declared in this scope
               const QSharedPointer<RSA_PrivateKey> rsaKey = key.dynamicCast<RSA_PrivateKey>();
                                    ^~~~~~~~~~~~~~
      sshkeygenerator.cpp:136:30: note: suggested alternative: ‘m_privateKey’
               const QSharedPointer<RSA_PrivateKey> rsaKey = key.dynamicCast<RSA_PrivateKey>();
                                    ^~~~~~~~~~~~~~
                                    m_privateKey
      sshkeygenerator.cpp:136:44: error: template argument 1 is invalid
               const QSharedPointer<RSA_PrivateKey> rsaKey = key.dynamicCast<RSA_PrivateKey>();
                                                  ^
      sshkeygenerator.cpp:136:87: error: no matching function for call to ‘QSharedPointer<Botan::Private_Key>::dynamicCast<RSA_PrivateKey>() const’
               const QSharedPointer<RSA_PrivateKey> rsaKey = key.dynamicCast<RSA_PrivateKey>();
                                                                                             ^
      In file included from ../../../../installed/include/QtCore/qsharedpointer.h:48,
                       from ../../../../installed/include/QtCore/QSharedPointer:1,
                       from sshkeygenerator.h:31,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note: candidate: ‘template<class X> QSharedPointer<X> QSharedPointer<T>::dynamicCast() const [with X = X; T = Botan::Private_Key]’
           QSharedPointer<X> dynamicCast() const
                             ^~~~~~~~~~~
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note:   template argument deduction/substitution failed:
      sshkeygenerator.cpp:137:25: error: base operand of ‘->’ is not a pointer
               params << rsaKey->get_e() << rsaKey->get_n();
                               ^~
      sshkeygenerator.cpp:137:44: error: base operand of ‘->’ is not a pointer
               params << rsaKey->get_e() << rsaKey->get_n();
                                                  ^~
      sshkeygenerator.cpp:142:30: error: ‘DSA_PrivateKey’ was not declared in this scope
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                    ^~~~~~~~~~~~~~
      sshkeygenerator.cpp:142:30: note: suggested alternative: ‘m_privateKey’
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                    ^~~~~~~~~~~~~~
                                    m_privateKey
      sshkeygenerator.cpp:142:44: error: template argument 1 is invalid
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                                  ^
      sshkeygenerator.cpp:142:87: error: no matching function for call to ‘QSharedPointer<Botan::Private_Key>::dynamicCast<DSA_PrivateKey>() const’
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                                                                             ^
      In file included from ../../../../installed/include/QtCore/qsharedpointer.h:48,
                       from ../../../../installed/include/QtCore/QSharedPointer:1,
                       from sshkeygenerator.h:31,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note: candidate: ‘template<class X> QSharedPointer<X> QSharedPointer<T>::dynamicCast() const [with X = X; T = Botan::Private_Key]’
           QSharedPointer<X> dynamicCast() const
                             ^~~~~~~~~~~
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note:   template argument deduction/substitution failed:
      sshkeygenerator.cpp:143:25: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y();
                               ^~
      sshkeygenerator.cpp:143:46: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y();
                                                    ^~
      sshkeygenerator.cpp:143:67: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y();
                                                                         ^~
      sshkeygenerator.cpp:143:88: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y();
                                                                                              ^~
      sshkeygenerator.cpp:148:47: error: ‘ECDSA_PrivateKey’ was not declared in this scope
               const auto ecdsaKey = key.dynamicCast<ECDSA_PrivateKey>();
                                                     ^~~~~~~~~~~~~~~~
      sshkeygenerator.cpp:148:47: note: suggested alternative: ‘m_privateKey’
               const auto ecdsaKey = key.dynamicCast<ECDSA_PrivateKey>();
                                                     ^~~~~~~~~~~~~~~~
                                                     m_privateKey
      sshkeygenerator.cpp:148:65: error: no matching function for call to ‘QSharedPointer<Botan::Private_Key>::dynamicCast<<expression error> >() const’
               const auto ecdsaKey = key.dynamicCast<ECDSA_PrivateKey>();
                                                                       ^
      In file included from ../../../../installed/include/QtCore/qsharedpointer.h:48,
                       from ../../../../installed/include/QtCore/QSharedPointer:1,
                       from sshkeygenerator.h:31,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note: candidate: ‘template<class X> QSharedPointer<X> QSharedPointer<T>::dynamicCast() const [with X = X; T = Botan::Private_Key]’
           QSharedPointer<X> dynamicCast() const
                             ^~~~~~~~~~~
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note:   template argument deduction/substitution failed:
      sshkeygenerator.cpp:148:65: error: template argument 1 is invalid
               const auto ecdsaKey = key.dynamicCast<ECDSA_PrivateKey>();
                                                                       ^
      sshkeygenerator.cpp:149:63: error: ‘PointGFp’ has not been declared
               q = convertByteArray(EC2OSP(ecdsaKey->public_point(), PointGFp::UNCOMPRESSED));
                                                                     ^~~~~~~~
      sshkeygenerator.cpp:149:30: error: ‘EC2OSP’ was not declared in this scope
               q = convertByteArray(EC2OSP(ecdsaKey->public_point(), PointGFp::UNCOMPRESSED));
                                    ^~~~~~
      sshkeygenerator.cpp:149:30: note: suggested alternative: ‘ELOOP’
               q = convertByteArray(EC2OSP(ecdsaKey->public_point(), PointGFp::UNCOMPRESSED));
                                    ^~~~~~
                                    ELOOP
      sshkeygenerator.cpp: In member function ‘void QSsh::SshKeyGenerator::generateOpenSslPrivateKeyString(const KeyPtr&)’:
      sshkeygenerator.cpp:175:30: error: ‘RSA_PrivateKey’ was not declared in this scope
               const QSharedPointer<RSA_PrivateKey> rsaKey
                                    ^~~~~~~~~~~~~~
      sshkeygenerator.cpp:175:30: note: suggested alternative: ‘m_privateKey’
               const QSharedPointer<RSA_PrivateKey> rsaKey
                                    ^~~~~~~~~~~~~~
                                    m_privateKey
      sshkeygenerator.cpp:175:44: error: template argument 1 is invalid
               const QSharedPointer<RSA_PrivateKey> rsaKey
                                                  ^
      sshkeygenerator.cpp:176:47: error: no matching function for call to ‘QSharedPointer<Botan::Private_Key>::dynamicCast<RSA_PrivateKey>() const’
                   = key.dynamicCast<RSA_PrivateKey>();
                                                     ^
      In file included from ../../../../installed/include/QtCore/qsharedpointer.h:48,
                       from ../../../../installed/include/QtCore/QSharedPointer:1,
                       from sshkeygenerator.h:31,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note: candidate: ‘template<class X> QSharedPointer<X> QSharedPointer<T>::dynamicCast() const [with X = X; T = Botan::Private_Key]’
           QSharedPointer<X> dynamicCast() const
                             ^~~~~~~~~~~
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note:   template argument deduction/substitution failed:
      sshkeygenerator.cpp:177:25: error: base operand of ‘->’ is not a pointer
               params << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d() << rsaKey->get_p()
                               ^~
      sshkeygenerator.cpp:177:44: error: base operand of ‘->’ is not a pointer
               params << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d() << rsaKey->get_p()
                                                  ^~
      sshkeygenerator.cpp:177:63: error: base operand of ‘->’ is not a pointer
               params << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d() << rsaKey->get_p()
                                                                     ^~
      sshkeygenerator.cpp:177:82: error: base operand of ‘->’ is not a pointer
               params << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d() << rsaKey->get_p()
                                                                                        ^~
      sshkeygenerator.cpp:178:22: error: base operand of ‘->’ is not a pointer
                   << rsaKey->get_q();
                            ^~
      sshkeygenerator.cpp:179:22: error: variable ‘const Botan::BigInt dmp1’ has initializer but incomplete type
               const BigInt dmp1 = rsaKey->get_d() % (rsaKey->get_p() - 1);
                            ^~~~
      sshkeygenerator.cpp:179:35: error: base operand of ‘->’ is not a pointer
               const BigInt dmp1 = rsaKey->get_d() % (rsaKey->get_p() - 1);
                                         ^~
      sshkeygenerator.cpp:179:54: error: base operand of ‘->’ is not a pointer
               const BigInt dmp1 = rsaKey->get_d() % (rsaKey->get_p() - 1);
                                                            ^~
      sshkeygenerator.cpp:180:22: error: variable ‘const Botan::BigInt dmq1’ has initializer but incomplete type
               const BigInt dmq1 = rsaKey->get_d() % (rsaKey->get_q() - 1);
                            ^~~~
      sshkeygenerator.cpp:180:35: error: base operand of ‘->’ is not a pointer
               const BigInt dmq1 = rsaKey->get_d() % (rsaKey->get_q() - 1);
                                         ^~
      sshkeygenerator.cpp:180:54: error: base operand of ‘->’ is not a pointer
               const BigInt dmq1 = rsaKey->get_d() % (rsaKey->get_q() - 1);
                                                            ^~
      sshkeygenerator.cpp:181:22: error: variable ‘const Botan::BigInt iqmp’ has initializer but incomplete type
               const BigInt iqmp = inverse_mod(rsaKey->get_q(), rsaKey->get_p());
                            ^~~~
      sshkeygenerator.cpp:181:47: error: base operand of ‘->’ is not a pointer
               const BigInt iqmp = inverse_mod(rsaKey->get_q(), rsaKey->get_p());
                                                     ^~
      sshkeygenerator.cpp:181:64: error: base operand of ‘->’ is not a pointer
               const BigInt iqmp = inverse_mod(rsaKey->get_q(), rsaKey->get_p());
                                                                      ^~
      sshkeygenerator.cpp:181:29: error: ‘inverse_mod’ was not declared in this scope
               const BigInt iqmp = inverse_mod(rsaKey->get_q(), rsaKey->get_p());
                                   ^~~~~~~~~~~
      sshkeygenerator.cpp:187:30: error: ‘DSA_PrivateKey’ was not declared in this scope
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                    ^~~~~~~~~~~~~~
      sshkeygenerator.cpp:187:30: note: suggested alternative: ‘m_privateKey’
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                    ^~~~~~~~~~~~~~
                                    m_privateKey
      sshkeygenerator.cpp:187:44: error: template argument 1 is invalid
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                                  ^
      sshkeygenerator.cpp:187:87: error: no matching function for call to ‘QSharedPointer<Botan::Private_Key>::dynamicCast<DSA_PrivateKey>() const’
               const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
                                                                                             ^
      In file included from ../../../../installed/include/QtCore/qsharedpointer.h:48,
                       from ../../../../installed/include/QtCore/QSharedPointer:1,
                       from sshkeygenerator.h:31,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note: candidate: ‘template<class X> QSharedPointer<X> QSharedPointer<T>::dynamicCast() const [with X = X; T = Botan::Private_Key]’
           QSharedPointer<X> dynamicCast() const
                             ^~~~~~~~~~~
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note:   template argument deduction/substitution failed:
      sshkeygenerator.cpp:188:25: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y()
                               ^~
      sshkeygenerator.cpp:188:46: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y()
                                                    ^~
      sshkeygenerator.cpp:188:67: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y()
                                                                         ^~
      sshkeygenerator.cpp:188:88: error: base operand of ‘->’ is not a pointer
               params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y()
                                                                                              ^~
      sshkeygenerator.cpp:189:22: error: base operand of ‘->’ is not a pointer
                   << dsaKey->get_x();
                            ^~
      sshkeygenerator.cpp:194:35: error: ‘ECDSA_PrivateKey’ was not declared in this scope
               params << key.dynamicCast<ECDSA_PrivateKey>()->private_value();
                                         ^~~~~~~~~~~~~~~~
      sshkeygenerator.cpp:194:35: note: suggested alternative: ‘m_privateKey’
               params << key.dynamicCast<ECDSA_PrivateKey>()->private_value();
                                         ^~~~~~~~~~~~~~~~
                                         m_privateKey
      sshkeygenerator.cpp:194:53: error: no matching function for call to ‘QSharedPointer<Botan::Private_Key>::dynamicCast<<expression error> >() const’
               params << key.dynamicCast<ECDSA_PrivateKey>()->private_value();
                                                           ^
      In file included from ../../../../installed/include/QtCore/qsharedpointer.h:48,
                       from ../../../../installed/include/QtCore/QSharedPointer:1,
                       from sshkeygenerator.h:31,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note: candidate: ‘template<class X> QSharedPointer<X> QSharedPointer<T>::dynamicCast() const [with X = X; T = Botan::Private_Key]’
           QSharedPointer<X> dynamicCast() const
                             ^~~~~~~~~~~
      ../../../../installed/include/QtCore/qsharedpointer_impl.h:407:23: note:   template argument deduction/substitution failed:
      sshkeygenerator.cpp:194:53: error: template argument 1 is invalid
               params << key.dynamicCast<ECDSA_PrivateKey>()->private_value();
                                                           ^
      sshkeygenerator.cpp:199:17: error: aggregate ‘Botan::DER_Encoder encoder’ has incomplete type and cannot be defined
           DER_Encoder encoder;
                       ^~~~~~~
      sshkeygenerator.cpp:204:31: error: ‘PEM_Code’ was not declared in this scope
           m_privateKey = QByteArray(PEM_Code::encode (encoder.get_contents(), label).c_str());
                                     ^~~~~~~~
      In file included from ../../../../installed/include/QtCore/qglobal.h:45,
                       from ../../../../installed/include/QtCore/QtGlobal:1,
                       from ssh_global.h:28,
                       from sshkeygenerator.h:28,
                       from sshkeygenerator.cpp:26:
      /usr/include/c++/8/type_traits: In instantiation of ‘struct std::is_trivial<Botan::BigInt>’:
      ../../../../installed/include/QtCore/qtypeinfo.h:60:10:   required from ‘class QTypeInfo<Botan::BigInt>’
      ../../../../installed/include/QtCore/qlist.h:143:62:   required from ‘T& QList<T>::Node::t() [with T = Botan::BigInt]’
      ../../../../installed/include/QtCore/qlist.h:299:57:   required from ‘const T& QList<T>::const_iterator::operator*() const [with T = Botan::BigInt]’
      sshkeygenerator.cpp:157:5:   required from here
      /usr/include/c++/8/type_traits:661:12: error: invalid use of incomplete type ‘class Botan::BigInt’
           struct is_trivial
                  ^~~~~~~~~~
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      In file included from ../../../../installed/include/QtCore/qglobal.h:1198,
                       from ../../../../installed/include/QtCore/QtGlobal:1,
                       from ssh_global.h:28,
                       from sshkeygenerator.h:28,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qtypeinfo.h: In instantiation of ‘class QTypeInfo<Botan::BigInt>’:
      ../../../../installed/include/QtCore/qlist.h:143:62:   required from ‘T& QList<T>::Node::t() [with T = Botan::BigInt]’
      ../../../../installed/include/QtCore/qlist.h:299:57:   required from ‘const T& QList<T>::const_iterator::operator*() const [with T = Botan::BigInt]’
      sshkeygenerator.cpp:157:5:   required from here
      ../../../../installed/include/QtCore/qtypeinfo.h:60:10: error: ‘value’ is not a member of ‘std::is_trivial<Botan::BigInt>’
           enum {
                ^
      ../../../../installed/include/QtCore/qtypeinfo.h:67:20: error: invalid application of ‘sizeof’ to incomplete type ‘Botan::BigInt’
               isLarge = (sizeof(T)>sizeof(void*)),
                          ^~~~~~~~~
      ../../../../installed/include/QtCore/qtypeinfo.h:69:18: error: invalid application of ‘sizeof’ to incomplete type ‘Botan::BigInt’
               sizeOf = sizeof(T)
                        ^~~~~~~~~
      In file included from ../../../../installed/include/QtCore/qobject.h:49,
                       from ../../../../installed/include/QtCore/qcoreapplication.h:46,
                       from ../../../../installed/include/QtCore/QCoreApplication:1,
                       from sshkeygenerator.h:30,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qlist.h: In instantiation of ‘T& QList<T>::Node::t() [with T = Botan::BigInt]’:
      ../../../../installed/include/QtCore/qlist.h:299:57:   required from ‘const T& QList<T>::const_iterator::operator*() const [with T = Botan::BigInt]’
      sshkeygenerator.cpp:157:5:   required from here
      ../../../../installed/include/QtCore/qlist.h:143:62: warning: enum constant in boolean context [-Wint-in-bool-context]
               { return *reinterpret_cast<T*>(QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic
                                              ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      ../../../../installed/include/QtCore/qlist.h: In instantiation of ‘void QList<T>::node_destruct(QList<T>::Node*, QList<T>::Node*) [with T = Botan::BigInt]’:
      ../../../../installed/include/QtCore/qlist.h:867:5:   required from ‘void QList<T>::dealloc(QListData::Data*) [with T = Botan::BigInt]’
      ../../../../installed/include/QtCore/qlist.h:829:9:   required from ‘QList<T>::~QList() [with T = Botan::BigInt]’
      sshkeygenerator.cpp:131:19:   required from here
      ../../../../installed/include/QtCore/qlist.h:495:31: warning: enum constant in boolean context [-Wint-in-bool-context]
           if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
               ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      ../../../../installed/include/QtCore/qlist.h:496:31: warning: possible problem detected in invocation of delete operator: [-Wdelete-incomplete]
               while(from != to) --to, delete reinterpret_cast<T*>(to->v);
      ../../../../installed/include/QtCore/qlist.h:496:65: warning: invalid use of incomplete type ‘class Botan::BigInt’
               while(from != to) --to, delete reinterpret_cast<T*>(to->v);
                                                                   ~~~~^
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      In file included from ../../../../installed/include/QtCore/qobject.h:49,
                       from ../../../../installed/include/QtCore/qcoreapplication.h:46,
                       from ../../../../installed/include/QtCore/QCoreApplication:1,
                       from sshkeygenerator.h:30,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qlist.h:496:31: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined
               while(from != to) --to, delete reinterpret_cast<T*>(to->v);
      ../../../../installed/include/QtCore/qlist.h:498:61: error: invalid use of incomplete type ‘class Botan::BigInt’
               while (from != to) --to, reinterpret_cast<T*>(to)->~T();
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      In file included from ../../../../installed/include/QtCore/qobject.h:49,
                       from ../../../../installed/include/QtCore/qcoreapplication.h:46,
                       from ../../../../installed/include/QtCore/QCoreApplication:1,
                       from sshkeygenerator.h:30,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qlist.h: In instantiation of ‘void QList<T>::node_copy(QList<T>::Node*, QList<T>::Node*, QList<T>::Node*) [with T = Botan::BigInt]’:
      ../../../../installed/include/QtCore/qlist.h:815:13:   required from ‘QList<T>::QList(const QList<T>&) [with T = Botan::BigInt]’
      ../../../../installed/include/QtCore/qglobal.h:976:86:   required from ‘QtPrivate::QForeachContainer<T>::QForeachContainer(const T&) [with T = QList<Botan::BigInt>]’
      ../../../../installed/include/QtCore/qglobal.h:1004:12:   required from ‘QtPrivate::QForeachContainer<typename std::decay<_Tp>::type> QtPrivate::qMakeForeachContainer(T&&) [with T = QList<Botan::BigInt>&; typename std::decay<_Tp>::type = QList<Botan::BigInt>]’
      sshkeygenerator.cpp:157:5:   required from here
      ../../../../installed/include/QtCore/qlist.h:461:31: warning: enum constant in boolean context [-Wint-in-bool-context]
           if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
               ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      ../../../../installed/include/QtCore/qlist.h:464:30: error: invalid use of incomplete type ‘class Botan::BigInt’
                       current->v = new T(*reinterpret_cast<T*>(src->v));
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      In file included from ../../../../installed/include/QtCore/qobject.h:49,
                       from ../../../../installed/include/QtCore/qcoreapplication.h:46,
                       from ../../../../installed/include/QtCore/QCoreApplication:1,
                       from sshkeygenerator.h:30,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qlist.h:470:17: warning: possible problem detected in invocation of delete operator: [-Wdelete-incomplete]
                       delete reinterpret_cast<T*>(current->v);
                       ^~~~~~
      ../../../../installed/include/QtCore/qlist.h:470:54: warning: invalid use of incomplete type ‘class Botan::BigInt’
                       delete reinterpret_cast<T*>(current->v);
                                                   ~~~~~~~~~^
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      In file included from ../../../../installed/include/QtCore/qobject.h:49,
                       from ../../../../installed/include/QtCore/qcoreapplication.h:46,
                       from ../../../../installed/include/QtCore/QCoreApplication:1,
                       from sshkeygenerator.h:30,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qlist.h:470:17: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined
                       delete reinterpret_cast<T*>(current->v);
                       ^~~~~~
      ../../../../installed/include/QtCore/qlist.h:477:17: error: invalid use of incomplete type ‘class Botan::BigInt’
                       new (current) T(*reinterpret_cast<T*>(src));
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      In file included from ../../../../installed/include/QtCore/qobject.h:49,
                       from ../../../../installed/include/QtCore/qcoreapplication.h:46,
                       from ../../../../installed/include/QtCore/QCoreApplication:1,
                       from sshkeygenerator.h:30,
                       from sshkeygenerator.cpp:26:
      ../../../../installed/include/QtCore/qlist.h:483:51: error: invalid use of incomplete type ‘class Botan::BigInt’
                       (reinterpret_cast<T*>(current))->~T();
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
      In file included from sshkeygenerator.cpp:32:
      sshpacket_p.h:34:25: note: forward declaration of ‘class Botan::BigInt’
       namespace Botan { class BigInt; }
                               ^~~~~~
      sshkeygenerator.cpp: In member function ‘void QSsh::SshKeyGenerator::generatePkcs8KeyString(const KeyPtr&, bool, Botan::RandomNumberGenerator&)’:
      sshkeygenerator.cpp:119:14: warning: ignoring return value of ‘std::size_t Botan::Pipe::read(uint8_t*, std::size_t, Botan::Pipe::message_id)’, declared with attribute warn_unused_result [-Wunused-result]
           pipe.read(convertByteArray(*keyData), keyData->size(),
           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               pipe.message_count() - 1);
               ~~~~~~~~~~~~~~~~~~~~~~~~~
      

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              • Assignee:
                kandeler Christian Kandeler
                Reporter:
                thiago Thiago Macieira
              • Votes:
                1 Vote for this issue
                Watchers:
                8 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes