[PATCH 4/4] pacdiff: Don't use $SUDO on temporary files

Denton Liu liu.denton at gmail.com
Mon Mar 29 09:02:43 UTC 2021


From: Denton Liu via pacman-contrib <pacman-contrib at lists.archlinux.org>

In 19ab4fa (pacdiff: Add option to use sudo/sudoedit to manage files,
2021-03-27), pacdiff was taught to accept -s to run various commands
with $SUDO. This introduced many instances of $SUDO in merge_file()
where most of them are unnecessary.

In particular, it is not necessary to $SUDO to write the temporary files
as /tmp should be writable by all.

Also, remove the usage of sudoedit when comparing the original file with
the merge result. This is because the merged file is placed in a
writable directory. Attempting to run sudoedit on this file results in
the following error:

	sudoedit: <file>: editing files in a writable directory is not permitted

but root permissions are not really required since users should not
write to the original file anyway. The merged file will be used to
overwrite the original file at the end of the function anyway.

Remove these unnecessary usages of $SUDO.

Signed-off-by: Denton Liu <liu.denton at gmail.com>
---
 src/pacdiff.sh.in | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/pacdiff.sh.in b/src/pacdiff.sh.in
index fe66a6e..3c34fdb 100644
--- a/src/pacdiff.sh.in
+++ b/src/pacdiff.sh.in
@@ -117,20 +117,16 @@ merge_file() {
 	fi
 
 	basename="$(basename "$file")"
-	tempdir="$($SUDO mktemp -d --tmpdir "pacdiff-merge-$basename.XXX")"
-	base="$($SUDO mktemp "$tempdir"/"$basename.base.XXX")"
-	merged="$($SUDO mktemp "$tempdir"/"$basename.merged.XXX")"
+	tempdir="$(mktemp -d --tmpdir "pacdiff-merge-$basename.XXX")"
+	base="$(mktemp "$tempdir"/"$basename.base.XXX")"
+	merged="$(mktemp "$tempdir"/"$basename.merged.XXX")"
 
-	tar -xOf "$base_tar" "${file#/}" | $SUDO tee "$base" > /dev/null
-	if $SUDO $mergeprog "$file" "$base" "$pacfile" | $SUDO tee "$merged" > /dev/null; then
+	tar -xOf "$base_tar" "${file#/}" >"$base"
+	if $mergeprog "$file" "$base" "$pacfile" >"$merged"; then
 		msg2 "Merged without conflicts."
 	fi
 
-	if [[ -n "$SUDO" ]]; then
-		SUDO_EDITOR="$diffprog" sudoedit "$file" "$merged"
-	else
-		$diffprog "$file" "$merged"
-	fi
+	$diffprog "$file" "$merged"
 
 	while :; do
 		ask "Would you like to use the results of the merge? [y/n] "
-- 
2.31.0.208.g409f899ff0


More information about the pacman-contrib mailing list