Skip to content

Commit bebb5c6

Browse files
authored
Add opaque Payload property to AuditMessage (#153)
* Add opaque Payload property to AuditMessage * Add opaque Payload property to AuditMessage * Replace deprecated ioutil * Get rid of go.uber.org/multierr dependency * Update go to 1.21 * Rollback the golden file check, apparently it creates the different file on Mac vs Linux, so the test on Mac fails while works on Linux * Address code review feedback
1 parent e1703ad commit bebb5c6

File tree

13 files changed

+39
-32
lines changed

13 files changed

+39
-32
lines changed

aucoalesce/coalesce_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"bufio"
2222
"encoding/json"
2323
"flag"
24-
"io/ioutil"
2524
"os"
2625
"path/filepath"
2726
"sort"
@@ -110,7 +109,7 @@ func testCoalesceEvent(t *testing.T, file string) {
110109
}
111110

112111
func readEventsFromYAML(t testing.TB, name string) []testEvent {
113-
file, err := ioutil.ReadFile(name)
112+
file, err := os.ReadFile(name)
114113
if err != nil {
115114
t.Fatal(err)
116115
}
@@ -184,7 +183,7 @@ func writeGoldenFile(name string, events []testEventOutput) error {
184183
func readGoldenFile(name string) ([]map[string]interface{}, error) {
185184
name = strings.TrimSuffix(name, ".yaml")
186185

187-
data, err := ioutil.ReadFile(name + ".json.golden")
186+
data, err := os.ReadFile(name + ".json.golden")
188187
if err != nil {
189188
return nil, err
190189
}

aucoalesce/normalize_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
package aucoalesce
1919

2020
import (
21-
"io/ioutil"
21+
"os"
2222
"testing"
2323

2424
"github.com/stretchr/testify/assert"
@@ -31,7 +31,7 @@ func TestNormInit(t *testing.T) {
3131
}
3232

3333
func TestLoadNormalizationConfig(t *testing.T) {
34-
b, err := ioutil.ReadFile("normalizations.yaml")
34+
b, err := os.ReadFile("normalizations.yaml")
3535
if err != nil {
3636
t.Fatal(err)
3737
}

audit.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ import (
3030
"time"
3131
"unsafe"
3232

33-
"go.uber.org/multierr"
34-
3533
"github.com/elastic/go-libaudit/v2/auparse"
3634
)
3735

@@ -441,7 +439,7 @@ func (c *AuditClient) Close() error {
441439
err = c.set(status, NoWait)
442440
}
443441

444-
err = multierr.Append(err, c.Netlink.Close())
442+
err = errors.Join(err, c.Netlink.Close())
445443
})
446444

447445
return err

auparse/auparse.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ type AuditMessage struct {
5656
Sequence uint32 // Sequence parsed from payload.
5757
RawData string // Raw message as a string.
5858

59+
Payload interface{} // Opaque payload. This can be anything that is needed to be preserved along with the message and returned back after aggregation.
60+
5961
offset int // offset is the index into RawData where the header ends and message begins.
6062
data map[string]string // The key value pairs parsed from the message.
6163
tags []string // The keys associated with the event (e.g. the values set in rules with -F key=exec).

auparse/auparse_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"encoding/json"
2323
"flag"
2424
"fmt"
25-
"io/ioutil"
2625
"os"
2726
"path/filepath"
2827
"regexp"
@@ -436,7 +435,7 @@ func writeGoldenFile(sourceName string, events []*AuditMessage) error {
436435
}
437436

438437
func readGoldenFile(name string) ([]*StoredAuditMessage, error) {
439-
data, err := ioutil.ReadFile(name)
438+
data, err := os.ReadFile(name)
440439
if err != nil {
441440
return nil, err
442441
}
@@ -480,7 +479,7 @@ func BenchmarkParseLogLine(b *testing.B) {
480479
require.NoError(b, err)
481480
var msgs []string
482481
for _, f := range files {
483-
data, err := ioutil.ReadFile(f)
482+
data, err := os.ReadFile(f)
484483
require.NoError(b, err)
485484
for _, line := range strings.Split(strings.TrimSpace(string(data)), "\n") {
486485
if _, err = ParseLogLine(line); err == nil {

auparse/mk_audit_exit_codes.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"bytes"
2626
"flag"
2727
"fmt"
28-
"io/ioutil"
2928
"os"
3029
"os/exec"
3130
"path/filepath"
@@ -144,7 +143,7 @@ func readErrorNumbers() ([]ErrorNumber, error) {
144143
}
145144

146145
func run() error {
147-
tmp, err := ioutil.TempDir("", "mk_audit_exit_codes")
146+
tmp, err := os.MkdirTemp("", "mk_audit_exit_codes")
148147
if err != nil {
149148
return err
150149
}
@@ -202,7 +201,7 @@ func run() error {
202201
}
203202
}
204203

205-
if err = ioutil.WriteFile(flagOut, buf.Bytes(), 0o644); err != nil {
204+
if err = os.WriteFile(flagOut, buf.Bytes(), 0o644); err != nil {
206205
return err
207206
}
208207

auparse/mk_audit_msg_types.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
"flag"
2727
"fmt"
2828
"io"
29-
"io/ioutil"
3029
"net/http"
3130
"os"
3231
"os/exec"
@@ -246,7 +245,7 @@ func readRecordTypes() (map[string]int, error) {
246245
}
247246

248247
func run() error {
249-
tmp, err := ioutil.TempDir("", "mk_audit_msg_types")
248+
tmp, err := os.MkdirTemp("", "mk_audit_msg_types")
250249
if err != nil {
251250
return err
252251
}

go.mod

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
module github.com/elastic/go-libaudit/v2
22

3-
go 1.16
3+
go 1.21
44

55
require (
66
github.com/elastic/go-licenser v0.4.1
77
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
88
github.com/stretchr/testify v1.7.0
9-
go.uber.org/multierr v1.7.0
109
golang.org/x/sys v0.11.0
1110
gopkg.in/yaml.v2 v2.4.0
1211
)
12+
13+
require (
14+
github.com/davecgh/go-spew v1.1.1 // indirect
15+
github.com/pmezard/go-difflib v1.0.0 // indirect
16+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
17+
)

go.sum

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,9 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:C
88
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
99
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1010
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
11-
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
1211
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
1312
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
1413
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
15-
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
16-
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
17-
go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec=
18-
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
1914
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
2015
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
2116
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=

reassembler_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ func testReassembler(t testing.TB, file string, expected *results) {
128128
continue
129129
}
130130

131+
// Attach some predictable Payload
132+
msg.Payload = createTestPayload(msg)
133+
131134
reassmbler.PushMessage(msg)
132135
}
133136

@@ -144,11 +147,21 @@ func testReassembler(t testing.TB, file string, expected *results) {
144147

145148
for _, msg := range stream.events[i] {
146149
assert.EqualValues(t, expectedEvent.seq, msg.Sequence, "sequence number")
150+
151+
// Verify that custom payload is preserved
152+
assert.Equal(t, createTestPayload(msg), msg.Payload)
147153
}
148154
assert.Equal(t, expectedEvent.count, len(stream.events[i]), "message count")
149155
}
150156
}
151157

158+
func createTestPayload(msg *auparse.AuditMessage) map[string]interface{} {
159+
return map[string]interface{}{
160+
"seq": msg.Sequence,
161+
"typ": msg.RecordType,
162+
}
163+
}
164+
152165
func TestSequenceNumSliceSort(t *testing.T) {
153166
expected := sequenceNumSlice{maxSeq - 5, maxSeq - 4, maxSeq - 3, maxSeq - 2, maxSeq, 0, 1, 2, 3, 4}
154167
seqs := sequenceNumSlice{maxSeq - 5, maxSeq - 4, 0, 1, 2, maxSeq - 3, maxSeq - 2, maxSeq, 3, 4}

0 commit comments

Comments
 (0)