Merge branch 'feature/Duplicate_UUID_Database1' into develop

This commit is contained in:
J-Jamet
2019-12-31 11:23:44 +01:00
4 changed files with 15 additions and 12 deletions

View File

@@ -363,7 +363,7 @@ class Database {
when {
// Header of database KDB
DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(DatabaseInputKDB()
DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(DatabaseInputKDB(fixDuplicateUUID)
.openDatabase(bufferedInputStream,
password,
keyFileInputStream,

View File

@@ -74,7 +74,7 @@ import java.util.Arrays
/**
* Load a KDB database file.
*/
class DatabaseInputKDB : DatabaseInput<DatabaseKDB>() {
class DatabaseInputKDB(private val fixDuplicateUUID: Boolean = false) : DatabaseInput<DatabaseKDB>() {
private lateinit var mDatabaseToOpen: DatabaseKDB
@@ -107,6 +107,8 @@ class DatabaseInputKDB : DatabaseInput<DatabaseKDB>() {
progressTaskUpdater?.updateMessage(R.string.retrieving_db_key)
mDatabaseToOpen = DatabaseKDB()
mDatabaseToOpen.changeDuplicateId = fixDuplicateUUID
mDatabaseToOpen.retrieveMasterKey(password, keyInputStream)
// Select algorithm

View File

@@ -20,6 +20,7 @@
package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.database.element.entry.EntryKDB
import com.kunzisoft.keepass.database.file.output.GroupOutputKDB.Companion.GROUPID_FIELD_SIZE
import com.kunzisoft.keepass.stream.LEDataOutputStream
import com.kunzisoft.keepass.utils.DatabaseInputOutputUtils
@@ -51,12 +52,12 @@ class EntryOutputKDB
// Group ID
mOutputStream.write(GROUPID_FIELD_TYPE)
mOutputStream.write(LONG_FOUR)
mOutputStream.write(GROUPID_FIELD_SIZE)
mOutputStream.write(LEDataOutputStream.writeIntBuf(mEntry.parent!!.id))
// Image ID
mOutputStream.write(IMAGEID_FIELD_TYPE)
mOutputStream.write(LONG_FOUR)
mOutputStream.write(IMAGEID_FIELD_SIZE)
mOutputStream.write(LEDataOutputStream.writeIntBuf(mEntry.icon.iconId))
// Title
@@ -138,12 +139,12 @@ class EntryOutputKDB
val BINARY_DESC_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(13)
val BINARY_DATA_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(14)
val END_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(0xFFFF)
val LONG_FOUR:ByteArray = LEDataOutputStream.writeIntBuf(4)
val UUID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(16)
val DATE_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(5)
val IMAGEID_FIELD_SIZE:ByteArray = LONG_FOUR
val LEVEL_FIELD_SIZE:ByteArray = LONG_FOUR
val FLAGS_FIELD_SIZE:ByteArray = LONG_FOUR
val IMAGEID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
val LEVEL_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
val FLAGS_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
val ZERO_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(0)
val ZERO_FIVE:ByteArray = byteArrayOf(0x00, 0x00, 0x00, 0x00, 0x00)
}

View File

@@ -96,12 +96,12 @@ class GroupOutputKDB (private val mGroup: GroupKDB, private val mOutputStream: O
val LEVEL_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(8)
val FLAGS_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(9)
val END_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(0xFFFF)
val LONG_FOUR:ByteArray = LEDataOutputStream.writeIntBuf(4)
val GROUPID_FIELD_SIZE:ByteArray = LONG_FOUR
val GROUPID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
val DATE_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(5)
val IMAGEID_FIELD_SIZE:ByteArray = LONG_FOUR
val IMAGEID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
val LEVEL_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(2)
val FLAGS_FIELD_SIZE:ByteArray = LONG_FOUR
val FLAGS_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
val ZERO_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(0)
}