LIB: normalize instead of canonicalizePath'

We shouldn't follow symlinks in our internal paths, because that makes
us lose information. However, we normalize where we could have passed
user input, so we don't end up with ill-formed anchors/names.
This commit is contained in:
Julian Ospald 2015-12-25 15:18:05 +01:00
parent b9e4b96c4a
commit c98db302ba
No known key found for this signature in database
GPG Key ID: 220CD1C5BDEED020

View File

@ -390,7 +390,7 @@ readFileWith ff p = do
readFile :: FilePath -> IO (AnchoredFile FileInfo) readFile :: FilePath -> IO (AnchoredFile FileInfo)
readFile fp = readFileWith getFileInfo =<< canonicalizePath' fp readFile fp = readFileWith getFileInfo $ normalize fp
-- |Build a list of AnchoredFile, given the path to a directory, filling -- |Build a list of AnchoredFile, given the path to a directory, filling
@ -398,7 +398,7 @@ readFile fp = readFileWith getFileInfo =<< canonicalizePath' fp
-- directories. -- directories.
readDirectory :: FilePath -> IO [AnchoredFile FileInfo] readDirectory :: FilePath -> IO [AnchoredFile FileInfo]
readDirectory fp = readDirectoryWith getAllDirsFiles getFileInfo readDirectory fp = readDirectoryWith getAllDirsFiles getFileInfo
=<< canonicalizePath' fp $ normalize fp
-- |Build a list of AnchoredFile, given the path to a directory, filling -- |Build a list of AnchoredFile, given the path to a directory, filling
@ -406,7 +406,7 @@ readDirectory fp = readDirectoryWith getAllDirsFiles getFileInfo
-- directories. -- directories.
readDirectory' :: FilePath -> IO [AnchoredFile FileInfo] readDirectory' :: FilePath -> IO [AnchoredFile FileInfo]
readDirectory' fp = readDirectoryWith getDirsFiles getFileInfo readDirectory' fp = readDirectoryWith getDirsFiles getFileInfo
=<< canonicalizePath' fp $ normalize fp
-- | same as readDirectory but allows us to, for example, use -- | same as readDirectory but allows us to, for example, use
@ -416,7 +416,7 @@ readDirectoryWith :: (FilePath -> IO [FilePath])
-> FilePath -> FilePath
-> IO [AnchoredFile a] -> IO [AnchoredFile a]
readDirectoryWith getfiles ff p = do readDirectoryWith getfiles ff p = do
contents <- getfiles =<< canonicalizePath' p contents <- getfiles $ normalize p
cs <- mapM (\x -> readFileWith ff $ p </> x) contents cs <- mapM (\x -> readFileWith ff $ p </> x) contents
return $ removeNonexistent cs return $ removeNonexistent cs
@ -576,7 +576,7 @@ goUp (bp :/ _) = Data.DirTree.readFile bp
-- |Go up one directory in the filesystem hierarchy. -- |Go up one directory in the filesystem hierarchy.
goUp' :: FilePath -> IO (AnchoredFile FileInfo) goUp' :: FilePath -> IO (AnchoredFile FileInfo)
goUp' fp = do goUp' fp = do
cfp <- canonicalizePath' fp let cfp = normalize fp
Data.DirTree.readFile $ baseDir cfp Data.DirTree.readFile $ baseDir cfp