Fix shell escaping in rsync special remote.
This commit is contained in:
parent
50edbb03eb
commit
45bbf210a1
3 changed files with 14 additions and 4 deletions
|
@ -93,10 +93,13 @@ rsyncSetup u c = do
|
|||
return c'
|
||||
|
||||
rsyncKey :: RsyncOpts -> Key -> String
|
||||
rsyncKey o k = rsyncUrl o </> hashDirMixed k </> f </> f
|
||||
rsyncKey o k = rsyncUrl o </> hashDirMixed k </> shellEscape (f </> f)
|
||||
where
|
||||
f = keyFile k
|
||||
|
||||
rsyncKeyDir :: RsyncOpts -> Key -> String
|
||||
rsyncKeyDir o k = rsyncUrl o </> hashDirMixed k </> shellEscape (keyFile k)
|
||||
|
||||
store :: RsyncOpts -> Key -> Annex Bool
|
||||
store o k = do
|
||||
g <- Annex.gitRepo
|
||||
|
@ -136,7 +139,7 @@ remove o k = withRsyncScratchDir $ \tmp -> do
|
|||
[ Params "--delete --recursive"
|
||||
, partialParams
|
||||
, Param $ addTrailingPathSeparator dummy
|
||||
, Param $ parentDir $ rsyncKey o k
|
||||
, Param $ rsyncKeyDir o k
|
||||
]
|
||||
|
||||
checkPresent :: Git.Repo -> RsyncOpts -> Key -> Annex (Either IOException Bool)
|
||||
|
@ -147,8 +150,7 @@ checkPresent r o k = do
|
|||
res <- liftIO $ boolSystem "sh" [Param "-c", Param cmd]
|
||||
return $ Right res
|
||||
where
|
||||
cmd = "rsync --quiet " ++ testfile ++ " 2>/dev/null"
|
||||
testfile = shellEscape $ rsyncKey o k
|
||||
cmd = "rsync --quiet " ++ shellEscape (rsyncKey o k) ++ " 2>/dev/null"
|
||||
|
||||
{- Rsync params to enable resumes of sending files safely,
|
||||
- ensure that files are only moved into place once complete
|
||||
|
|
6
debian/changelog
vendored
6
debian/changelog
vendored
|
@ -1,3 +1,9 @@
|
|||
git-annex (3.20110720) UNRELEASED; urgency=low
|
||||
|
||||
* Fix shell escaping in rsync special remote.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Fri, 29 Jul 2011 15:27:30 +0200
|
||||
|
||||
git-annex (3.20110719) unstable; urgency=low
|
||||
|
||||
* add: Be even more robust to avoid ever leaving the file seemingly deleted.
|
||||
|
|
|
@ -46,3 +46,5 @@
|
|||
b8b1ea7a-b93f-11e0-b712-d7bffb6e61e6 -- localrsync
|
||||
failed
|
||||
git-annex: 1 failed
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue