make sure we're explicitly capturing return codes in places where they are tested...
authorJameson Graef Rollins <jrollins@finestructure.net>
Sat, 21 Feb 2009 19:57:41 +0000 (14:57 -0500)
committerJameson Graef Rollins <jrollins@finestructure.net>
Sat, 21 Feb 2009 19:57:41 +0000 (14:57 -0500)
src/monkeysphere
src/share/common
src/share/m/ssh_proxycommand
src/share/m/subkey_to_ssh_agent
src/share/ma/update_users

index a65cef62273e76671bc6fe658564195551a2ad8a..b30453ca0ff46277b0d70ee23f39bdda5d59473d 100755 (executable)
@@ -27,9 +27,6 @@ DATE=$(date -u '+%FT%T')
 # unset some environment variables that could screw things up
 unset GREP_OPTIONS
 
-# default return code
-RETURN=0
-
 # set the file creation mask to be only owner rw
 umask 077
 
@@ -87,9 +84,11 @@ check_gpg_sec_key_id() {
            echo "$gpgSecOut" | cut -d: -f5
            ;;
        *)
-           echo "Multiple primary secret keys found:" | log error
-           echo "$gpgSecOut" | cut -d: -f5 | log error
-           echo "Please specify which primary key to use." | log error
+           echo "Multiple primary secret keys found:"
+           for key in $(echo "$gpgSecOut" | cut -d: -f5) ; do
+               echo "  $key"
+           done
+           echo "Please specify which primary key to use."
            failure
            ;;
     esac
@@ -203,13 +202,11 @@ case $COMMAND in
        # those hosts
        if [ "$1" ] ; then
            update_known_hosts "$@"
-           RETURN="$?"
 
        # otherwise, if no hosts are specified, process every host
        # in the user's known_hosts file
        else
            process_known_hosts
-           RETURN="$?"
        fi
        ;;
 
@@ -219,7 +216,6 @@ case $COMMAND in
 
        # process authorized_user_ids file
        process_authorized_user_ids "$AUTHORIZED_USER_IDS"
-       RETURN="$?"
        ;;
 
     'import-subkey'|'i')
