diff --git a/src/sshagent/OpenSSHKey.cpp b/src/sshagent/OpenSSHKey.cpp index db0d2ae78..fd0c7447a 100644 --- a/src/sshagent/OpenSSHKey.cpp +++ b/src/sshagent/OpenSSHKey.cpp @@ -693,7 +693,7 @@ bool OpenSSHKey::parseCertificate(QByteArray& data) "sk-ecdsa-sha2-nistp521-cert-v01@openssh.com", }; - if(!certificateTypeList.contains(elements.first())) { + if(elements.isEmpty() || elements.size() < 2 || !certificateTypeList.contains(elements.first())) { m_error = tr("Invalid or unsupported certificate file"); return false; } @@ -701,6 +701,11 @@ bool OpenSSHKey::parseCertificate(QByteArray& data) m_certificateType = elements.first(); m_rawCertificateData = QByteArray::fromBase64(elements[1].toLatin1()); + if (m_rawCertificateData.isEmpty()) { + m_error = tr("Base64 decoding failed"); + return false; + } + return true; }