[pacman-dev] [PATCH 3/5] pacman-key: update trust database for relevant operations

Dave Reisner d at falconindy.com
Tue Aug 23 06:21:52 EDT 2011


On Tue, Aug 23, 2011 at 04:17:44PM +1000, Allan McRae wrote:
> After most operations that touch the keyring, it is a good idea to
> always run a check on the trustdb as this prevents gpg complaining
> on later operations.
> 
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
>  scripts/pacman-key.sh.in |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/pacman-key.sh.in b/scripts/pacman-key.sh.in
> index 3e31abb..6d07482 100644
> --- a/scripts/pacman-key.sh.in
> +++ b/scripts/pacman-key.sh.in
> @@ -253,10 +253,6 @@ populate_keyring() {
>  			"${GPG_PACMAN[@]}" --quiet --batch --yes --delete-key "${key_id}"
>  		done
>  	fi
> -
> -	# Update trustdb, just to be sure
> -	msg "$(gettext "Updating trust database...")"
> -	"${GPG_PACMAN[@]}" --batch --check-trustdb
>  }
>  
>  receive_keys() {
> @@ -417,4 +413,9 @@ esac
>  (( UPDATEDB )) && "${GPG_PACMAN[@]}" --batch --check-trustdb
>  (( VERIFY )) && "${GPG_PACMAN[@]}" --verify $SIGNATURE
>  
> +if (( ADD || DELETE || EDITKEY || IMPORT || IMPORT_TRUSTDB || POPULATE || RECEIVE )); then
> +	msg "$(gettext "Updating trust database...")"
> +	"${GPG_PACMAN[@]}" --batch --check-trustdb
> +fi
> +
>  # vim: set ts=2 sw=2 noet:
> -- 
> 1.7.6
> 
> 

Just a different approach... instead of hardcoding another list, tag
them in options parsing and check for UPDATEDB last. Patch below is
against master, but probably gives you a better idea of what I mean...

d

diff --git a/scripts/pacman-key.sh.in b/scripts/pacman-key.sh.in
index 74ecfcf..2ebe22d 100644
--- a/scripts/pacman-key.sh.in
+++ b/scripts/pacman-key.sh.in
@@ -336,20 +336,20 @@ fi
 
 while true; do
  case "$1" in
-   -a|--add)         ADD=1; [[ -n $2 && ${2:0:1} != "-" ]] && shift && KEYFILES=($1) ;;
+   -a|--add)         UPDATEDB=1 ADD=1; [[ -n $2 && ${2:0:1} != "-" ]] && shift && KEYFILES=($1) ;;
    --config)         shift; CONFIG=$1 ;;
-   -d|--delete)      DELETE=1; shift; KEYIDS=($1) ;;
-   --edit-key)       EDITKEY=1; shift; KEYIDS=($1) ;;
+   -d|--delete)      UPDATEDB=1 DELETE=1; shift; KEYIDS=($1) ;;
+   --edit-key)       UPDATEDB=1 EDITKEY=1; shift; KEYIDS=($1) ;;
    -e|--export)      EXPORT=1; [[ -n $2 && ${2:0:1} != "-" ]] && shift && KEYIDS=($1) ;;
    -f|--finger)      FINGER=1; [[ -n $2 && ${2:0:1} != "-" ]] && shift && KEYIDS=($1) ;;
    --gpgdir)         shift; PACMAN_KEYRING_DIR=$1 ;;
-   --import)         IMPORT=1; shift; IMPORT_DIRS=($1) ;;
-   --import-trustdb) IMPORT_TRUSTDB=1; shift; IMPORT_DIRS=($1) ;;
+   --import)         UPDATEDB=1 IMPORT=1; shift; IMPORT_DIRS=($1) ;;
+   --import-trustdb) UPDATEDB=1 IMPORT_TRUSTDB=1; shift; IMPORT_DIRS=($1) ;;
    --init)           INIT=1 ;;
    -l|--list-keys)   LISTKEYS=1; [[ -n $2 && ${2:0:1} != "-" ]] && shift && KEYIDS=($1) ;;
    --list-sigs)      LISTSIGS=1; [[ -n $2 && ${2:0:1} != "-" ]] && shift && KEYIDS=($1) ;;
-   -r|--receive)     RECEIVE=1; shift; TMP=($1); KEYSERVER=${TMP[0]}; KEYIDS=(${TMP[@]:1}); unset TMP;;
-   --reload)         RELOAD=1 ;;
+   -r|--receive)     UPDATEDB=1 RECEIVE=1; shift; TMP=($1); KEYSERVER=${TMP[0]}; KEYIDS=(${TMP[@]:1}); unset TMP;;
+   --reload)         UPDATEDB=1 RELOAD=1 ;;
    -u|--updatedb)    UPDATEDB=1 ;;
    -v|--verify)      VERIFY=1; shift; SIGNATURE=$1 ;;
 
@@ -387,7 +387,7 @@ GPG_PACMAN=(gpg --homedir ${PACMAN_KEYRING_DIR} --no-permission-warning)
 
 # check only a single operation has been given
 numopt=$(( ADD + DELETE + EDITKEY + EXPORT + FINGER + IMPORT + IMPORT_TRUSTDB +
-   INIT + LISTKEYS + LISTSIGS + RECEIVE + RELOAD + UPDATEDB + VERIFY ))
+   INIT + LISTKEYS + LISTSIGS + RECEIVE + RELOAD + VERIFY ))
 
 case $numopt in
  0)
@@ -415,7 +415,8 @@ esac
 (( LISTSIGS )) && "${GPG_PACMAN[@]}" --batch --list-sigs "${KEYIDS[@]}"
 (( RECEIVE )) && receive_keys
 (( RELOAD )) && reload_keyring
-(( UPDATEDB )) && "${GPG_PACMAN[@]}" --batch --check-trustdb
 (( VERIFY )) && "${GPG_PACMAN[@]}" --verify $SIGNATURE
 
+(( UPDATEDB )) && "${GPG_PACMAN[@]}" --batch --check-trustdb
+
 # vim: set ts=2 sw=2 noet:



More information about the pacman-dev mailing list