Blame SOURCES/0003-Improve-error-message-when-bind-is-given-an-invalid-.patch

3700a9
From d393fbc256e22cc8019d18214e4d140d58f3302a Mon Sep 17 00:00:00 2001
3700a9
From: Sergio Correia <scorreia@redhat.com>
3700a9
Date: Wed, 13 May 2020 23:51:04 -0300
3700a9
Subject: [PATCH 3/8] Improve error message when bind is given an invalid PIN
3700a9
3700a9
---
3700a9
 src/luks/clevis-luks-bind.in          | 6 ++++++
3700a9
 src/luks/clevis-luks-common-functions | 9 +++++++++
3700a9
 2 files changed, 15 insertions(+)
3700a9
3700a9
diff --git a/src/luks/clevis-luks-bind.in b/src/luks/clevis-luks-bind.in
3700a9
index a5d3c5f..89a5e22 100755
3700a9
--- a/src/luks/clevis-luks-bind.in
3700a9
+++ b/src/luks/clevis-luks-bind.in
3700a9
@@ -19,6 +19,8 @@
3700a9
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
3700a9
 #
3700a9
 
3700a9
+. clevis-luks-common-functions
3700a9
+
3700a9
 SUMMARY="Binds a LUKS device using the specified policy"
3700a9
 UUID=cb6e8904-81ff-40da-a84a-07ab9ab5715e
3700a9
 
3700a9
@@ -76,6 +78,10 @@ fi
3700a9
 if ! PIN="${@:$((OPTIND++)):1}" || [ -z "$PIN" ]; then
3700a9
     echo "Did not specify a pin!" >&2
3700a9
     usage
3700a9
+elif ! EXE=$(findexe clevis-encrypt-"${PIN}") \
3700a9
+             || [ -z "${EXE}" ]; then
3700a9
+    echo "'$PIN' is not a valid pin!" >&2
3700a9
+    usage
3700a9
 fi
3700a9
 
3700a9
 if ! CFG="${@:$((OPTIND++)):1}" || [ -z "$CFG" ]; then
3700a9
diff --git a/src/luks/clevis-luks-common-functions b/src/luks/clevis-luks-common-functions
3700a9
index d04fdb5..36f0bfd 100644
3700a9
--- a/src/luks/clevis-luks-common-functions
3700a9
+++ b/src/luks/clevis-luks-common-functions
3700a9
@@ -108,6 +108,15 @@ clevis_luks_read_slot() {
3700a9
     echo "${DATA_CODED}"
3700a9
 }
3700a9
 
3700a9
+# findexe() finds an executable.
3700a9
+findexe() {
3700a9
+    while read -r -d: path; do
3700a9
+        [ -f "${path}/${1}" ] && [ -x "${path}/${1}" ] && \
3700a9
+          echo "${path}/${1}" && return 0
3700a9
+    done <<< "${PATH}:"
3700a9
+    return 1
3700a9
+}
3700a9
+
3700a9
 # clevis_luks_used_slots() will return the list of used slots for a given LUKS
3700a9
 # device.
3700a9
 clevis_luks_used_slots() {
3700a9
-- 
3700a9
2.18.4
3700a9