Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ampersand in database name not sanitized for tab #1389

Closed
M-Pixel opened this issue Jan 16, 2018 · 1 comment · Fixed by #2491
Closed

Ampersand in database name not sanitized for tab #1389

M-Pixel opened this issue Jan 16, 2018 · 1 comment · Fixed by #2491

Comments

@M-Pixel
Copy link

M-Pixel commented Jan 16, 2018

Expected Behavior

When I enter "This & That" as the name of a database, and have multiple databases open, "This & That" will appear in the database's tab.

Current Behavior

When I enter "This & That" as the name of a database, and have multiple databases open "This _That" will appear in the database's tab.

When I enter "This && That" (wild guess) as the name of a database, and have multiple databases open, "This & That" appears in the database's tab, but "T&his && That" appears in the window title, and other databases' window titles also start showing a "&" prefix.

Debug Info

KeePassXC - Version 2.2.4
Revision: 4723f66

Libraries:

  • Qt 5.6.2
  • libgcrypt 1.6.1

Operating system: openSUSE Leap 42.3
CPU architecture: x86_64
Kernel: linux 4.4.107-2.g30f32ac-default

Enabled extensions:

  • KeePassHTTP
  • Auto-Type
  • YubiKey

Installed via Zypper

@phoerious
Copy link
Member

There is also a whole other level of problems with ampersands and multiple tabs here, because KDE tends to insert some on its own which are then read back and put in the window title. We need to refractor the complete database tab handling, but that won't happen before 2.4.

phoerious added a commit that referenced this issue Nov 22, 2018
The Database, DatabaseWidget, and DatabaseTabWidget classes share many responsibilities in inconsistent ways resulting in impenetrable and unmaintainable code and a diverse set of bugs and architecture restrictions. This patch reworks the architecture, responsibilities of, and dependencies between these classes.

The core changes are:

* Move loading and saving logic from widgets into the Database class
* Get rid of the DatabaseManagerStruct and move all the information contained in it into the Database
* Let database objects keep track of modifications and dirty/clean state instead of handing this to external widgets
* Move GUI interactions for loading and saving from the DatabaseTabWidget into the DatabaseWidget (resolves #2494 as a side-effect)
* Heavily clean up DatabaseTabWidget and degrade it to a slightly glorified QTabWidget
* Use QSharedPointers for all Database objects
* Remove the modifiedImmediate signal and replace it with a markAsModified() method
* Implement proper tabName() method instead of reading back titles from GUI widgets (resolves #1389 and its duplicates #2146 #855)
* Fix unwanted AES-KDF downgrade if database uses Argon2 and has CustomData
* Improve code

This patch is also the first major step towards solving issues #476 and #2322.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants