mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
Desktop, Cli: Fixes #9548: Import ENEX archives that contain files with invalid names
This commit is contained in:
parent
cec5f1f3ba
commit
bf907f21c4
File diff suppressed because one or more lines are too long
@ -206,4 +206,12 @@ describe('import-enex-md-gen', () => {
|
||||
expect(resource.title).toBe('app_images/resizable/961b875f-24ac-402f-9b76-37e2d4f03a6c/house_500.jpg.png');
|
||||
});
|
||||
|
||||
it('should sanitize resource filenames with colons', async () => {
|
||||
await importEnexFile('resource_filename_with_colons.enex');
|
||||
const resource: ResourceEntity = (await Resource.all())[0];
|
||||
expect(resource.filename).toBe('08.06.2014165855');
|
||||
expect(resource.file_extension).toBe('2014165855');
|
||||
expect(resource.title).toBe('08.06.2014 16:58:55');
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -9,7 +9,7 @@ import shim from './shim';
|
||||
import { NoteEntity, ResourceEntity } from './services/database/types';
|
||||
import { enexXmlToMd } from './import-enex-md-gen';
|
||||
import { MarkupToHtml } from '@joplin/renderer';
|
||||
import { fileExtension, friendlySafeFilename } from './path-utils';
|
||||
import { fileExtension, friendlySafeFilename, safeFileExtension } from './path-utils';
|
||||
const moment = require('moment');
|
||||
const { wrapError } = require('./errorUtils');
|
||||
const { enexXmlToHtml } = require('./import-enex-html-gen.js');
|
||||
@ -208,7 +208,7 @@ async function saveNoteResources(note: ExtractedNote) {
|
||||
delete (toSave as any).dataFilePath;
|
||||
delete (toSave as any).dataEncoding;
|
||||
delete (toSave as any).hasData;
|
||||
toSave.file_extension = resource.filename ? fileExtension(resource.filename) : '';
|
||||
toSave.file_extension = resource.filename ? safeFileExtension(fileExtension(resource.filename)) : '';
|
||||
|
||||
// ENEX resource filenames can contain slashes, which may confuse other
|
||||
// parts of the app, which expect this `filename` field to be safe.
|
||||
|
@ -39,6 +39,9 @@ export function isHidden(path: string) {
|
||||
return b[0] === '.';
|
||||
}
|
||||
|
||||
// Note that this function only sanitizes a file extension - it does NOT extract
|
||||
// the file extension from a filename. So the way you'd normally call this is
|
||||
// `safeFileExtension(fileExtension(filename))`
|
||||
export function safeFileExtension(e: string, maxLength: number = null) {
|
||||
// In theory the file extension can have any length but in practice Joplin
|
||||
// expects a fixed length, so we limit it to 20 which should cover most cases.
|
||||
|
Loading…
Reference in New Issue
Block a user