Allow references to be part of a field#1649
Merged
TheZ3ro merged 1 commit intokeepassxreboot:release/2.3.1from Mar 5, 2018
salsifis:release/2.3.1
Merged
Allow references to be part of a field#1649TheZ3ro merged 1 commit intokeepassxreboot:release/2.3.1from salsifis:release/2.3.1
TheZ3ro merged 1 commit intokeepassxreboot:release/2.3.1from
salsifis:release/2.3.1
Conversation
When a field value is of the form ...{REF:...}...
Then:
* Auto-type does not work with that field
* References to this field are not properly resolved
This commit fixes both issues.
TheZ3ro
approved these changes
Mar 5, 2018
Contributor
TheZ3ro
left a comment
There was a problem hiding this comment.
We need to refactor this code in 2.4.
Anyway thanks for the contribution!
(I will add tests after merging this, seems strange that we didn't caught this)
phoerious
added a commit
that referenced
this pull request
Mar 6, 2018
- Fix unnecessary automatic upgrade to KDBX 4.0 and prevent challenge-response key being stripped [#1568] - Abort saving and show an error message when challenge-response fails [#1659] - Support inner stream protection on all string attributes [#1646] - Fix favicon downloads not finishing on some websites [#1657] - Fix freeze due to invalid STDIN data [#1628] - Correct issue with encrypted RSA SSH keys [#1587] - Fix crash on macOS due to QTBUG-54832 [#1607] - Show error message if ssh-agent communication fails [#1614] - Fix --pw-stdin and filename parameters being ignored [#1608] - Fix Auto-Type syntax check not allowing spaces and special characters [#1626] - Fix reference placeholders in combination with Auto-Type [#1649] - Fix qtbase translations not being loaded [#1611] - Fix startup crash on Windows due to missing SVG libraries [#1662] - Correct database tab order regression [#1610] - Fix GCC 8 compilation error [#1612] - Fix copying of advanced attributes on KDE [#1640] - Fix member initialization of CategoryListWidgetDelegate [#1613] - Fix inconsistent toolbar icon sizes and provide higher-quality icons [#1616] - Improve preview panel geometry [#1609]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently, when a field value contains a reference plus other things, then:
This commit fixes both issues.
Description
When editing database entries, one can use placeholders such as
{USERNAME},{PASSWORD},{URL:HOST}(these will typically be used in auto-type patterns), but also reference placeholders like{REF:x@y:zzzz}, that indicate to use a value from a given field in a given entry.The function
resolvePlaceholderRecursive, will attempt to replace a placeholder with the final value it points to. It calls itself if the resulting value consists of a placeholder, such as reference to reference is also supported. However when the resulting value contains a placeholder, it fails to replace it because it expects its input to span over a single placeholder.For example, if an entry contains
{USERNAME}in the auto-type pattern, when performing auto-type,resolvePlaceholderRecursivewill be called with{USERNAME}as a parameter. After expansion, it can result in something like{REF:U@I:xxxx-…}@baz.com, and the function would call itself again. This time however, the input string would not be recognized as a valid placeholder, and therefore is returned without further expansion.The fix is to call
resolveMultiplePlaceholdersRecursiveinstead in the recursion step, such that the string is parsed again in order to look for placeholders.Motivation and context
This change fixes auto-type for entries in which an auto-typed field contains a reference to another entry field. For example a base entry with login information, and a derived entry with more complete login for use in a certain setup, prefixed with domain for example.
How has this been tested?
I only tested that my use case was fixed.
Types of changes
Checklist:
-DWITH_ASAN=ON. [REQUIRED]Post-scriptum
Sorry for the initial, non-conformant, pull request.