Skip to content

Commit eef1775

Browse files
committed
Fix DHPLogMessage path
The DHPLogMessage path did not enforce base64 encoding of the message potentially creating invalid LogEvent resources Refs #279
1 parent d5615fd commit eef1775

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

queue/channel_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (n *nilStorer) StoreResources(_ []logging.Resource, count int) (*logging.St
6464
}
6565

6666
func TestChannelQueue(t *testing.T) {
67-
q, err := queue.NewChannelQueue()
67+
q, err := queue.NewChannelQueue(queue.WithMetrics(&nilMetrics{}))
6868
assert.Nil(t, err)
6969
assert.NotNil(t, q)
7070

queue/deliverer.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,19 @@ func ProcessMessage(rfcLogMessage syslog.Message, m Metrics) (*logging.Resource,
234234
}
235235

236236
msg = wrapResource("logproxy-wrapped", rfcLogMessage)
237+
237238
err = json.Unmarshal([]byte(*logMessage), &dhp)
238239
if err == nil {
239240
if dhp.TransactionID != "" {
240241
msg.TransactionID = dhp.TransactionID
241242
}
242243
if dhp.LogData.Message != "" {
243-
msg.LogData.Message = dhp.LogData.Message
244+
if !Base64Pattern.MatchString(dhp.LogData.Message) { // Encode
245+
msg.LogData.Message = base64.StdEncoding.EncodeToString([]byte(dhp.LogData.Message))
246+
m.IncEnhancedEncodedMessage()
247+
} else { // Already base64 encoded
248+
msg.LogData.Message = dhp.LogData.Message
249+
}
244250
}
245251
if dhp.ApplicationInstance != "" {
246252
msg.ApplicationInstance = dhp.ApplicationInstance

queue/deliverer_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package queue_test
22

33
import (
44
"bytes"
5+
"encoding/base64"
56
"io"
67
"os"
78
"regexp"
@@ -34,7 +35,7 @@ func TestCustomJSONInProcessMessage(t *testing.T) {
3435
assert.Nilf(t, err, "Expected Parse() to succeed")
3536
resource, err := queue.ProcessMessage(msg, &nilMetrics{})
3637
assert.Nilf(t, err, "Expected ProcessMessage() to succeed")
37-
assert.Equal(t, `Log message`, resource.LogData.Message)
38+
assert.Equal(t, base64.StdEncoding.EncodeToString([]byte(`Log message`)), resource.LogData.Message)
3839

3940
}
4041

@@ -116,7 +117,8 @@ func TestProcessMessage(t *testing.T) {
116117
assert.Equal(t, "com.philips.MyLoggingClass%28%29", resource.ServiceName)
117118
assert.Equal(t, "%40396f1a94-86f3-470b-784c-17cc%3D%3D", resource.ServerName)
118119
assert.Equal(t, "FATAL%7C", resource.Severity)
119-
assert.Equal(t, payload, resource.LogData.Message)
120+
encoded := base64.StdEncoding.EncodeToString([]byte(payload))
121+
assert.Equal(t, encoded, resource.LogData.Message)
120122
assert.Equal(t, "logproxy%24,", resource.OriginatingUser)
121123

122124
msg, err = parser.Parse([]byte(nonDHPMessage))
@@ -174,7 +176,7 @@ func TestResourceWorker(t *testing.T) {
174176
assert.Nilf(t, err, "Expected NewDeliverer() to succeed")
175177
deliverer.Debug = true
176178

177-
q, _ := queue.NewChannelQueue()
179+
q, _ := queue.NewChannelQueue(queue.WithMetrics(&nilMetrics{}))
178180
done, _ := q.Start()
179181

180182
go deliverer.ResourceWorker(q, done, nil)
@@ -230,7 +232,7 @@ func TestDroppedMessages(t *testing.T) {
230232
assert.Nilf(t, err, "Expected NewDeliverer() to succeed")
231233
deliverer.Debug = true
232234

233-
q, _ := queue.NewChannelQueue()
235+
q, _ := queue.NewChannelQueue(queue.WithMetrics(&nilMetrics{}))
234236
done, _ := q.Start()
235237

236238
go deliverer.ResourceWorker(q, done, nil)

0 commit comments

Comments
 (0)