Error when accessing table with undefined param

When using the SQL table() function to define a table with an undefined paramater `table($undefined)`, the database would attempt to access a nil table, and would eventually crash.
This commit is contained in:
Tobie Morgan Hitchcock 2018-09-24 18:04:45 +01:00
parent 480ae04046
commit 1a0c8b018f
4 changed files with 33 additions and 0 deletions

View file

@ -17,11 +17,19 @@ package fncs
import ( import (
"context" "context"
"github.com/abcum/surreal/mem"
"github.com/abcum/surreal/sql" "github.com/abcum/surreal/sql"
) )
func batch(ctx context.Context, args ...interface{}) (interface{}, error) { func batch(ctx context.Context, args ...interface{}) (interface{}, error) {
tb, _ := ensureString(args[0]) tb, _ := ensureString(args[0])
id, _ := ensureSlice(args[1]) id, _ := ensureSlice(args[1])
if len(tb) == 0 {
return nil, mem.ErrorTBNotFound
}
return sql.NewBatch(tb, id), nil return sql.NewBatch(tb, id), nil
} }

View file

@ -17,11 +17,18 @@ package fncs
import ( import (
"context" "context"
"github.com/abcum/surreal/mem"
"github.com/abcum/surreal/sql" "github.com/abcum/surreal/sql"
) )
func model(ctx context.Context, args ...interface{}) (interface{}, error) { func model(ctx context.Context, args ...interface{}) (interface{}, error) {
tb, _ := ensureString(args[0]) tb, _ := ensureString(args[0])
if len(tb) == 0 {
return nil, mem.ErrorTBNotFound
}
switch len(args) { switch len(args) {
case 2: case 2:
if max, ok := ensureFloat(args[1]); ok { if max, ok := ensureFloat(args[1]); ok {
@ -42,5 +49,7 @@ func model(ctx context.Context, args ...interface{}) (interface{}, error) {
} }
} }
} }
return nil, nil return nil, nil
} }

View file

@ -17,10 +17,18 @@ package fncs
import ( import (
"context" "context"
"github.com/abcum/surreal/mem"
"github.com/abcum/surreal/sql" "github.com/abcum/surreal/sql"
) )
func table(ctx context.Context, args ...interface{}) (interface{}, error) { func table(ctx context.Context, args ...interface{}) (interface{}, error) {
tb, _ := ensureString(args[0]) tb, _ := ensureString(args[0])
if len(tb) == 0 {
return nil, mem.ErrorTBNotFound
}
return sql.NewTable(tb), nil return sql.NewTable(tb), nil
} }

View file

@ -17,10 +17,18 @@ package fncs
import ( import (
"context" "context"
"github.com/abcum/surreal/mem"
"github.com/abcum/surreal/sql" "github.com/abcum/surreal/sql"
) )
func thing(ctx context.Context, args ...interface{}) (interface{}, error) { func thing(ctx context.Context, args ...interface{}) (interface{}, error) {
tb, _ := ensureString(args[0]) tb, _ := ensureString(args[0])
if len(tb) == 0 {
return nil, mem.ErrorTBNotFound
}
return sql.NewThing(tb, args[1]), nil return sql.NewThing(tb, args[1]), nil
} }