From: Richard Lewis <richard.lewis.debian@googlemail.com>
Date: Mon, 20 Feb 2023 23:47:05 +0000
Subject: chkrootkit: chk_login

Remove stray ']'
Redirection of stderr should be after redirection of stdout, not before

Forwarded: yes
(Forwarded by email: 21 Dec 2024)
---
 chkrootkit | 51 ++++++++++++++++++++++++++++++++-------------------
 1 file changed, 32 insertions(+), 19 deletions(-)

diff --git a/chkrootkit b/chkrootkit
index 7137152..95e4d72 100755
--- a/chkrootkit
+++ b/chkrootkit
@@ -1517,7 +1517,10 @@ chk_chsh () {
 
 chk_login () {
     STATUS=${NOT_INFECTED}
-    CMD=`loc login login $pth`
+    CMD=$(loc login login "$pth")
+    if [ "${?}" -ne 0 ]; then
+        return "${NOT_FOUND}"
+    fi
 
     if [ "${EXPERT}" = "t" ]; then
         expertmode_output "${strings} -a ${CMD}"
@@ -1525,32 +1528,42 @@ chk_login () {
     fi
 
     if [ "$SYSTEM" = "SunOS" ]; then
-      TROJED_L_L="porcao|/bin/xstat"
-      if ${strings} -a ${CMD} | ${egrep} "${TROJED_L_L}" >/dev/null 2>&1 ]; then
-          return ${INFECTED}
-       else
-          return ${NOT_TESTED}
-       fi
+        TROJED_L_L="porcao|/bin/xstat"
+        if "${strings}" -a "${CMD}" | ${egrep} "${TROJED_L_L}" >/dev/null 2>&1; then
+            return "${INFECTED}"
+        else
+            return "${NOT_TESTED}"
+        fi
     fi
     GENERAL="^root$"
     TROJED_L_L="vejeta|^xlogin|^@\(#\)klogin\.c|lets_log|sukasuka|/usr/lib/.ark?|SucKIT|cocola"
-    ret=`${strings} -a ${CMD} | ${egrep} -c "${GENERAL}"`
-    if [ ${ret} -gt 0 ]; then
-        case ${ret} in
-        1) [ "${SYSTEM}" = "OpenBSD" -a `echo $V | ${awk} '{ if ($1 < 2.7 ||
-$1 >= 3.0) print 1; else print 0}'` -eq 1 ] && \
-             STATUS=${NOT_INFECTED} || STATUS=${INFECTED};;
-        2) [ "${SYSTEM}" = "FreeBSD"  -o ${SYSTEM} = "NetBSD" -o ${SYSTEM} = \
-"OpenBSD" -a `echo ${V} | ${awk} '{ if ($1 >= 2.8) print 1; else print 0 }'` -eq 1 ] && STATUS=${NOT_INFECTED} || STATUS=${INFECTED};;
-        6|7) [ "${SYSTEM}" = "HP-UX" ] && STATUS=${NOT_INFECTED} || STATUS=${INFECTED};;
+    ret=$("${strings}" -a "${CMD}" | ${egrep} -c "${GENERAL}")
+    if [ "${ret}" -gt 0 ]; then
+        case "${ret}" in
+        1) if [ "${SYSTEM}" = "OpenBSD" -a "$(echo "$V" | "${awk}" '{ if ($1 < 2.7 ||
+$1 >= 3.0) print 1; else print 0}')" -eq 1 ]; then
+               STATUS=${NOT_INFECTED}
+           else
+               STATUS=${INFECTED}
+           fi;;
+        2) if [ "${SYSTEM}" = "FreeBSD"  -o "${SYSTEM}" = "NetBSD" -o "${SYSTEM}" = "OpenBSD" -a "$(echo "${V}" | "${awk}" '{ if ($1 >= 2.8) print 1; else print 0 }')" -eq 1 ]; then
+               STATUS=${NOT_INFECTED}
+           else
+               STATUS=${INFECTED}
+           fi;;
+        6|7) if [ "${SYSTEM}" = "HP-UX" ]; then
+                 STATUS=${NOT_INFECTED}
+             else
+                 STATUS=${INFECTED}
+             fi;;
         *) STATUS=${INFECTED};;
         esac
     fi
-    if ${strings} -a ${CMD} | ${egrep} "${TROJED_L_L}" 2>&1 >/dev/null
-       then
+    if "${strings}" -a "${CMD}" | ${egrep} "${TROJED_L_L}" >/dev/null 2>&1
+    then
         STATUS=${INFECTED}
     fi
-    return ${STATUS}
+    return "${STATUS}"
 }
 
 chk_passwd () {
