aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-04-10 11:34:12 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-04-10 10:01:23 +0000
commit20a08e76bdb980262f5760bd4fb61bdf80588edb (patch)
tree830ae0d934d585b9b2e7237cc6fb88e5980deb88 /pkg
parentf532fe426046975c460a0b19625dc730100fbd0e (diff)
pkg/report: add more assertions
It should hopefully help debug #4198.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/report/linux.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
index ad3557a0e..8d44893f9 100644
--- a/pkg/report/linux.go
+++ b/pkg/report/linux.go
@@ -376,7 +376,14 @@ func (ctx *linux) Symbolize(rep *Report) error {
}
}
+ oldLen := len(rep.Report)
rep.Report = ctx.decompileOpcodes(rep.Report, rep)
+ if len(rep.Report) > 0 && rep.reportPrefixLen > len(rep.Report) {
+ // An attempt to catch #4198.
+ panic(fmt.Sprintf("invalid reportPrefixLen (%d) after decompileOpcodes, report len: %d -> %d, report: %+v",
+ rep.reportPrefixLen, oldLen, len(rep.Report), rep,
+ ))
+ }
// Skip getting maintainers for Android fuzzing since the kernel source
// directory structure is different.
@@ -415,8 +422,18 @@ func (ctx *linux) symbolize(rep *Report) error {
}
symbolized = append(symbolized, newLine...)
}
+ oldLen := len(rep.Report)
rep.Report = symbolized
+ oldPrefixLen := rep.reportPrefixLen
rep.reportPrefixLen = prefix
+
+ if len(rep.Report) > 0 && rep.reportPrefixLen > len(rep.Report) {
+ // An attempt to catch #4198.
+ panic(fmt.Sprintf("invalid reportPrefixLen after symbolize: prefix %d -> %d,"+
+ "report len: %d -> %d, report: %+v",
+ oldPrefixLen, rep.reportPrefixLen, oldLen, len(rep.Report), rep,
+ ))
+ }
return nil
}