diff options
Diffstat (limited to 'src/corelib/tools/qcryptographichash.cpp')
| -rw-r--r-- | src/corelib/tools/qcryptographichash.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 0e677ceea36..0a4f2351088 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -1128,13 +1128,15 @@ QByteArrayView QCryptographicHash::hashInto(QSpan<std::byte> buffer, QSpan<const QByteArrayView> data, Algorithm method) noexcept { + if (buffer.size() < hashLengthInternal(method)) + return {}; // buffer too small + QCryptographicHashPrivate hash(method); for (QByteArrayView part : data) hash.addData(part); hash.finalizeUnchecked(); // no mutex needed: no-one but us has access to 'hash' auto result = hash.resultView(); - if (buffer.size() < result.size()) - return {}; // buffer too small + Q_ASSERT(buffer.size() >= result.size()); // ### optimize: have the method directly write into `buffer` memcpy(buffer.data(), result.data(), result.size()); return buffer.first(result.size()); |
