Projects STRLCPY bearer Commits 12d673c7
🤬
  • feat: make string literal detector filter nil for empty string

  • Loading...
  • David Roe committed 1 year ago
    12d673c7
    1 parent 97e8e408
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■
    new/detector/composition/javascript/javascript.go
    skipped 15 lines
    16 16   "github.com/bearer/bearer/new/detector/implementation/custom"
    17 17   "github.com/bearer/bearer/new/detector/implementation/generic/datatype"
    18 18   "github.com/bearer/bearer/new/detector/implementation/generic/insecureurl"
    19  - "github.com/bearer/bearer/new/detector/implementation/generic/stringliteral"
    20 19   "github.com/bearer/bearer/new/detector/implementation/javascript/object"
    21 20   "github.com/bearer/bearer/new/detector/implementation/javascript/property"
    22 21   "github.com/bearer/bearer/new/language"
    skipped 40 lines
    63 62   {
    64 63   constructor: insecureurl.New,
    65 64   name: "insecure url detector",
    66  - },
    67  - {
    68  - constructor: stringliteral.New,
    69  - name: "string literal detector",
    70 65   },
    71 66   }
    72 67   
    skipped 126 lines
  • ■ ■ ■ ■ ■
    new/detector/composition/ruby/ruby.go
    skipped 10 lines
    11 11   "github.com/bearer/bearer/new/detector/implementation/custom"
    12 12   "github.com/bearer/bearer/new/detector/implementation/generic/datatype"
    13 13   "github.com/bearer/bearer/new/detector/implementation/generic/insecureurl"
    14  - "github.com/bearer/bearer/new/detector/implementation/generic/stringliteral"
    15 14   "github.com/bearer/bearer/new/detector/implementation/ruby/object"
    16 15   "github.com/bearer/bearer/new/detector/implementation/ruby/property"
    17 16   "github.com/bearer/bearer/new/language"
    skipped 44 lines
    62 61   {
    63 62   constructor: insecureurl.New,
    64 63   name: "insecure url detector",
    65  - },
    66  - {
    67  - constructor: stringliteral.New,
    68  - name: "string literal detector",
    69 64   },
    70 65   }
    71 66   
    skipped 124 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/implementation/custom/filter.go
    skipped 4 lines
    5 5   
    6 6   "golang.org/x/exp/slices"
    7 7   
     8 + generictypes "github.com/bearer/bearer/new/detector/implementation/generic/types"
    8 9   "github.com/bearer/bearer/new/detector/types"
    9 10   "github.com/bearer/bearer/new/language/tree"
    10 11   languagetypes "github.com/bearer/bearer/new/language/types"
    skipped 107 lines
    118 119   detections, err := evaluateDetections(node, "datatype", true)
    119 120   
    120 121   return boolPointer(len(detections) != 0), detections, err
     122 + }
     123 + 
     124 + if detectorType == "string_literal" {
     125 + detections, err := evaluateDetections(node, "string", true)
     126 + if err != nil {
     127 + return nil, nil, err
     128 + }
     129 + 
     130 + hasEmptyString := false
     131 + 
     132 + for _, detection := range detections {
     133 + stringData := detection.Data.(generictypes.String)
     134 + if stringData.IsLiteral {
     135 + if stringData.Value != "" {
     136 + return boolPointer(true), nil, nil
     137 + }
     138 + 
     139 + hasEmptyString = true
     140 + }
     141 + }
     142 + 
     143 + if hasEmptyString {
     144 + return nil, nil, nil
     145 + }
     146 + 
     147 + return boolPointer(false), nil, nil
    121 148   }
    122 149   
    123 150   hasDetection, err := evaluateHasDetection(node, detectorType)
    skipped 63 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/implementation/generic/stringliteral/stringliteral.go
    1  -package stringliteral
    2  - 
    3  -import (
    4  - "github.com/bearer/bearer/new/detector/types"
    5  - "github.com/bearer/bearer/new/language/tree"
    6  - 
    7  - generictypes "github.com/bearer/bearer/new/detector/implementation/generic/types"
    8  - languagetypes "github.com/bearer/bearer/new/language/types"
    9  -)
    10  - 
    11  -type stringLiteralDetector struct {
    12  - types.DetectorBase
    13  -}
    14  - 
    15  -func New(lang languagetypes.Language) (types.Detector, error) {
    16  - return &stringLiteralDetector{}, nil
    17  -}
    18  - 
    19  -func (detector *stringLiteralDetector) Name() string {
    20  - return "string_literal"
    21  -}
    22  - 
    23  -func (detector *stringLiteralDetector) DetectAt(
    24  - node *tree.Node,
    25  - evaluator types.Evaluator,
    26  -) ([]interface{}, error) {
    27  - detections, err := evaluator.ForNode(node, "string", false)
    28  - if err != nil {
    29  - return nil, err
    30  - }
    31  - 
    32  - for _, detection := range detections {
    33  - if detection.Data.(generictypes.String).IsLiteral {
    34  - if len(detection.Data.(generictypes.String).Value) > 0 {
    35  - return []interface{}{nil}, nil
    36  - }
    37  - }
    38  - }
    39  - 
    40  - return nil, nil
    41  -}
    42  - 
    43  -func (detector *stringLiteralDetector) Close() {}
    44  - 
Please wait...
Page is in error, reload to recover