From 3525012cf157849ce8b227220571a83aa1c37688 Mon Sep 17 00:00:00 2001 From: luis Date: Tue, 23 Aug 2005 16:57:20 +0000 Subject: Fixed a possible infinite loop on function GetMessageHeaders and made some minor changes to variable DATE. --- firma | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/firma b/firma index 1684396..0881dba 100755 --- a/firma +++ b/firma @@ -198,28 +198,31 @@ function GetMessageHeaders { #------------------------------------------------------------- local element + local first_blank_line - # store all headers in array ORIG_MESSAGE_HEADERS + # find the first blank line in the message for element in $(seq 0 $((${#ORIG_MESSAGE[@]} - 1))); do - until [[ "${ORIG_MESSAGE[$element]}" == "\n" ]]; do - ORIG_MESSAGE_HEADERS[$element]="${ORIG_MESSAGE[$element]}" - ((++element)) - done - # done, reached first blank line in message - # exit for loop - break 1 + if [[ "${ORIG_MESSAGE[$element]}" == "\n" ]]; then + first_blank_line=$element + # store all lines up to this one in array ORIG_MESSAGE_HEADERS + for element in $(seq 0 $(($first_blank_line - 1))); do + ORIG_MESSAGE_HEADERS[$element]="${ORIG_MESSAGE[$element]}" + done + # done, exit for loop + break 1 + fi done # list ORIG_MESSAGE_HEADERS and get some specific headers for later use FROM=$(echo -e "${ORIG_MESSAGE_HEADERS[@]}" | grep -m 1 '^ From:' | cut -d : -f 2- | sed -e 's/^ //') SENDER_ADDRESS=$(if [[ -z "$(echo $FROM | grep '>$')" ]]; then echo $FROM; else echo $FROM | grep -o '<[^<>]*>$' | sed -e 's/[<>]//g'; fi) - DATE=$(echo -e "${ORIG_MESSAGE_HEADERS[@]}" | grep -m 1 '^ Date:' | sed -e 's/^ //') + DATE=$(echo -e "${ORIG_MESSAGE_HEADERS[@]}" | grep -m 1 '^ Date:' | cut -d : -f 2- | sed -e 's/^ //') SUBJECT=$(echo -e "${ORIG_MESSAGE_HEADERS[@]}" | grep -m 1 '^ Subject:' | cut -d : -f 2- | sed -e 's/^ //') # check if message headers were successfully stored in ORIG_MESSAGE_HEADERS if [[ "${#ORIG_MESSAGE_HEADERS[@]}" -eq "0" ]]; then echo "$(basename $0): Message headers could not be located within this message." - return 1 + exit 1 fi } @@ -320,7 +323,7 @@ function SendListMessage { MESSAGE_BODY=( $(echo "$PASSPHRASE Message from: $FROM Subject: $SUBJECT -$DATE +Date: $DATE $(GetGpgDecryptStderr | grep '^gpg: Signature made') $(GetGpgDecryptStderr | grep '^gpg: Good signature from') @@ -346,7 +349,7 @@ function SendWarningMessage { MESSAGE_BODY=( $(echo "$PASSPHRASE Message from: $FROM Subject: [BAD SIGNATURE] $SUBJECT -$DATE +Date: $DATE $(GetGpgDecryptStderr | grep '^gpg: Signature made') $(GetGpgDecryptStderr | grep '^gpg: BAD signature from') @@ -374,7 +377,7 @@ Subject: none Message from: $FROM Subject: [RETURNED MAIL] $SUBJECT -$DATE +Date: $DATE It was not possible to process this message. Either or both the message was not encrypted and/or signed, or you are not -- cgit v1.2.3