FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.

» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > ArchLinux > ArchLinux Pacman Development

LinkBack Thread Tools
Old 03-01-2009, 04:57 AM
Allan McRae
Default repo-add: fail early if repo can not be created

Dan McGee wrote:

On Thu, Feb 26, 2009 at 2:06 PM, Xavier Chantry <shiningxc@gmail.com> wrote:

Before this commit, the repo creation could fail after all packages have
been added to the database. Now this will be detected before adding

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
scripts/repo-add.sh.in | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index b12188c..a967506 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -326,9 +326,21 @@ for arg in "$@"; do
msg "$(gettext "Extracting database to a temporary location...")"
bsdtar -xf "$REPO_DB_FILE" -C "$gstmpdir"
- elif [ "$cmd" == "repo-remove" ]; then
- error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE"
- exit 1
+ else
+ case "$cmd" in
+ repo-remove)
+ error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE"
+ exit 1
+ ;;
+ repo-add)
+ # check if the file can be created (write permission, directory existence, etc)
+ if ! touch "$REPO_DB_FILE"; then
+ error "$(gettext "Repository file '%s' could not be created.")" "$REPO_DB_FILE"
+ exit 1
+ fi
+ rm -f "$REPO_DB_FILE"

This seems scary to me- is there any reason to blow it away like this?
It also makes the repo-add process non-atomic- someone could access
the database and fail while you are adding 10 packages, correct?

I thought about this too but I was less scared when I noticed that this
is only done when the db file is not found. So you are only removing
the db file created in the touch statement.

pacman-dev mailing list

Thread Tools

All times are GMT. The time now is 09:20 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org