diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 989887b4a..ed8395922 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -929,8 +929,11 @@ genericFileField mkOpts = Field{..} handleFile | doUnpack = sourceFiles | otherwise = yieldM . acceptFile + invalidUploadExtension fName + = not (permittedExtension opts fName) + && (not doUnpack || ((/=) `on` simpleContentType) (mimeLookup fName) typeZip) - if | invExt : _ <- filter (not . permittedExtension opts) uploadedFilenames + if | invExt : _ <- filter invalidUploadExtension uploadedFilenames -> do liftHandler . runDB . runConduit $ mapM_ (transPipe lift . handleFile) files