summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-07-29 15:28:21 +0200
committerGravatar Joey Hess <joey@kitenet.net>2011-07-29 15:28:21 +0200
commit45bbf210a1210172c7c7b87879ed74f7c8ccbdba (patch)
tree98552c21795608b165f26108bc7dd05513c86b07
parent50edbb03eb0582dd568a6fb83fcdb410828c1ea1 (diff)
Fix shell escaping in rsync special remote.
-rw-r--r--Remote/Rsync.hs10
-rw-r--r--debian/changelog6
-rw-r--r--doc/bugs/rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.mdwn2
3 files changed, 14 insertions, 4 deletions
diff --git a/Remote/Rsync.hs b/Remote/Rsync.hs
index f073e7bd7..953537609 100644
--- a/Remote/Rsync.hs
+++ b/Remote/Rsync.hs
@@ -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
diff --git a/debian/changelog b/debian/changelog
index fab4927cd..748a945d7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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.
diff --git a/doc/bugs/rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.mdwn b/doc/bugs/rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.mdwn
index 464c06b44..040d86bb8 100644
--- a/doc/bugs/rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.mdwn
+++ b/doc/bugs/rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.mdwn
@@ -46,3 +46,5 @@
b8b1ea7a-b93f-11e0-b712-d7bffb6e61e6 -- localrsync
failed
git-annex: 1 failed
+
+> [[fixed|done]] --[[Joey]]