aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Jeffery <dev@jeffas.io>2020-07-02 18:54:17 +0100
committerReto Brunner <reto@labrat.space>2020-07-03 18:26:16 +0200
commit0acd6d0770d6534489e5fb54ce744838e81571ff (patch)
tree20e3ab9e97621c6a96d3575e7548eaa3fea192ca
parente1c2b596dc9e45976253d75a6b704914fcdcb82c (diff)
downloadaerc-0acd6d0770d6534489e5fb54ce744838e81571ff.tar.gz
Fix a nil Envelope when getting the format
When getting the format for a message the envelope can be nil and this shouldn't crash the program.
-rw-r--r--lib/format/format.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/format/format.go b/lib/format/format.go
index b66a1802..5f45e588 100644
--- a/lib/format/format.go
+++ b/lib/format/format.go
@@ -76,6 +76,10 @@ func ParseMessageFormat(
case '%':
retval = append(retval, '%')
case 'a':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.From) == 0 {
return "", nil,
errors.New("found no address for sender")
@@ -85,6 +89,10 @@ func ParseMessageFormat(
args = append(args,
fmt.Sprintf("%s@%s", addr.Mailbox, addr.Host))
case 'A':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
var addr *models.Address
if len(msg.Envelope.ReplyTo) == 0 {
if len(msg.Envelope.From) == 0 {
@@ -111,6 +119,10 @@ func ParseMessageFormat(
args = append(args,
msg.InternalDate.Local().Format(timestampformat))
case 'f':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.From) == 0 {
return "", nil,
errors.New("found no address for sender")
@@ -119,6 +131,10 @@ func ParseMessageFormat(
retval = append(retval, 's')
args = append(args, addr)
case 'F':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.From) == 0 {
return "", nil,
errors.New("found no address for sender")
@@ -143,9 +159,17 @@ func ParseMessageFormat(
args = append(args, strings.Join(msg.Labels, ", "))
case 'i':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
retval = append(retval, 's')
args = append(args, msg.Envelope.MessageId)
case 'n':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.From) == 0 {
return "", nil,
errors.New("found no address for sender")
@@ -160,17 +184,33 @@ func ParseMessageFormat(
retval = append(retval, 's')
args = append(args, val)
case 'r':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
addrs := models.FormatAddresses(msg.Envelope.To)
retval = append(retval, 's')
args = append(args, addrs)
case 'R':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
addrs := models.FormatAddresses(msg.Envelope.Cc)
retval = append(retval, 's')
args = append(args, addrs)
case 's':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
retval = append(retval, 's')
args = append(args, msg.Envelope.Subject)
case 't':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.To) == 0 {
return "", nil,
errors.New("found no address for recipient")
@@ -183,6 +223,10 @@ func ParseMessageFormat(
retval = append(retval, 's')
args = append(args, accountName)
case 'u':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.From) == 0 {
return "", nil,
errors.New("found no address for sender")
@@ -191,6 +235,10 @@ func ParseMessageFormat(
retval = append(retval, 's')
args = append(args, addr.Mailbox)
case 'v':
+ if msg.Envelope == nil {
+ return "", nil,
+ errors.New("no envelope available for this message")
+ }
if len(msg.Envelope.From) == 0 {
return "", nil,
errors.New("found no address for sender")