index 653d58ba0154941887a340e7889b391079db1bae..5e0cb6a4a00ec1d5d79eb594f43f673f4239aabf 100644 (file)
@@ -586,8 +586,8 @@ gpg2authorized_keys() {
 # FIXME: need to figure out how to retrieve all matching keys
 # (not just first N (5 in this case))
 gpg_fetch_userid() {
+    local returnCode=0
     local userID
-    local returnCode
 
     if [ "$CHECK_KEYSERVER" != 'true' ] ; then
        return 0
@@ -626,6 +626,7 @@ gpg_fetch_userid() {
 #
 # expects global variable: "MODE"
 process_user_id() {
+    local returnCode=0
     local userID
     local requiredCapability
     local requiredPubCapability
@@ -657,10 +658,10 @@ process_user_id() {
     # output gpg info for (exact) userid and store
     gpgOut=$(gpg --list-key --fixed-list-mode --with-colon \
        --with-fingerprint --with-fingerprint \
-       ="$userID" 2>/dev/null)
+       ="$userID" 2>/dev/null) || returnCode="$?"
 
     # if the gpg query return code is not 0, return 1
-    if [ "$?" -ne 0 ] ; then
+    if [ "$returnCode" -ne 0 ] ; then
         log verbose " no primary keys found."
         return 1
     fi
@@ -890,6 +891,7 @@ process_host_known_hosts() {
 # update the known_hosts file for a set of hosts listed on command
 # line
 update_known_hosts() {
+    local returnCode=0
     local nHosts
     local nHostsOK
     local nHostsBAD
@@ -919,9 +921,9 @@ update_known_hosts() {
 
     for host ; do
        # process the host
-       process_host_known_hosts "$host"
+       process_host_known_hosts "$host" || returnCode="$?"
        # note the result
-       case "$?" in
+       case "$returnCode" in
            0)
                nHostsOK=$((nHostsOK+1))
                ;;
@@ -1043,6 +1045,7 @@ process_uid_authorized_keys() {
 # update the authorized_keys files from a list of user IDs on command
 # line
 update_authorized_keys() {
+    local returnCode=0
     local userID
     local nIDs
     local nIDsOK
@@ -1072,10 +1075,10 @@ update_authorized_keys() {
     for userID ; do
        # process the user ID, change return code if key not found for
        # user ID
-       process_uid_authorized_keys "$userID"
+       process_uid_authorized_keys "$userID" || returnCode="$?"
 
        # note the result
-       case "$?" in
+       case "$returnCode" in
            0)
                nIDsOK=$((nIDsOK+1))
                ;;
index bd095889e528f61b0a75a503fcb5a12ba7942c57..abe068ddc9467aa1aae7c4679ce724a84278e3ec 100644 (file)
@@ -18,6 +18,7 @@
 # "marginal case" ouput in the case that there is not a full
 # validation path to the host
 output_no_valid_key() {
+    local returnCode=0
     local sshKeyOffered
     local userID
     local type
@@ -112,11 +113,11 @@ EOF
                fi
                ;;
        esac
-    done
+    done || returnCode="$?"
 
     # if no key match was made (and the "while read" subshell returned
     # 1) output how many keys were found
-    if (($? != 1)) ; then
+    if (( returnCode != 1 )) ; then
        cat <<EOF | log info
 None of the found keys matched the key offered by the host.
 Run the following command for more info about the found keys:
@@ -200,12 +201,13 @@ fi
 CHECK_KEYSERVER=${MONKEYSPHERE_CHECK_KEYSERVER:=$CHECK_KEYSERVER}
 
 # update the known_hosts file for the host
-update_known_hosts "$HOSTP"
+local returnCode=0
+update_known_hosts "$HOSTP" || returnCode="$?"
 
 # output on depending on the return of the update-known_hosts
 # subcommand, which is (ultimately) the return code of the
 # update_known_hosts function in common
-case $? in
+case "$returnCode" in
     0)
        # acceptable host key found so continue to ssh
        true
index 818f4f70c3ae65a86ed58c169a02c31b89884d5e..a2cf9a0c5b42d9ad13a255e090ba8f2448a80cdc 100644 (file)
 # try to add all authentication subkeys to the agent
 
 subkey_to_ssh_agent() {
-    local sshaddresponse
+    local sshaddresponse=0
     local secretkeys
     local authsubkeys
     local workingdir
-    local keysuccess
+    local keysuccess=0
     local subkey
     local publine
     local kname
@@ -38,8 +38,7 @@ For more details, see:
 
     # and if it looks like it's running, but we can't actually talk to
     # it, bail out:
-    ssh-add -l >/dev/null
-    sshaddresponse="$?"
+    ssh-add -l >/dev/null || sshaddresponse="$?"
     if [ "$sshaddresponse" = "2" ]; then
        failure "Could not connect to ssh-agent"
     fi
@@ -100,8 +99,7 @@ You might want to 'monkeysphere gen-subkey'"
 
            passphrase_prompt "Enter passphrase for key $kname: " "$workingdir/passphrase"
            wait %2
-       fi
-       keysuccess="$?"
+       fi || keysuccess="$?"
 
        rm -f "$workingdir/$kname"
     done
index 092d10870c6e8356bbec956ec3ed4f844cf734a5..bfefc31cdb83b294175131d502136b17520e7ce5 100644 (file)
@@ -93,8 +93,8 @@ for uname in $unames ; do
 
            # process authorized_user_ids file, as monkeysphere user
            su_monkeysphere_user \
-               ". ${SYSSHAREDIR}/common; process_authorized_user_ids $TMP_AUTHORIZED_USER_IDS"
-           RETURN="$?"
+               ". ${SYSSHAREDIR}/common; process_authorized_user_ids $TMP_AUTHORIZED_USER_IDS" \
+               || RETURN="$?"
        else
            log debug "not processing authorized_user_ids."
        fi
@@ -154,4 +154,5 @@ for uname in $unames ; do
     rm -rf "$TMPLOC"
 done
 
+return $RETURN
 }