Skip to content

Commit 127abf9

Browse files
authored
Merge pull request #72 from parca-dev/fix-oom
Safeguard read of sizetrace
2 parents 911d0dc + e1e40ab commit 127abf9

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

interpreter/luajit/offsets_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ func TestFiles(t *testing.T) {
229229
require.NoError(t, err)
230230

231231
err = extractOffsets(ef, &ljd, interp)
232-
require.NoError(t, err)
232+
require.NoError(t, err, de)
233233
require.NotZero(t, ljd.currentLOffset)
234234
require.NotZero(t, ljd.g2Traces)
235235
require.NotZero(t, ljd.g2Dispatch)

interpreter/luajit/trace.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ package luajit // import "go.opentelemetry.io/ebpf-profiler/interpreter/luajit"
1414
import (
1515
"encoding/binary"
1616
"errors"
17+
"fmt"
1718
"hash/fnv"
1819

1920
"go.opentelemetry.io/ebpf-profiler/libpf"
@@ -59,6 +60,9 @@ func getAndHashTraceAddrs(tracesAddr libpf.Address, rm remotememory.RemoteMemory
5960
if err := rm.Read(tracesAddr, libpf.SliceFrom(&j)); err != nil {
6061
return 0, 0, nil, err
6162
}
63+
if j.sizetrace > 65535 {
64+
return 0, 0, nil, fmt.Errorf("invalid sizetrace %d (traces:%x)", j.sizetrace, tracesAddr)
65+
}
6266
traceAddrs = []libpf.Address{}
6367
b := make([]byte, 8)
6468
h := fnv.New64()

0 commit comments

Comments
 (0)