diff options
author | luis <luis> | 2005-08-23 16:57:20 +0000 |
---|---|---|
committer | luis <luis> | 2005-08-23 16:57:20 +0000 |
commit | 3525012cf157849ce8b227220571a83aa1c37688 (patch) | |
tree | f3ed57bef0f074158641003e02333b7e708fe5a8 | |
parent | 137d46090a787f5992a3114a1e3782c113b5facf (diff) | |
download | firma-3525012cf157849ce8b227220571a83aa1c37688.tar.gz firma-3525012cf157849ce8b227220571a83aa1c37688.tar.bz2 |
Fixed a possible infinite loop on function GetMessageHeaders and made some minor changes to variable DATE.
-rwxr-xr-x | firma | 29 |
1 files changed, 16 insertions, 13 deletions
@@ -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 |