Skip to content

Commit 5c824a2

Browse files
committed
fix(knowledge): reject non-alphanumeric file extensions from document names
1 parent 271624a commit 5c824a2

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

apps/sim/lib/knowledge/documents/parser-extension.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,8 @@ export function resolveParserExtension(
2929
mimeType?: string,
3030
fallback?: string
3131
): string {
32-
const filenameExtension = filename.includes('.')
33-
? filename.split('.').pop()?.toLowerCase()
34-
: undefined
32+
const raw = filename.includes('.') ? filename.split('.').pop()?.toLowerCase() : undefined
33+
const filenameExtension = raw && /^[a-z0-9]+$/.test(raw) ? raw : undefined
3534

3635
if (filenameExtension && isSupportedParserExtension(filenameExtension)) {
3736
return filenameExtension

apps/sim/lib/uploads/utils/validation.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ export interface FileValidationError {
137137
* Validate if a file type is supported for document processing
138138
*/
139139
export function validateFileType(fileName: string, mimeType: string): FileValidationError | null {
140-
const extension = path.extname(fileName).toLowerCase().substring(1) as SupportedDocumentExtension
140+
const raw = path.extname(fileName).toLowerCase().substring(1)
141+
const extension = (/^[a-z0-9]+$/.test(raw) ? raw : '') as SupportedDocumentExtension
141142

142143
if (!SUPPORTED_DOCUMENT_EXTENSIONS.includes(extension)) {
143144
return {
@@ -221,7 +222,8 @@ export function validateMediaFileType(
221222
fileName: string,
222223
mimeType: string
223224
): FileValidationError | null {
224-
const extension = path.extname(fileName).toLowerCase().substring(1)
225+
const raw = path.extname(fileName).toLowerCase().substring(1)
226+
const extension = /^[a-z0-9]+$/.test(raw) ? raw : ''
225227

226228
const isAudio = SUPPORTED_AUDIO_EXTENSIONS.includes(extension as SupportedAudioExtension)
227229
const isVideo = SUPPORTED_VIDEO_EXTENSIONS.includes(extension as SupportedVideoExtension)

0 commit comments

Comments
 (0)