mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-11 12:25:53 +02:00
fix the float comparison by using Abs(a,b) < 1e-6 approach (IEEE 754). Move the initializiation of expr helpers (#2492)
This commit is contained in:
parent
9dba6db676
commit
8f6659a2ec
3 changed files with 39 additions and 15 deletions
|
@ -4,6 +4,7 @@ import (
|
|||
"bufio"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"math"
|
||||
"net"
|
||||
"net/url"
|
||||
"os"
|
||||
|
@ -54,6 +55,16 @@ var exprFunctionOptions []expr.Option
|
|||
var keyValuePattern = regexp.MustCompile(`(?P<key>[^=\s]+)=(?:"(?P<quoted_value>[^"\\]*(?:\\.[^"\\]*)*)"|(?P<value>[^=\s]+)|\s*)`)
|
||||
|
||||
func GetExprOptions(ctx map[string]interface{}) []expr.Option {
|
||||
if len(exprFunctionOptions) == 0 {
|
||||
exprFunctionOptions = []expr.Option{}
|
||||
for _, function := range exprFuncs {
|
||||
exprFunctionOptions = append(exprFunctionOptions,
|
||||
expr.Function(function.name,
|
||||
function.function,
|
||||
function.signature...,
|
||||
))
|
||||
}
|
||||
}
|
||||
ret := []expr.Option{}
|
||||
ret = append(ret, exprFunctionOptions...)
|
||||
ret = append(ret, expr.Env(ctx))
|
||||
|
@ -66,15 +77,6 @@ func Init(databaseClient *database.Client) error {
|
|||
dataFileRe2 = make(map[string][]*re2.Regexp)
|
||||
dbClient = databaseClient
|
||||
|
||||
exprFunctionOptions = []expr.Option{}
|
||||
for _, function := range exprFuncs {
|
||||
exprFunctionOptions = append(exprFunctionOptions,
|
||||
expr.Function(function.name,
|
||||
function.function,
|
||||
function.signature...,
|
||||
))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -589,6 +591,16 @@ func Match(params ...any) (any, error) {
|
|||
return matched, nil
|
||||
}
|
||||
|
||||
func FloatApproxEqual(params ...any) (any, error) {
|
||||
float1 := params[0].(float64)
|
||||
float2 := params[1].(float64)
|
||||
|
||||
if math.Abs(float1-float2) < 1e-6 {
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func B64Decode(params ...any) (any, error) {
|
||||
encoded := params[0].(string)
|
||||
decoded, err := base64.StdEncoding.DecodeString(encoded)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue