summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2023-03-28 21:23:26 +0200
committerJustin Wernick <justin@worthe-it.co.za>2023-03-28 21:23:26 +0200
commit2e84602de722694c5cce4172e7455f592cee6a03 (patch)
treec85886c7dca0d44870a574238c4f0cb36a4e8de2 /src
parent2e8f9e8043594c8e8ce57daabe4a26a8fb7e9826 (diff)
Git push is now limited to only appropriate paths
Diffstat (limited to 'src')
-rw-r--r--src/git.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/git.rs b/src/git.rs
index f7dbe13..b4eb3b2 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -50,11 +50,11 @@ pub fn init(repo_name: &str) -> Result<GitInitResult, ShackleError> {
}
pub fn upload_pack(upload_pack_args: &GitUploadPackArgs) -> Result<(), ShackleError> {
- let mut command = Command::new("git-upload-pack");
if !is_valid_personal_git_repo(&upload_pack_args.directory)? {
return Err(ShackleError::InvalidDirectory);
}
+ let mut command = Command::new("git-upload-pack");
if upload_pack_args.strict {
command.arg("strict");
}
@@ -70,7 +70,6 @@ pub fn upload_pack(upload_pack_args: &GitUploadPackArgs) -> Result<(), ShackleEr
if upload_pack_args.advertise_refs {
command.arg("advertise-refs");
}
-
command.arg(&upload_pack_args.directory);
command.spawn()?.wait()?;
@@ -78,12 +77,14 @@ pub fn upload_pack(upload_pack_args: &GitUploadPackArgs) -> Result<(), ShackleEr
}
pub fn receive_pack(receive_pack_args: &GitReceivePackArgs) -> Result<(), ShackleError> {
- let mut command = Command::new("git-receive-pack");
+ if !is_valid_personal_git_repo(&receive_pack_args.directory)? {
+ return Err(ShackleError::InvalidDirectory);
+ }
+ let mut command = Command::new("git-receive-pack");
if receive_pack_args.http_backend_info_refs {
command.arg("--http-backend-info-refs");
}
-
command.arg(&receive_pack_args.directory);
command.spawn()?.wait()?;