From 7a017041bf5ceaf09832d7ecd0ab20aa0826db9d Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 16:17:24 +0100 Subject: [PATCH 01/12] Allow opening databases that have no password and keyfile. Closes #391 --- src/gui/DatabaseOpenWidget.cpp | 16 +--------------- src/gui/DatabaseOpenWidget.h | 1 - 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp index 717326a98..7e34176dc 100644 --- a/src/gui/DatabaseOpenWidget.cpp +++ b/src/gui/DatabaseOpenWidget.cpp @@ -49,10 +49,6 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent) connect(m_ui->editPassword, SIGNAL(textChanged(QString)), SLOT(activatePassword())); connect(m_ui->comboKeyFile, SIGNAL(editTextChanged(QString)), SLOT(activateKeyFile())); - connect(m_ui->checkPassword, SIGNAL(toggled(bool)), SLOT(setOkButtonEnabled())); - connect(m_ui->checkKeyFile, SIGNAL(toggled(bool)), SLOT(setOkButtonEnabled())); - connect(m_ui->comboKeyFile, SIGNAL(editTextChanged(QString)), SLOT(setOkButtonEnabled())); - connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(openDatabase())); connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject())); } @@ -75,6 +71,7 @@ void DatabaseOpenWidget::load(const QString& filename) } } + m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); m_ui->editPassword->setFocus(); } @@ -99,9 +96,6 @@ void DatabaseOpenWidget::openDatabase() { KeePass2Reader reader; CompositeKey masterKey = databaseKey(); - if (masterKey.isEmpty()) { - return; - } QFile file(m_filename); if (!file.open(QIODevice::ReadOnly)) { @@ -172,14 +166,6 @@ void DatabaseOpenWidget::activateKeyFile() m_ui->checkKeyFile->setChecked(true); } -void DatabaseOpenWidget::setOkButtonEnabled() -{ - bool enable = m_ui->checkPassword->isChecked() - || (m_ui->checkKeyFile->isChecked() && !m_ui->comboKeyFile->currentText().isEmpty()); - - m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enable); -} - void DatabaseOpenWidget::browseKeyFile() { QString filters = QString("%1 (*);;%2 (*.key)").arg(tr("All files"), tr("Key files")); diff --git a/src/gui/DatabaseOpenWidget.h b/src/gui/DatabaseOpenWidget.h index ad40c5711..9c9a0623b 100644 --- a/src/gui/DatabaseOpenWidget.h +++ b/src/gui/DatabaseOpenWidget.h @@ -54,7 +54,6 @@ protected Q_SLOTS: private Q_SLOTS: void activatePassword(); void activateKeyFile(); - void setOkButtonEnabled(); void browseKeyFile(); protected: From c14d04b3e8d82b957300e67d8b294e992e196c55 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 16:44:34 +0100 Subject: [PATCH 02/12] Fix crash when icon id is larger than INT_MAX. In these cases icon id was interpreted as a negative number. The QList access with a negative index resulted in a crash. --- src/format/KeePass1Reader.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/format/KeePass1Reader.cpp b/src/format/KeePass1Reader.cpp index 929632bf0..0e6b4a91c 100644 --- a/src/format/KeePass1Reader.cpp +++ b/src/format/KeePass1Reader.cpp @@ -901,10 +901,10 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data) QByteArray entryUuid = data.mid(pos, 16); pos += 16; - int iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER); + quint32 iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER); pos += 4; - if (m_entryUuids.contains(entryUuid) && (iconId < iconUuids.size())) { + if (m_entryUuids.contains(entryUuid) && (iconId < static_cast(iconUuids.size()))) { m_entryUuids[entryUuid]->setIcon(iconUuids[iconId]); } } @@ -917,10 +917,10 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data) quint32 groupId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER); pos += 4; - int iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER); + quint32 iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER); pos += 4; - if (m_groupIds.contains(groupId) && (iconId < iconUuids.size())) { + if (m_groupIds.contains(groupId) && (iconId < static_cast(iconUuids.size()))) { m_groupIds[groupId]->setIcon(iconUuids[iconId]); } } From 107c0673c714186a56402776996b53696ba80e3d Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 17:06:51 +0100 Subject: [PATCH 03/12] Make sure we don't write negative icon ids into the database. --- src/format/KeePass2XmlReader.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/format/KeePass2XmlReader.cpp b/src/format/KeePass2XmlReader.cpp index c589b326c..815cbf9c2 100644 --- a/src/format/KeePass2XmlReader.cpp +++ b/src/format/KeePass2XmlReader.cpp @@ -523,6 +523,7 @@ Group* KeePass2XmlReader::parseGroup() if (m_strictMode) { raiseError("Invalid group icon number"); } + iconId = 0; } else { if (iconId >= DatabaseIcons::IconCount) { @@ -702,6 +703,7 @@ Entry* KeePass2XmlReader::parseEntry(bool history) if (m_strictMode) { raiseError("Invalid entry icon number"); } + iconId = 0; } else { entry->setIcon(iconId); From aff935b3c7f9a4c0b60618200db5a5f3e38ff59c Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 17:08:50 +0100 Subject: [PATCH 04/12] Properly handle a missing key filename. --- src/gui/DatabaseRepairWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/DatabaseRepairWidget.cpp b/src/gui/DatabaseRepairWidget.cpp index b7eeac212..f1b760f99 100644 --- a/src/gui/DatabaseRepairWidget.cpp +++ b/src/gui/DatabaseRepairWidget.cpp @@ -51,6 +51,7 @@ void DatabaseRepairWidget::openDatabase() if (!key.load(keyFilename, &errorMsg)) { MessageBox::warning(this, tr("Error"), tr("Can't open key file").append(":\n").append(errorMsg)); Q_EMIT editFinished(false); + return; } masterKey.addKey(key); } From d670ef26386f044b06874e06a8ec3ea7f35dd44c Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 18:49:35 +0100 Subject: [PATCH 05/12] Prepare for 2.0.1 release. --- CHANGELOG | 11 +++++++++++ CMakeLists.txt | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 112fa2c1e..6de89c228 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,14 @@ +2.0.1 (2016-01-31) +========================= + +- Flush temporary file before opening attachment. [#390] +- Disable password generator when showing entry in history mode. [#422] +- Strip invalid XML chars when writing databases. [#392] +- Add repair function to fix databses with invalid XML chars. [#392] +- Display custom icons scaled. [#322] +- Allow opening databases that have no password and keyfile. [#391] +- Fix crash when importing .kdb files with invalid icon ids. [#425] + 2.0 (2015-12-06) ========================= diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a6ae6c1d..0b8899801 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,8 +33,8 @@ option(WITH_TESTS "Enable building of unit tests" ON) option(WITH_GUI_TESTS "Enable building of GUI tests" OFF) option(WITH_CXX11 "Build with the C++ 11 standard" ON) -set(KEEPASSX_VERSION "2.0") -set(KEEPASSX_VERSION_NUM "2.0") +set(KEEPASSX_VERSION "2.0.1") +set(KEEPASSX_VERSION_NUM "2.0.1") if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_COMPILER_IS_CLANG 1) From 654353e26bef7aab3535d2b87027234771302223 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 19:03:25 +0100 Subject: [PATCH 06/12] Update translations. --- CHANGELOG | 1 + share/translations/keepassx_da.ts | 14 ++ share/translations/keepassx_en.ts | 60 ++++++++ share/translations/keepassx_fr.ts | 80 ++++++----- share/translations/keepassx_id.ts | 24 +++- share/translations/keepassx_it.ts | 219 ++++++++++++++++-------------- share/translations/keepassx_sv.ts | 19 ++- share/translations/keepassx_uk.ts | 14 ++ 8 files changed, 287 insertions(+), 144 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 6de89c228..9c890a1c3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ - Display custom icons scaled. [#322] - Allow opening databases that have no password and keyfile. [#391] - Fix crash when importing .kdb files with invalid icon ids. [#425] +- Update translations. 2.0 (2015-12-06) ========================= diff --git a/share/translations/keepassx_da.ts b/share/translations/keepassx_da.ts index d66ed8fa0..0ee8cc335 100644 --- a/share/translations/keepassx_da.ts +++ b/share/translations/keepassx_da.ts @@ -13,6 +13,10 @@ Revision Revision + + Using: + Bruger: + AutoType @@ -828,6 +832,16 @@ Vil du alligevel gemme? Unable to calculate master key Kan ikke beregne hovednøgle + + The selected file is an old KeePass 1 database (.kdb). + +You can import it by clicking on Database > 'Import KeePass 1 database'. +This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version. + Den valgte fil er en gammel KeePass 1 databasefil (.kdb). + +Du kan importere den ved at klikke på Database > 'Importér KeePass 1 database'. +Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den importerede database med den gamle KeePassX 0.4 version. + Main diff --git a/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts index 07fcb3e17..ef014cb0a 100644 --- a/share/translations/keepassx_en.ts +++ b/share/translations/keepassx_en.ts @@ -172,6 +172,42 @@ + + DatabaseRepairWidget + + Repair database + + + + Error + + + + Can't open key file + + + + Database opened fine. Nothing to do. + + + + Unable to open the database. + + + + Success + + + + The database has been successfully repaired +You can now save it. + + + + Unable to repair the database. + + + DatabaseSettingsWidget @@ -1022,6 +1058,30 @@ This is a one-way migration. You won't be able to open the imported databas Export to CSV file + + Repair database + + + + KeePass 2 Database + + + + All files + + + + Save repaired database + + + + Error + + + + Writing the database failed. + + PasswordGeneratorWidget diff --git a/share/translations/keepassx_fr.ts b/share/translations/keepassx_fr.ts index 66311609a..31944bbe6 100644 --- a/share/translations/keepassx_fr.ts +++ b/share/translations/keepassx_fr.ts @@ -13,6 +13,10 @@ Revision Version + + Using: + Utilise : + AutoType @@ -79,7 +83,7 @@ Key files - Fichiers de clé + Fichiers-clés All files @@ -120,7 +124,7 @@ Failed to set %1 as the Key file: %2 - Impossible de définir %1 comme fichier-clé: + Impossible de définir %1 comme fichier-clé : %2 @@ -286,7 +290,7 @@ Voulez-vous quand même l'ouvrir ? Dans ce cas, elle sera ouverte en lectur Lock database - Verrouiiler la base de données + Verrouiller la base de données Can't lock the database as you are currently editing it. @@ -449,7 +453,7 @@ Voulez-vous quand même la sauvegarder ? Unable to save the attachment: - Impossible d'enregistrer le fichier attaché: + Impossible d'enregistrer le fichier attaché : @@ -532,7 +536,7 @@ Voulez-vous quand même la sauvegarder ? Set custom sequence: - Définir une séquence personnalisé : + Définir une séquence personnalisée : @@ -562,7 +566,7 @@ Voulez-vous quand même la sauvegarder ? Username: - Non d'utilisateur : + Nom d'utilisateur : Password: @@ -755,7 +759,7 @@ Voulez-vous quand même la sauvegarder ? Username - Non d'utilisateur + Nom d'utilisateur URL @@ -792,7 +796,7 @@ Voulez-vous quand même la sauvegarder ? Not a KeePass database. - Ce n'est pas une base de donnée KeePass. + Ce n'est pas une base de données KeePass. Unsupported encryption algorithm. @@ -800,7 +804,7 @@ Voulez-vous quand même la sauvegarder ? Unsupported KeePass database version. - Version de base de donnée KeePass non supportée. + Version de base de données KeePass non supportée. Root @@ -815,20 +819,30 @@ Voulez-vous quand même la sauvegarder ? KeePass2Reader Not a KeePass database. - Ce n'est pas une base de donnée KeePass. + Ce n'est pas une base de données KeePass. Unsupported KeePass database version. - Version de base de donnée KeePass non supportée. + Version de base de données KeePass non supportée. Wrong key or database file is corrupt. - Mauvaise clé ou fichier de base de donnée corrompu. + Mauvaise clé ou fichier de base de données corrompu. Unable to calculate master key Impossible de calculer la clé maître + + The selected file is an old KeePass 1 database (.kdb). + +You can import it by clicking on Database > 'Import KeePass 1 database'. +This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version. + Le fichier sélectionné est une ancienne base de données pour KeePass 1 (.kdb). + +Vous pouvez l'importer en cliquant sur "Base de données" > "Importer une base de données KeePass 1". +Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvrir la base de données importée avec l'ancienne version KeePassX version 0.4. + Main @@ -861,7 +875,7 @@ Voulez-vous quand même la sauvegarder ? Copy attribute to clipboard - Copier l'attribut dans le presse-papiers + Copier l'attribut dans le presse-papier Groups @@ -881,19 +895,19 @@ Voulez-vous quand même la sauvegarder ? Open database - Ouvrir une base de donnée + Ouvrir une base de données Save database - Enregistrer la base de donnée + Enregistrer la base de données Close database - Fermer la base de donnée + Fermer la base de données New database - Nouvelle base de donnée + Nouvelle base de données Add new entry @@ -921,7 +935,7 @@ Voulez-vous quand même la sauvegarder ? Save database as - Enregistrer la base de donnée sous + Enregistrer la base de données sous Change master key @@ -929,11 +943,11 @@ Voulez-vous quand même la sauvegarder ? Database settings - Paramètre de la base de donnée + Paramètres de la base de données Import KeePass 1 database - Importer une base de donnée KeePass 1 + Importer une base de données KeePass 1 Clone entry @@ -945,11 +959,11 @@ Voulez-vous quand même la sauvegarder ? Copy username to clipboard - Copier le nom d'utilisateur dans le presse-papiers + Copier le nom d'utilisateur dans le presse-papier Copy password to clipboard - Copier le mot de passe dans le presse-papiers + Copier le mot de passe dans le presse-papier Settings @@ -1020,7 +1034,7 @@ Voulez-vous quand même la sauvegarder ? Character Types - Types de caractère + Types de caractères Upper Case Letters @@ -1055,7 +1069,7 @@ Voulez-vous quand même la sauvegarder ? QCommandLineParser Displays version information. - Afficher les informations de version + Afficher les informations de version. Displays this help. @@ -1166,7 +1180,7 @@ Voulez-vous quand même la sauvegarder ? SettingsWidget Application Settings - Paramètre de l'application + Paramètres de l'application General @@ -1185,19 +1199,19 @@ Voulez-vous quand même la sauvegarder ? Open previous databases on startup - Ouvrir les base de données précédentes au démarrage + Ouvrir les bases de données précédentes au démarrage Automatically save on exit - Sauvegarde automatiquement à la sortie + Sauvegarder automatiquement à la sortie Automatically save after every change - Sauvegarde automatiquement après chaque modification + Sauvegarder automatiquement après chaque modification Minimize when copying to clipboard - Réduire lors de la copie dans le presse-papiers + Réduire lors de la copie dans le presse-papier Use group icon on entry creation @@ -1232,7 +1246,7 @@ Voulez-vous quand même la sauvegarder ? SettingsWidgetSecurity Clear clipboard after - Vider le presse-papiers après + Vider le presse-papier après sec @@ -1240,7 +1254,7 @@ Voulez-vous quand même la sauvegarder ? Lock databases after inactivity of - Verrouiller les bases de donnée après une inactivité de + Verrouiller les bases de données après une inactivité de Show passwords in cleartext by default @@ -1255,7 +1269,7 @@ Voulez-vous quand même la sauvegarder ? UnlockDatabaseWidget Unlock database - Déverrouiller la base de donnée + Déverrouiller la base de données @@ -1273,7 +1287,7 @@ Voulez-vous quand même la sauvegarder ? filename of the password database to open (*.kdbx) - Nom de fichier de la base de donnée de mot de pass à ouvrir (*.kdbx) + Nom de fichier de la base de données de mot de passe à ouvrir (*.kdbx) path to a custom config file diff --git a/share/translations/keepassx_id.ts b/share/translations/keepassx_id.ts index b4d5f7d3b..9b210f604 100644 --- a/share/translations/keepassx_id.ts +++ b/share/translations/keepassx_id.ts @@ -13,6 +13,10 @@ Revision Revisi + + Using: + Menggunakan: + AutoType @@ -79,7 +83,7 @@ Key files - Berkas Kunci + Berkas kunci All files @@ -99,7 +103,7 @@ Select a key file - Pilih sebuah berkas kunci + Pilih berkas kunci Question @@ -111,7 +115,7 @@ Different passwords supplied. - Sandi yang berbeda diberikan. + Sandi berbeda. Failed to set key file @@ -428,7 +432,7 @@ Apakah Anda tetap ingin menyimpannya? Different passwords supplied. - Kata sandi yang berbeda diberikan. + Sandi berbeda. New attribute @@ -586,7 +590,7 @@ Apakah Anda tetap ingin menyimpannya? Presets - + Prasetel Notes: @@ -829,6 +833,16 @@ Apakah Anda tetap ingin menyimpannya? Unable to calculate master key Tidak bisa mengkalkulasi kunci utama + + The selected file is an old KeePass 1 database (.kdb). + +You can import it by clicking on Database > 'Import KeePass 1 database'. +This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version. + Berkas yang dipilih adalah basis data KeePass 1 yang lama (.kdb). + +Anda bisa mengimpornya dengan mengklik Basis Data > 'Impor basis data KeePass 1'. +Ini adalah migrasi satu arah. Anda tidak akan bisa lagi membuka basis data yang diimpor dengan versi lama KeePassX 0.4. + Main diff --git a/share/translations/keepassx_it.ts b/share/translations/keepassx_it.ts index 8c9048dfb..ad9af9084 100644 --- a/share/translations/keepassx_it.ts +++ b/share/translations/keepassx_it.ts @@ -13,6 +13,10 @@ Revision Revisione + + Using: + In uso: + AutoType @@ -48,7 +52,7 @@ Select entry to Auto-Type: - Selezionare una voce per Auto-Type: + Seleziona una voce per Auto-Type: @@ -59,11 +63,11 @@ Enter password: - Inserire password: + Inserisci password: Repeat password: - Ripetere password: + Ripeti password: Key file @@ -75,7 +79,7 @@ Create - Creare + Crea Key files @@ -87,7 +91,7 @@ Create Key File... - Creare file chiave... + Crea file chiave... Error @@ -120,18 +124,19 @@ Failed to set %1 as the Key file: %2 - Impossibile impostare %1 come file Chiave: %2 + Impossibile impostare %1 come file chiave: +%2 DatabaseOpenWidget Enter master key - Inserire password + Inserisci la chiave principale Key File: - File Chiave: + File chiave: Password: @@ -139,7 +144,7 @@ Browse - Sfogliare + Sfoglia Error @@ -159,7 +164,7 @@ Key files - Files chiave + File chiave Select key file @@ -170,7 +175,7 @@ DatabaseSettingsWidget Database name: - Nome database: + Nome del database: Database description: @@ -178,7 +183,7 @@ Transform rounds: - Rounds di trasformazione: + Round di trasformazione: Default username: @@ -186,7 +191,7 @@ Use recycle bin: - Utilizzare cestino: + Utilizza cestino: MiB @@ -254,7 +259,7 @@ "%1" was modified. Save changes? - "%1" è stata modificata. + "%1" è stata modificato. Salvare le modifiche? @@ -263,11 +268,11 @@ Salvare le modifiche? Writing the database failed. - Scrittura del database fallita. + Scrittura del database non riuscita. Save database as - Salvare database come + Salva database come New database @@ -280,18 +285,18 @@ Salvare le modifiche? The database you are trying to open is locked by another instance of KeePassX. Do you want to open it anyway? Alternatively the database is opened read-only. - Il Database che stai tentando di aprire è bloccato da un'altra esecuzione di KeePassX. -Vuoi aprirlo comunque? In alternativa, il database verrà aperto in sola lettura. + Il database che stai tentando di aprire è bloccato da un'altra istanza di KeePassX. +Vuoi aprirlo comunque? Altrimenti il database verrà aperto in sola lettura. Lock database - Bloccare database + Blocca database Can't lock the database as you are currently editing it. Please press cancel to finish your changes or discard them. - Non è possibile bloccare il database nel modo in cui lo stai modificando. -Premere annulla per terminare le modifiche o scartarle . + Non è possibile bloccare il database dato che lo stai modificando. +Premere Annulla per completare le modifiche o scartarle. This database has never been saved. @@ -323,12 +328,12 @@ Annullare le modifiche e chiudere comunque? Writing the CSV file failed. - Scrittura del file CSV fallita. + Scrittura del file CSV non riuscita. The database you are trying to save as is locked by another instance of KeePassX. Do you want to save it anyway? - Il database che si sta tentando di salvare è bloccato da un'altra istanza di KeePassX. + Il database che stai tentando di salvare è bloccato da un'altra istanza di KeePassX. Vuoi salvare comunque? @@ -336,7 +341,7 @@ Vuoi salvare comunque? DatabaseWidget Change master key - Cambia password principale + Cambia chiave principale Delete entry? @@ -457,15 +462,15 @@ Vuoi salvare comunque? %n week(s) - %n settimana(e)%n settimana(e) + %n settimana%n settimane %n month(s) - %n mese(i)%n mese(i) + %n mese%n mesi 1 year - 1 anno + Un anno @@ -476,15 +481,15 @@ Vuoi salvare comunque? Add - Aggiungere + Aggiungi Edit - Modificare + Modifica Remove - Rimuovere + Rimuovi Attachments @@ -492,26 +497,26 @@ Vuoi salvare comunque? Save - Salvare + Salva Open - Aprire + Apri EditEntryWidgetAutoType Enable Auto-Type for this entry - Abilitare Auto-Type per questa voce + Abilita Auto-Type per questa voce Inherit default Auto-Type sequence from the group - Ereditare la sequenza predefinita di Auto-Type dal gruppo + Eredita la sequenza predefinita di Auto-Type dal gruppo Use custom Auto-Type sequence: - Usare sequenza personalizzata di Auto-Type: + Usa sequenza personalizzata di Auto-Type: + @@ -527,30 +532,30 @@ Vuoi salvare comunque? Use default sequence - Usare sequenza predefinita + Usa sequenza predefinita Set custom sequence: - Impostare sequenza personalizzata: + Imposta sequenza personalizzata: EditEntryWidgetHistory Show - Mostrare + Mostra Restore - Ripristinare + Ripristina Delete - Eliminare + Elimina Delete all - Eliminare tutti + Elimina tutti @@ -569,7 +574,7 @@ Vuoi salvare comunque? Repeat: - Ripetere: + Ripeti: Gen. @@ -585,7 +590,7 @@ Vuoi salvare comunque? Presets - Presets + Preimpostazioni Notes: @@ -624,7 +629,7 @@ Vuoi salvare comunque? Inherit from parent group (%1) - Ereditare dal gruppo genitore (%1) + Eredita dal gruppo genitore (%1) @@ -643,7 +648,7 @@ Vuoi salvare comunque? Search - Cercare + Cerca Auto-type @@ -651,30 +656,30 @@ Vuoi salvare comunque? Use default auto-type sequence of parent group - Ereditare la sequenza predefinita di auto-type dal gruppo + Eredita la sequenza predefinita di auto-type dal gruppo Set default auto-type sequence - Usare sequenza auto-type predefinita + Usa sequenza di auto-type predefinita EditWidgetIcons Use default icon - Usare icona predefinita + Usa icona predefinita Use custom icon - Usare icona personalizzata + Usa icona personalizzata Add custom icon - Aggiungere icona personalizzata + Aggiungi icona personalizzata Delete custom icon - Rimuovere icona personalizzata + Rimuovi icona personalizzata Images @@ -686,7 +691,7 @@ Vuoi salvare comunque? Select Image - Seleziona Immagine + Seleziona immagine Can't delete icon! @@ -694,18 +699,18 @@ Vuoi salvare comunque? Can't delete icon. Still used by %n item(s). - Impossibile eliminare l'icona in quanto è in uso da %n voce(i).Impossibile eliminare l'icona in quanto è in uso da %n voce(i). + Impossibile eliminare l'icona in quanto è in uso da %n voce.Impossibile eliminare l'icona in quanto è in uso da %n voci. EditWidgetProperties Created: - Creato: + Creazione: Modified: - Modificato: + Modifica: Accessed: @@ -713,7 +718,7 @@ Vuoi salvare comunque? Uuid: - Uuid: + UUID: @@ -754,7 +759,7 @@ Vuoi salvare comunque? Username - Nome Utente + Nome utente URL @@ -772,7 +777,7 @@ Vuoi salvare comunque? KeePass1OpenWidget Import KeePass1 database - Importare database KeePass1 + Importa database KeePass1 Error @@ -787,7 +792,7 @@ Vuoi salvare comunque? KeePass1Reader Unable to read keyfile. - Impossibile leggere il file chiave. + Impossibile leggere il file della chiave. Not a KeePass database. @@ -807,7 +812,7 @@ Vuoi salvare comunque? Unable to calculate master key - Impossibile calcolare la chiave master + Impossibile calcolare la chiave principale @@ -822,11 +827,21 @@ Vuoi salvare comunque? Wrong key or database file is corrupt. - Password errata o file database corrotto. + Chiave errata o file del database danneggiato. Unable to calculate master key - Impossibile calcolare la chiave master + Impossibile calcolare la chiave principale + + + The selected file is an old KeePass 1 database (.kdb). + +You can import it by clicking on Database > 'Import KeePass 1 database'. +This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version. + Il file selezionato è un vecchio database KeePass 1 (.kdb). + +Puoi importarlo facendo clic su Database > 'Importa database KeePass 1'. +Questa è una migrazione in una sola direzione. Non potrai aprire il database importato con la vecchia versione 0.4 di KeePassX. @@ -872,23 +887,23 @@ Vuoi salvare comunque? Quit - Uscire + Esci About - A Proposito + Informazioni Open database - Aprire database + Apri database Save database - Salvare database + Salva database Close database - Chiudere database + Chiudi database New database @@ -896,35 +911,35 @@ Vuoi salvare comunque? Add new entry - Aggiungere nuova voce + Aggiungi nuova voce View/Edit entry - Visualizzare/Modificare voce + Visualizza/modifica voce Delete entry - Eliminare voce + Elimina voce Add new group - Aggiungere nuovo gruppo + Aggiungi nuovo gruppo Edit group - Modificare gruppo + Modifica gruppo Delete group - Eliminare gruppo + Elimina gruppo Save database as - Salvare database come + Salva database come Change master key - Cambiare password principale + Cambia chiave principale Database settings @@ -932,7 +947,7 @@ Vuoi salvare comunque? Import KeePass 1 database - Importare database KeePass 1 + Importa database KeePass 1 Clone entry @@ -940,15 +955,15 @@ Vuoi salvare comunque? Find - Trovare + Trova Copy username to clipboard - Copiare nome utente negli appunti + Copia nome utente negli appunti Copy password to clipboard - Copiare password negli appunti + Copia password negli appunti Settings @@ -956,15 +971,15 @@ Vuoi salvare comunque? Perform Auto-Type - Eseguire Auto-Type + Esegui Auto-Type Open URL - Aprire URL + Apri URL Lock databases - Bloccare database + Blocca database Title @@ -1039,26 +1054,26 @@ Vuoi salvare comunque? Exclude look-alike characters - Escludere caratteri simili + Escludi caratteri simili Ensure that the password contains characters from every group - Assicurare che la password contenga caratteri di ogni gruppo + Verifica che la password contenga caratteri di ogni gruppo Accept - Accettare + Accetta QCommandLineParser Displays version information. - Mostrare informazioni sulla versione. + Mostra informazioni sulla versione. Displays this help. - Mostrare questo aiuto. + Mostra questo aiuto. Unknown option '%1'. @@ -1101,7 +1116,7 @@ Vuoi salvare comunque? Writing canceled by application - Scrittura cancellata dall'applicazione + Scrittura annullata dall'applicazione Partial write. Partition full? @@ -1146,7 +1161,7 @@ Vuoi salvare comunque? SearchWidget Find: - Trovare: + Trova: Case sensitive @@ -1184,23 +1199,23 @@ Vuoi salvare comunque? Open previous databases on startup - Aprire precedente database all'avvio + Apri il database precedente all'avvio Automatically save on exit - Salvare automaticamente all'uscita + Salva automaticamente all'uscita Automatically save after every change - Salvare automaticamente dopo ogni modifica + Salva automaticamente dopo ogni modifica Minimize when copying to clipboard - Minimizzare quando si copia negli appunti + Minimizza quando si copia negli appunti Use group icon on entry creation - Usare l'icona del gruppo alla creazione di una voce + Usa l'icona del gruppo alla creazione di una voce Global Auto-Type shortcut @@ -1208,7 +1223,7 @@ Vuoi salvare comunque? Use entry title to match windows for global auto-type - Utilizzare il titolo della voce per abbinare la finestra per auto-type globale + Utilizza il titolo della voce per abbinare la finestra per auto-type globale Language @@ -1224,14 +1239,14 @@ Vuoi salvare comunque? Remember last key files - Ricorda gli ultimi files chiave + Ricorda gli ultimi file di chiavi SettingsWidgetSecurity Clear clipboard after - Pulire appunti dopo + Pulisci appunti dopo sec @@ -1239,22 +1254,22 @@ Vuoi salvare comunque? Lock databases after inactivity of - Bloccare i database dopo un'inattività di + Blocca i database dopo un'inattività di Show passwords in cleartext by default - Mostrare la password in chiaro in maniera predefinita + Mostra la password in chiaro in maniera predefinita Always ask before performing auto-type - Chiedere sempre prima di eseguire auto-type + Chiedi sempre prima di eseguire auto-type UnlockDatabaseWidget Unlock database - Sbloccare database + Sblocca database @@ -1272,7 +1287,7 @@ Vuoi salvare comunque? filename of the password database to open (*.kdbx) - nome del file del database da aprire (*.kdbx) + nome del file di database da aprire (*.kdbx) path to a custom config file diff --git a/share/translations/keepassx_sv.ts b/share/translations/keepassx_sv.ts index bafb1c109..ff8126c58 100644 --- a/share/translations/keepassx_sv.ts +++ b/share/translations/keepassx_sv.ts @@ -13,6 +13,10 @@ Revision Revision + + Using: + Använder: + AutoType @@ -291,7 +295,7 @@ Vill du öppna den ändå? Databasen kommer då att öppnas skrivskyddad. Can't lock the database as you are currently editing it. Please press cancel to finish your changes or discard them. - Kan inte låsa databasen eftersom du håller på att redigera den. + Kan inte låsa databasen eftersom du håller på att redigera den. Tryck avbryt för att ansluta dina ändringar alternativt kasta dem. @@ -829,6 +833,13 @@ Vill du spara endå? Unable to calculate master key Kunde inte räkna nu master-nyckeln + + The selected file is an old KeePass 1 database (.kdb). + +You can import it by clicking on Database > 'Import KeePass 1 database'. +This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version. + + Main @@ -849,7 +860,7 @@ Vill du spara endå? Recent databases - Senast använda databser + Senast använda databaser Help @@ -1185,11 +1196,11 @@ Vill du spara endå? Open previous databases on startup - Öppna senaste databasen är programmet startar + Öppna senaste databasen när programmet startar Automatically save on exit - Spara automatiskt är applikationen anslutas + Spara automatiskt när applikationen anslutas Automatically save after every change diff --git a/share/translations/keepassx_uk.ts b/share/translations/keepassx_uk.ts index 2b4774ee6..18d124a18 100644 --- a/share/translations/keepassx_uk.ts +++ b/share/translations/keepassx_uk.ts @@ -13,6 +13,10 @@ Revision Ревізія + + Using: + Використання: + AutoType @@ -828,6 +832,16 @@ Do you want to save it anyway? Unable to calculate master key Неможливо вирахувати майстер-пароль + + The selected file is an old KeePass 1 database (.kdb). + +You can import it by clicking on Database > 'Import KeePass 1 database'. +This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version. + Обрано файл сховища попередньої версії KeePass 1 (.kdb). + +Ви можете імпортувати його, натиснувши Сховище > 'Імпортувати сховище KeePass 1'. +Це односторонній спосіб міграції. Ви не зможете відкрити імпортоване сховище в попередній версії KeePassX 0.4. + Main From 00f068b93eff93ffa5399ce599b2f672f4f5c905 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 31 Jan 2016 20:00:44 +0100 Subject: [PATCH 07/12] Fix typo in changelog. --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 9c890a1c3..8418ee7bf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,7 +4,7 @@ - Flush temporary file before opening attachment. [#390] - Disable password generator when showing entry in history mode. [#422] - Strip invalid XML chars when writing databases. [#392] -- Add repair function to fix databses with invalid XML chars. [#392] +- Add repair function to fix databases with invalid XML chars. [#392] - Display custom icons scaled. [#322] - Allow opening databases that have no password and keyfile. [#391] - Fix crash when importing .kdb files with invalid icon ids. [#425] From 8a92cec03f3f97bfb74680a946345cc784b7b587 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Tue, 2 Feb 2016 00:38:58 +0100 Subject: [PATCH 08/12] Keep valid surrogate pairs in stripInvalidXml10Chars(). --- src/format/KeePass2XmlWriter.cpp | 16 +++++++--- tests/TestKeePass2XmlReader.cpp | 54 ++++++++++++++++++++++++++++++-- tests/TestKeePass2XmlReader.h | 1 + 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/format/KeePass2XmlWriter.cpp b/src/format/KeePass2XmlWriter.cpp index 0d83935a0..1eb8dc114 100644 --- a/src/format/KeePass2XmlWriter.cpp +++ b/src/format/KeePass2XmlWriter.cpp @@ -552,11 +552,19 @@ QString KeePass2XmlWriter::colorPartToString(int value) QString KeePass2XmlWriter::stripInvalidXml10Chars(QString str) { for (int i = str.size() - 1; i >= 0; i--) { - const ushort uc = str.at(i).unicode(); + const QChar ch = str.at(i); + const ushort uc = ch.unicode(); - if ((uc < 0x20 && uc != 0x09 && uc != 0x0A && uc != 0x0D) - || (uc > 0xD7FF && uc < 0xE000) - || (uc > 0xFFFD)) + if (ch.isLowSurrogate() && i != 0 && str.at(i - 1).isHighSurrogate()) { + // keep valid surrogate pair + i--; + } + else if ((uc < 0x20 && uc != 0x09 && uc != 0x0A && uc != 0x0D) // control chracters + || (uc >= 0x7F && uc <= 0x84) // control chracters, valid but discouraged by XML + || (uc >= 0x86 && uc <= 0x9F) // control chracters, valid but discouraged by XML + || (uc > 0xFFFD) // noncharacter + || ch.isLowSurrogate() // single low surrogate + || ch.isHighSurrogate()) // single high surrogate { qWarning("Stripping invalid XML 1.0 codepoint %x", uc); str.remove(i, 1); diff --git a/tests/TestKeePass2XmlReader.cpp b/tests/TestKeePass2XmlReader.cpp index f8ca29614..dd8132708 100644 --- a/tests/TestKeePass2XmlReader.cpp +++ b/tests/TestKeePass2XmlReader.cpp @@ -68,6 +68,18 @@ QDateTime TestKeePass2XmlReader::genDT(int year, int month, int day, int hour, i return QDateTime(date, time, Qt::UTC); } +QByteArray TestKeePass2XmlReader::strToBytes(const QString& str) +{ + QByteArray result; + + for (int i = 0; i < str.size(); i++) { + result.append(str.at(i).unicode() >> 8); + result.append(str.at(i).unicode() & 0xFF); + } + + return result; +} + void TestKeePass2XmlReader::initTestCase() { QVERIFY(Crypto::init()); @@ -414,10 +426,35 @@ void TestKeePass2XmlReader::testInvalidXmlChars() { QScopedPointer dbWrite(new Database()); + QString strPlainInvalid = QString().append(QChar(0x02)).append(QChar(0x19)) + .append(QChar(0xFFFE)).append(QChar(0xFFFF)); + QString strPlainValid = QString().append(QChar(0x09)).append(QChar(0x0A)) + .append(QChar(0x20)).append(QChar(0xD7FF)) + .append(QChar(0xE000)).append(QChar(0xFFFD)); + // U+10437 in UTF-16: D801 DC37 + // high low surrogate + QString strSingleHighSurrogate1 = QString().append(QChar(0xD801)); + QString strSingleHighSurrogate2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0x32)); + QString strHighHighSurrogate = QString().append(QChar(0xD801)).append(QChar(0xD801)); + QString strSingleLowSurrogate1 = QString().append(QChar(0xDC37)); + QString strSingleLowSurrogate2 = QString().append(QChar((0x31))).append(QChar(0xDC37)).append(QChar(0x32)); + QString strLowLowSurrogate = QString().append(QChar(0xDC37)).append(QChar(0xDC37)); + QString strSurrogateValid1 = QString().append(QChar(0xD801)).append(QChar(0xDC37)); + QString strSurrogateValid2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0xDC37)).append(QChar(0x32)); + Entry* entry = new Entry(); entry->setUuid(Uuid::random()); - entry->setNotes(QString("a %1 b %2 c %3").arg(QChar(0x02)).arg(QChar(0xD800)).arg(QChar(0xFFFE))); entry->setGroup(dbWrite->rootGroup()); + entry->attributes()->set("PlainInvalid", strPlainInvalid); + entry->attributes()->set("PlainValid", strPlainValid); + entry->attributes()->set("SingleHighSurrogate1", strSingleHighSurrogate1); + entry->attributes()->set("SingleHighSurrogate2", strSingleHighSurrogate2); + entry->attributes()->set("HighHighSurrogate", strHighHighSurrogate); + entry->attributes()->set("SingleLowSurrogate1", strSingleLowSurrogate1); + entry->attributes()->set("SingleLowSurrogate2", strSingleLowSurrogate2); + entry->attributes()->set("LowLowSurrogate", strLowLowSurrogate); + entry->attributes()->set("SurrogateValid1", strSurrogateValid1); + entry->attributes()->set("SurrogateValid2", strSurrogateValid2); QBuffer buffer; buffer.open(QIODevice::ReadWrite); @@ -435,8 +472,19 @@ void TestKeePass2XmlReader::testInvalidXmlChars() QVERIFY(!reader.hasError()); QVERIFY(!dbRead.isNull()); QCOMPARE(dbRead->rootGroup()->entries().size(), 1); - // check that the invalid codepoints have been stripped - QCOMPARE(dbRead->rootGroup()->entries().first()->notes(), QString("a b c ")); + Entry* entryRead = dbRead->rootGroup()->entries().at(0); + EntryAttributes* attrRead = entryRead->attributes(); + + QCOMPARE(strToBytes(attrRead->value("PlainInvalid")), QByteArray()); + QCOMPARE(strToBytes(attrRead->value("PlainValid")), strToBytes(strPlainValid)); + QCOMPARE(strToBytes(attrRead->value("SingleHighSurrogate1")), QByteArray()); + QCOMPARE(strToBytes(attrRead->value("SingleHighSurrogate2")), strToBytes(QString("12"))); + QCOMPARE(strToBytes(attrRead->value("HighHighSurrogate")), QByteArray()); + QCOMPARE(strToBytes(attrRead->value("SingleLowSurrogate1")), QByteArray()); + QCOMPARE(strToBytes(attrRead->value("SingleLowSurrogate2")), strToBytes(QString("12"))); + QCOMPARE(strToBytes(attrRead->value("LowLowSurrogate")), QByteArray()); + QCOMPARE(strToBytes(attrRead->value("SurrogateValid1")), strToBytes(strSurrogateValid1)); + QCOMPARE(strToBytes(attrRead->value("SurrogateValid2")), strToBytes(strSurrogateValid2)); } void TestKeePass2XmlReader::cleanupTestCase() diff --git a/tests/TestKeePass2XmlReader.h b/tests/TestKeePass2XmlReader.h index 815dbcd65..b9be7b553 100644 --- a/tests/TestKeePass2XmlReader.h +++ b/tests/TestKeePass2XmlReader.h @@ -47,6 +47,7 @@ private Q_SLOTS: private: static QDateTime genDT(int year, int month, int day, int hour, int min, int second); + static QByteArray strToBytes(const QString& str); Database* m_db; }; From 208b803fbe337f36bc334751426fd459cf6f239a Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Tue, 2 Feb 2016 00:41:16 +0100 Subject: [PATCH 09/12] Fix KeePass2Repair to retain multi-byte UTF-8 chars. Since char is (often) unsigned the ch < 0x20 check matched all multi-byte encoded UTF-8 chars. --- src/format/KeePass2Repair.cpp | 2 +- tests/TestKeePass2Writer.cpp | 4 ++-- tests/data/bug392.kdbx | Bin 1374 -> 1374 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/format/KeePass2Repair.cpp b/src/format/KeePass2Repair.cpp index 4eff3d806..f435a7d51 100644 --- a/src/format/KeePass2Repair.cpp +++ b/src/format/KeePass2Repair.cpp @@ -66,7 +66,7 @@ KeePass2Repair::RepairResult KeePass2Repair::repairDatabase(QIODevice* device, c // try to fix broken databases because of bug #392 for (int i = (xmlData.size() - 1); i >= 0; i--) { - char ch = xmlData.at(i); + quint8 ch = static_cast(xmlData.at(i)); if (ch < 0x20 && ch != 0x09 && ch != 0x0A && ch != 0x0D) { xmlData.remove(i, 1); repairAction = true; diff --git a/tests/TestKeePass2Writer.cpp b/tests/TestKeePass2Writer.cpp index 638d4002e..1c7b5f70c 100644 --- a/tests/TestKeePass2Writer.cpp +++ b/tests/TestKeePass2Writer.cpp @@ -133,7 +133,7 @@ void TestKeePass2Writer::testRepair() { QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx"); // master password = test - // entry username: testuser\x10 + // entry username: testuser\x10\x20AC // entry password: testpw CompositeKey key; key.addKey(PasswordKey("test")); @@ -153,7 +153,7 @@ void TestKeePass2Writer::testRepair() QVERIFY(dbRepaired); QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1); - QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser")); + QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(0x20AC)); QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw")); } diff --git a/tests/data/bug392.kdbx b/tests/data/bug392.kdbx index c649f8dc240e704f65b36e7127144e75cc77a10b..0953d86775c83ed5b7976d59c2c8eda360b4521d 100644 GIT binary patch delta 1350 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 Date: Tue, 2 Feb 2016 00:57:28 +0100 Subject: [PATCH 10/12] Explicitly cast char constant to QChar. --- tests/TestKeePass2Writer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TestKeePass2Writer.cpp b/tests/TestKeePass2Writer.cpp index 1c7b5f70c..c87279454 100644 --- a/tests/TestKeePass2Writer.cpp +++ b/tests/TestKeePass2Writer.cpp @@ -153,7 +153,7 @@ void TestKeePass2Writer::testRepair() QVERIFY(dbRepaired); QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1); - QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(0x20AC)); + QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(QChar(0x20AC))); QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw")); } From 49f58b4ed8ce236103ee40fc33c199ecf1075e69 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Tue, 2 Feb 2016 01:21:39 +0100 Subject: [PATCH 11/12] Prepare 2.0.2 release. --- CHANGELOG | 7 +++++++ CMakeLists.txt | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8418ee7bf..13194ac71 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,10 @@ +2.0.2 (2016-02-02) +========================= + +- Fix regression in database writer that caused it to strip certain special + chracters (characters from Unicode plane > 0). +- Fix bug in repair function that caused it to strip non-ASCII characters. + 2.0.1 (2016-01-31) ========================= diff --git a/CMakeLists.txt b/CMakeLists.txt index 0b8899801..6df550325 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,8 +33,8 @@ option(WITH_TESTS "Enable building of unit tests" ON) option(WITH_GUI_TESTS "Enable building of GUI tests" OFF) option(WITH_CXX11 "Build with the C++ 11 standard" ON) -set(KEEPASSX_VERSION "2.0.1") -set(KEEPASSX_VERSION_NUM "2.0.1") +set(KEEPASSX_VERSION "2.0.2") +set(KEEPASSX_VERSION_NUM "2.0.2") if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_COMPILER_IS_CLANG 1) From 3679b2170142c14362fa75e990ef85b80b1b1b46 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Tue, 2 Feb 2016 01:22:48 +0100 Subject: [PATCH 12/12] Fix typo in changelog. --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 13194ac71..14d193576 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,7 +2,7 @@ ========================= - Fix regression in database writer that caused it to strip certain special - chracters (characters from Unicode plane > 0). + characters (characters from Unicode plane > 0). - Fix bug in repair function that caused it to strip non-ASCII characters. 2.0.1 (2016-01-31)