commit:     0a2371efbe94fb1b410c0afd49bb1bb640d36a9e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 22 19:09:29 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Mar  8 07:35:26 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0a2371ef

cvs.eclass: Replace unnecessary eval with bash arrays

Replace the eval used to pass quoted password in with simpler and safer
bash arrays. Using eval is strongly discouraged as it is error-prone
and confusing.

 eclass/cvs.eclass | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/eclass/cvs.eclass b/eclass/cvs.eclass
index 6d1adea11a4..e2121f4724f 100644
--- a/eclass/cvs.eclass
+++ b/eclass/cvs.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: cvs.eclass
@@ -352,22 +352,22 @@ cvs_fetch() {
        fi
 
        # Commands to run
-       cmdlogin="${run} ${ECVS_CVS_COMMAND} -d \"${cvsroot_pass}\" login"
-       cmdupdate="${run} ${ECVS_CVS_COMMAND} -d \"${cvsroot_nopass}\" update 
${ECVS_UP_OPTS} ${ECVS_LOCALNAME}"
-       cmdcheckout="${run} ${ECVS_CVS_COMMAND} -d \"${cvsroot_nopass}\" 
checkout ${ECVS_CO_OPTS} ${ECVS_MODULE}"
+       cmdlogin=( ${run} ${ECVS_CVS_COMMAND} -d "${cvsroot_pass}" login )
+       cmdupdate=( ${run} ${ECVS_CVS_COMMAND} -d "${cvsroot_nopass}" update 
${ECVS_UP_OPTS} ${ECVS_LOCALNAME} )
+       cmdcheckout=( ${run} ${ECVS_CVS_COMMAND} -d "${cvsroot_nopass}" 
checkout ${ECVS_CO_OPTS} ${ECVS_MODULE} )
 
        # Execute commands
 
        cd "${ECVS_TOP_DIR}"
        if [[ ${ECVS_AUTH} == "pserver" ]] ; then
-               einfo "Running ${cmdlogin}"
-               eval ${cmdlogin} || die "cvs login command failed"
+               einfo "Running ${cmdlogin[*]}"
+               "${cmdlogin[@]}" || die "cvs login command failed"
                if [[ ${mode} == "update" ]] ; then
-                       einfo "Running ${cmdupdate}"
-                       eval ${cmdupdate} || die "cvs update command failed"
+                       einfo "Running ${cmdupdate[*]}"
+                       "${cmdupdate[@]}" || die "cvs update command failed"
                elif [[ ${mode} == "checkout" ]] ; then
-                       einfo "Running ${cmdcheckout}"
-                       eval ${cmdcheckout} || die "cvs checkout command failed"
+                       einfo "Running ${cmdcheckout[*]}"
+                       "${cmdcheckout[@]}" || die "cvs checkout command failed"
                fi
        elif [[ ${ECVS_AUTH} == "ext" || ${ECVS_AUTH} == "no" ]] ; then
                # Hack to support SSH password authentication
@@ -461,11 +461,11 @@ EOF
                fi
 
                if [[ ${mode} == "update" ]] ; then
-                       einfo "Running ${cmdupdate}"
-                       eval ${cmdupdate} || die "cvs update command failed"
+                       einfo "Running ${cmdupdate[*]}"
+                       "${cmdupdate[@]}" || die "cvs update command failed"
                elif [[ ${mode} == "checkout" ]] ; then
-                       einfo "Running ${cmdcheckout}"
-                       eval ${cmdcheckout} || die "cvs checkout command failed"
+                       einfo "Running ${cmdcheckout[*]}"
+                       "${cmdcheckout[@]}" || die "cvs checkout command failed"
                fi
 
                # Restore environment variable values

Reply via email to