mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 10:52:49 +00:00
kutils: do not attempt to encrypt empty passwords
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
6fe36e5d05
commit
2e3be50bfb
1 changed files with 10 additions and 6 deletions
|
@ -73,7 +73,7 @@ public:
|
||||||
bool cacheonly;
|
bool cacheonly;
|
||||||
QString storeid;
|
QString storeid;
|
||||||
QString passwdstore;
|
QString passwdstore;
|
||||||
QMap<QByteArray, QString> cache;
|
QMap<QByteArray, QString> cachemap;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if defined(HAVE_OPENSSL)
|
#if defined(HAVE_OPENSSL)
|
||||||
|
@ -217,7 +217,7 @@ QString KPasswdStorePrivate::decryptPasswd(const QString &passwd, bool *ok)
|
||||||
Q_ASSERT(EVP_CIPHER_CTX_key_length(opensslctx) == kpasswdstore_keylen);
|
Q_ASSERT(EVP_CIPHER_CTX_key_length(opensslctx) == kpasswdstore_keylen);
|
||||||
Q_ASSERT(EVP_CIPHER_CTX_iv_length(opensslctx) == kpasswdstore_ivlen);
|
Q_ASSERT(EVP_CIPHER_CTX_iv_length(opensslctx) == kpasswdstore_ivlen);
|
||||||
|
|
||||||
const QByteArray passwdbytes = QByteArray::fromHex(passwd.toUtf8());
|
const QByteArray passwdbytes = QByteArray::fromHex(passwd.toLatin1());
|
||||||
const int opensslbuffersize = (kpasswdstore_buffsize * EVP_CIPHER_CTX_block_size(opensslctx));
|
const int opensslbuffersize = (kpasswdstore_buffsize * EVP_CIPHER_CTX_block_size(opensslctx));
|
||||||
uchar opensslbuffer[opensslbuffersize];
|
uchar opensslbuffer[opensslbuffersize];
|
||||||
::memset(opensslbuffer, 0, sizeof(opensslbuffer) * sizeof(uchar));
|
::memset(opensslbuffer, 0, sizeof(opensslbuffer) * sizeof(uchar));
|
||||||
|
@ -243,7 +243,7 @@ QString KPasswdStorePrivate::decryptPasswd(const QString &passwd, bool *ok)
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString result = QString::fromLatin1(reinterpret_cast<char*>(opensslbuffer), opensslbufferpos);
|
const QString result = QString::fromUtf8(reinterpret_cast<char*>(opensslbuffer), opensslbufferpos);
|
||||||
EVP_CIPHER_CTX_free(opensslctx);
|
EVP_CIPHER_CTX_free(opensslctx);
|
||||||
*ok = !result.isEmpty();
|
*ok = !result.isEmpty();
|
||||||
return result;
|
return result;
|
||||||
|
@ -366,7 +366,7 @@ bool KPasswdStore::openStore(const qlonglong windowid)
|
||||||
void KPasswdStore::setCacheOnly(const bool cacheonly)
|
void KPasswdStore::setCacheOnly(const bool cacheonly)
|
||||||
{
|
{
|
||||||
d->cacheonly = cacheonly;
|
d->cacheonly = cacheonly;
|
||||||
d->cache.clear();
|
d->cachemap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KPasswdStore::cacheOnly() const
|
bool KPasswdStore::cacheOnly() const
|
||||||
|
@ -382,7 +382,7 @@ bool KPasswdStore::hasPasswd(const QByteArray &key, const qlonglong windowid)
|
||||||
QString KPasswdStore::getPasswd(const QByteArray &key, const qlonglong windowid)
|
QString KPasswdStore::getPasswd(const QByteArray &key, const qlonglong windowid)
|
||||||
{
|
{
|
||||||
if (d->cacheonly) {
|
if (d->cacheonly) {
|
||||||
return d->cache.value(key, QString());
|
return d->cachemap.value(key, QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!openStore(windowid)) {
|
if (!openStore(windowid)) {
|
||||||
|
@ -401,7 +401,7 @@ QString KPasswdStore::getPasswd(const QByteArray &key, const qlonglong windowid)
|
||||||
bool KPasswdStore::storePasswd(const QByteArray &key, const QString &passwd, const qlonglong windowid)
|
bool KPasswdStore::storePasswd(const QByteArray &key, const QString &passwd, const qlonglong windowid)
|
||||||
{
|
{
|
||||||
if (d->cacheonly) {
|
if (d->cacheonly) {
|
||||||
d->cache.insert(key, passwd);
|
d->cachemap.insert(key, passwd);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,6 +409,10 @@ bool KPasswdStore::storePasswd(const QByteArray &key, const QString &passwd, con
|
||||||
return storePasswd(key, passwd);
|
return storePasswd(key, passwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (passwd.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
KConfig kconfig(d->passwdstore);
|
KConfig kconfig(d->passwdstore);
|
||||||
KConfigGroup kconfiggroup = kconfig.group(d->storeid);
|
KConfigGroup kconfiggroup = kconfig.group(d->storeid);
|
||||||
|
|
Loading…
Add table
Reference in a new issue