use getSymbolicLinkStatus not getFileStatus to avoid crash on broken symlink
Fix crash importing from a directory special remote that contains a broken symlink. The crash was in listImportableContentsM but some other places in Remote.Directory also seemed like they could have the same problem. Also audited for other places that have such a problem. Not all calls to getFileStatus are bad, in some cases it's better to crash on something unexpected. For example, `git-annex import path` when the path is a broken symlink should crash, the same as when it does not exist. Many of the getFileStatus calls are like that, particularly when they involve .git/annex/objects which should never have a broken symlink in it. Fixed a few other possible cases of the problem. Sponsored-by: Lawrence Brogan on Patreon
This commit is contained in:
parent
600d3f7141
commit
8a4cfd4f2d
10 changed files with 26 additions and 15 deletions
|
@ -184,7 +184,8 @@ remove ddarrepo key = do
|
|||
ddarDirectoryExists :: DdarRepo -> Annex (Either String Bool)
|
||||
ddarDirectoryExists ddarrepo
|
||||
| ddarLocal ddarrepo = do
|
||||
maybeStatus <- liftIO $ tryJust (guard . isDoesNotExistError) $ getFileStatus $ ddarRepoLocation ddarrepo
|
||||
maybeStatus <- liftIO $ tryJust (guard . isDoesNotExistError) $
|
||||
getSymbolicLinkStatus $ ddarRepoLocation ddarrepo
|
||||
return $ case maybeStatus of
|
||||
Left _ -> Right False
|
||||
Right status -> Right $ isDirectory status
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue