Details
-
Bug
-
Resolution: Duplicate
-
P1: Critical
-
None
-
Qt Creator 4.7.0
-
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
- duplicates
-
QTCREATORBUG-18802 Port Qt Creator to Botan2 to avoid Linux Distribution issues
-
- Closed
-