mirror of
https://github.com/anchore/syft.git
synced 2025-11-19 01:13:18 +01:00
* add initial secrets cataloger Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update ETUI elements with new catalogers (file metadata, digests, and secrets) Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update secrets cataloger to read full contents into memory for searching Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * quick prototype of parallelization secret regex search Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * quick prototype with single aggregated regex Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * quick prototype for secret search line-by-line Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * quick prototype hybrid secrets search Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add secrets cataloger with line strategy Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * adjust verbiage towards SearchResults instead of Secrets + add tests Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update json schema with secrets cataloger results Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * address PR comments Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update readme with secrets config options Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * ensure file catalogers call AllLocations once Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
40 lines
668 B
Go
40 lines
668 B
Go
package file
|
|
|
|
import "io"
|
|
|
|
type newlineCounter struct {
|
|
io.RuneReader
|
|
numBytes int64
|
|
newLines []int64
|
|
}
|
|
|
|
func (c *newlineCounter) ReadRune() (r rune, size int, err error) {
|
|
r, size, err = c.RuneReader.ReadRune()
|
|
c.numBytes += int64(size)
|
|
if r == '\n' {
|
|
c.newLines = append(c.newLines, c.numBytes)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (c *newlineCounter) newlinesBefore(pos int64) int {
|
|
var result int
|
|
for _, nlPos := range c.newLines {
|
|
if nlPos <= pos {
|
|
result++
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func (c *newlineCounter) newlinePositionBefore(pos int64) int64 {
|
|
var last int64
|
|
for _, nlPos := range c.newLines {
|
|
if nlPos > pos {
|
|
break
|
|
}
|
|
last = nlPos
|
|
}
|
|
return last
|
|
}
|