From 27a915b8976d9cc981fbde690ce42b5c43250914 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Thu, 26 May 2022 16:11:07 +0530 Subject: [PATCH 1/9] Safer Temporary Files --- git/index/base.py | 2 +- git/index/util.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/git/index/base.py b/git/index/base.py index 1c56a219b..183440109 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -351,7 +351,7 @@ def from_tree(cls, repo: "Repo", *treeish: Treeish, **kwargs: Any) -> "IndexFile # tmp file created in git home directory to be sure renaming # works - /tmp/ dirs could be on another device - tmp_index = tempfile.mktemp("", "", repo.git_dir) + tmp_index = tempfile.mkstemp("", "", dir=repo.git_dir) arg_list.append("--index-output=%s" % tmp_index) arg_list.extend(treeish) diff --git a/git/index/util.py b/git/index/util.py index bfc7fadd6..831bb1ff5 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -40,7 +40,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path - self.tmp_file_path = str(self.file_path) + tempfile.mktemp("", "", "") + self.tmp_file_path = tempfile.mktemp("", "", dir=str(self.file_path)) # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 76b0e06e847a885ea90e028d20101413a5a5c982 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Fri, 27 May 2022 07:55:53 +0530 Subject: [PATCH 2/9] Minor Bug Fix --- git/index/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/index/util.py b/git/index/util.py index 831bb1ff5..aa5af048d 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -40,7 +40,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path - self.tmp_file_path = tempfile.mktemp("", "", dir=str(self.file_path)) + self.tmp_file_path = tempfile.mktemp("", "", dir=str(self.file_path))[1] # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 320523a429b70abab4db28533547c2d70e8b7bc7 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 09:31:24 +0530 Subject: [PATCH 3/9] Fixed Minor Bugs --- git/index/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/index/util.py b/git/index/util.py index aa5af048d..831bb1ff5 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -40,7 +40,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path - self.tmp_file_path = tempfile.mktemp("", "", dir=str(self.file_path))[1] + self.tmp_file_path = tempfile.mktemp("", "", dir=str(self.file_path)) # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 2b5467ee1b84e41d6b28b2c3852cd181d102ca16 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 11:04:29 +0530 Subject: [PATCH 4/9] Fixed Minor Bugs --- git/index/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/index/base.py b/git/index/base.py index 183440109..213ad8062 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -351,7 +351,7 @@ def from_tree(cls, repo: "Repo", *treeish: Treeish, **kwargs: Any) -> "IndexFile # tmp file created in git home directory to be sure renaming # works - /tmp/ dirs could be on another device - tmp_index = tempfile.mkstemp("", "", dir=repo.git_dir) + tmp_index = tempfile.mkstemp("", "", dir=repo.git_dir)[1] arg_list.append("--index-output=%s" % tmp_index) arg_list.extend(treeish) From 2d247783cd336c145aad895abb62e8002d99c680 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 11:07:49 +0530 Subject: [PATCH 5/9] Fixed Minor Bugs --- git/index/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/index/util.py b/git/index/util.py index 831bb1ff5..4047289ef 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -40,7 +40,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path - self.tmp_file_path = tempfile.mktemp("", "", dir=str(self.file_path)) + self.tmp_file_path = tempfile.mkstemp("", "", dir=str(self.file_path))[1] # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 6fec99e1e88956fe08631c9c6bdcf95dd2a4c436 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 16:36:13 +0530 Subject: [PATCH 6/9] Minor Bug Fix --- git/index/base.py | 2 +- git/index/util.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/git/index/base.py b/git/index/base.py index 213ad8062..893320b61 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -351,7 +351,7 @@ def from_tree(cls, repo: "Repo", *treeish: Treeish, **kwargs: Any) -> "IndexFile # tmp file created in git home directory to be sure renaming # works - /tmp/ dirs could be on another device - tmp_index = tempfile.mkstemp("", "", dir=repo.git_dir)[1] + tmp_index = tempfile.NamedTemporaryFile(dir=repo.git_dir, delete=False).name arg_list.append("--index-output=%s" % tmp_index) arg_list.extend(treeish) diff --git a/git/index/util.py b/git/index/util.py index 4047289ef..b88673049 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -40,7 +40,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path - self.tmp_file_path = tempfile.mkstemp("", "", dir=str(self.file_path))[1] + self.tmp_file_path = tempfile.NamedTemporaryFile(dir=str(self.file_path), delete=False).name # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 32785d32972a325aea32ee4e6e5cac5cd8f18447 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 18:54:59 +0530 Subject: [PATCH 7/9] Fixed Tempfiles --- git/index/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/index/util.py b/git/index/util.py index b88673049..17b0e4209 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -40,7 +40,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path - self.tmp_file_path = tempfile.NamedTemporaryFile(dir=str(self.file_path), delete=False).name + self.tmp_file_path = str(self.file_path) + osp.basename(tempfile.mkstemp("", "", "")[1]) # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 4256ccf3336b03e8c2ad23670ac1a146018bc7d6 Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 18:59:53 +0530 Subject: [PATCH 8/9] Fixed Tempfiles --- git/index/util.py | 1 + 1 file changed, 1 insertion(+) diff --git a/git/index/util.py b/git/index/util.py index 17b0e4209..b837706de 100644 --- a/git/index/util.py +++ b/git/index/util.py @@ -41,6 +41,7 @@ class TemporaryFileSwap(object): def __init__(self, file_path: PathLike) -> None: self.file_path = file_path self.tmp_file_path = str(self.file_path) + osp.basename(tempfile.mkstemp("", "", "")[1]) + # it may be that the source does not exist try: os.rename(self.file_path, self.tmp_file_path) From 6c832bb978087662b0adfb0153a372d61687af7b Mon Sep 17 00:00:00 2001 From: whokilleddb Date: Sat, 28 May 2022 21:20:48 +0530 Subject: [PATCH 9/9] Delete file after it is closed --- git/index/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/index/base.py b/git/index/base.py index 893320b61..0f863b42c 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -351,7 +351,7 @@ def from_tree(cls, repo: "Repo", *treeish: Treeish, **kwargs: Any) -> "IndexFile # tmp file created in git home directory to be sure renaming # works - /tmp/ dirs could be on another device - tmp_index = tempfile.NamedTemporaryFile(dir=repo.git_dir, delete=False).name + tmp_index = tempfile.NamedTemporaryFile(dir=repo.git_dir, delete=True).name arg_list.append("--index-output=%s" % tmp_index) arg_list.extend(treeish)