comparison tests/test-subrepo-git.t @ 29328:60621cecc8c5

merge with stable
author Matt Mackall <mpm@selenic.com>
date Thu, 09 Jun 2016 13:47:42 -0500
parents 3879d02cd1cc 9b4f0ad02f51
children a145161debed
comparison
equal deleted inserted replaced
29327:baab9ea4426c 29328:60621cecc8c5
1133 ? s/snake.python.orig 1133 ? s/snake.python.orig
1134 1134
1135 test for Git CVE-2016-3068 1135 test for Git CVE-2016-3068
1136 $ hg init malicious-subrepository 1136 $ hg init malicious-subrepository
1137 $ cd malicious-subrepository 1137 $ cd malicious-subrepository
1138 $ echo "s = [git]ext::sh -c echo% pwned% >&2" > .hgsub 1138 $ echo "s = [git]ext::sh -c echo% pwned:% \$PWNED_MSG% >pwned.txt" > .hgsub
1139 $ git init s 1139 $ git init s
1140 Initialized empty Git repository in $TESTTMP/tc/malicious-subrepository/s/.git/ 1140 Initialized empty Git repository in $TESTTMP/tc/malicious-subrepository/s/.git/
1141 $ cd s 1141 $ cd s
1142 $ git commit --allow-empty -m 'empty' 1142 $ git commit --allow-empty -m 'empty'
1143 [master (root-commit) 153f934] empty 1143 [master (root-commit) 153f934] empty
1144 $ cd .. 1144 $ cd ..
1145 $ hg add .hgsub 1145 $ hg add .hgsub
1146 $ hg commit -m "add subrepo" 1146 $ hg commit -m "add subrepo"
1147 $ cd .. 1147 $ cd ..
1148 $ rm -f pwned.txt
1148 $ unset GIT_ALLOW_PROTOCOL 1149 $ unset GIT_ALLOW_PROTOCOL
1149 $ hg clone malicious-subrepository malicious-subrepository-protected 1150 $ PWNED_MSG="your git is too old or mercurial has regressed" hg clone \
1151 > malicious-subrepository malicious-subrepository-protected
1150 Cloning into '$TESTTMP/tc/malicious-subrepository-protected/s'... (glob) 1152 Cloning into '$TESTTMP/tc/malicious-subrepository-protected/s'... (glob)
1151 fatal: transport 'ext' not allowed 1153 fatal: transport 'ext' not allowed
1152 updating to branch default 1154 updating to branch default
1153 cloning subrepo s from ext::sh -c echo% pwned% >&2 1155 cloning subrepo s from ext::sh -c echo% pwned:% $PWNED_MSG% >pwned.txt
1154 abort: git clone error 128 in s (in subrepo s) 1156 abort: git clone error 128 in s (in subrepo s)
1155 [255] 1157 [255]
1158 $ f -Dq pwned.txt
1159 pwned.txt: file not found
1156 1160
1157 whitelisting of ext should be respected (that's the git submodule behaviour) 1161 whitelisting of ext should be respected (that's the git submodule behaviour)
1158 $ env GIT_ALLOW_PROTOCOL=ext hg clone malicious-subrepository malicious-subrepository-clone-allowed 1162 $ rm -f pwned.txt
1163 $ env GIT_ALLOW_PROTOCOL=ext PWNED_MSG="you asked for it" hg clone \
1164 > malicious-subrepository malicious-subrepository-clone-allowed
1159 Cloning into '$TESTTMP/tc/malicious-subrepository-clone-allowed/s'... (glob) 1165 Cloning into '$TESTTMP/tc/malicious-subrepository-clone-allowed/s'... (glob)
1160 pwned
1161 fatal: Could not read from remote repository. 1166 fatal: Could not read from remote repository.
1162 1167
1163 Please make sure you have the correct access rights 1168 Please make sure you have the correct access rights
1164 and the repository exists. 1169 and the repository exists.
1165 updating to branch default 1170 updating to branch default
1166 cloning subrepo s from ext::sh -c echo% pwned% >&2 1171 cloning subrepo s from ext::sh -c echo% pwned:% $PWNED_MSG% >pwned.txt
1167 abort: git clone error 128 in s (in subrepo s) 1172 abort: git clone error 128 in s (in subrepo s)
1168 [255] 1173 [255]
1174 $ f -Dq pwned.txt
1175 pwned: you asked for it