summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@ideasonboard.com>2024-01-09 14:16:23 +0000
committerKieran Bingham <kieran.bingham@ideasonboard.com>2024-01-09 15:39:04 +0000
commitffcd1b2804bf32be0aa96c108f9b3b2bfebdfa99 (patch)
tree5600e458b95250edfdf95bbf6e33891a9d11004b
parentd8a17149cbb99b850156fb0cd705fb25eb752167 (diff)
hooks: pre-push: Disable interpretation of escape sequences
The pre-push hook validates the commit messages utilising 'echo' to send the captured data from the git commit through grep. Commit messages may occasionally contain strings that could appear to be escape sequences such as doxygen style references to \struct. The '\' 'c' escape sequence can be interpreted to supress all further output [0] which then breaks the processing and string matching. Unfortunatley for us, doxygen's class reference constructed in the same form as \struct can be interpreted as the escape sequence to supress further output. [0] https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins Update the pre-push hook to explicitly disable escape sequence interpretation using the '-E' flag. This is not available on the posix-compliant shell 'dash', so also switch to bash explicitly to prevent potential failures. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rwxr-xr-xutils/hooks/pre-push12
1 files changed, 6 insertions, 6 deletions
diff --git a/utils/hooks/pre-push b/utils/hooks/pre-push
index 90ffdf6f..9918b286 100755
--- a/utils/hooks/pre-push
+++ b/utils/hooks/pre-push
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
@@ -61,7 +61,7 @@ do
msg=$(git cat-file commit "$commit")
# 1. The commit message shall not contain a local changelog.
- if echo "$msg" | grep -q '^--- *$'
+ if echo -E "$msg" | grep -q '^--- *$'
then
echo >&2 "Found local changelog in commit $commit"
errors=$((errors+1))
@@ -71,7 +71,7 @@ do
# corresponding the committer and the author.
committer=$(echo "$msg" | grep '^committer ' | head -1 | \
cut -d ' ' -f 2- | rev | cut -d ' ' -f 3- | rev)
- if ! echo "$msg" | grep -F -q "Signed-off-by: ${committer}"
+ if ! echo -E "$msg" | grep -F -q "Signed-off-by: ${committer}"
then
echo >&2 "Missing committer Signed-off-by in commit $commit"
errors=$((errors+1))
@@ -79,21 +79,21 @@ do
author=$(echo "$msg" | grep '^author ' | head -1 | \
cut -d ' ' -f 2- | rev | cut -d ' ' -f 3- | rev)
- if ! echo "$msg" | grep -F -q "Signed-off-by: ${author}"
+ if ! echo -E "$msg" | grep -F -q "Signed-off-by: ${author}"
then
echo >&2 "Missing author Signed-off-by in commit $commit"
errors=$((errors+1))
fi
# 3. A Reviewed-by or Acked-by is required.
- if ! echo "$msg" | grep -q '^\(Reviewed\|Acked\)-by: '
+ if ! echo -E "$msg" | grep -q '^\(Reviewed\|Acked\)-by: '
then
echo >&2 "No Reviewed-by or Acked-by in commit $commit"
errors=$((errors+1))
fi
# 4. The commit message shall not contain a Change-Id.
- if echo "$msg" | grep -q '^Change-Id:'
+ if echo -E "$msg" | grep -q '^Change-Id:'
then
echo >&2 "Found Change-Id in commit $commit"
errors=$((errors+1))