Skip to content

Entry title was splitted in 2 parts; one for dir and one part for filename #55

@christian-weiss

Description

@christian-weiss

I tried to import a keepass 2.38 XML file with 1200+ entries.

Representation in XML:
<Value>Apple ID (für iTunes / iPhone)</Value>

Was imported as a directory with the name "Apple ID (für iTunes " (incl. trailing space),
and as file name " iPhone)" (incl. leading space).

Sure "/" has a special meaning on unix/linux filesystems, it should be converted e.g. to "-" (or another allowed character). From semantic standpoint a single entry should be imported as a single filesytem entry (not as 1x dir + 1x file).

If you do not want to do conversion by default you should skip that entry with a warning and have at least a "--force-import" and "--convert" command line option.

I discovered alot of other issues related to naming and filesystem. I used keepass/keepassX on Ubuntu, MacOS, Windows7, Windows10, iPhone and Android and i used pass (with QtPass) for the same set of devices and OS. This means that i have to take care about interoperability. While pass is file base, it means that it is limited by filesystem restrictions (special chars) opposed to other password managers (database based). Sadly pass itself do not print warning for interoperability issues, and one can get used with that when creating new passwords. But when dealing with old passwords (that do not have to deal with limitations in the past) then the situation is worse - especially on 1200+ passwords.

That means the importer should at least warn on interoperability issues (and should provide a option to convert it on import). Current git version of pass-import could lead to problems when i import e.g. on Ubuntu and then try to "git pull" password store on a windows system.

Not allowed on windows:

< (less than)
> (greater than)
: (colon - sometimes works, but is actually NTFS Alternate Data Streams)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
ASCII 0-31
can not end with spaces / dots
some filenames are not allowed: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9

Not allowed on linux:

/ (forward slash)
ASCII 0 (null bypte)
(should not start with dot)

Fore sure you can not cover all possible filesystems and all filesystem limitations but above should cover most problematic once.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions