diff options
Diffstat (limited to 'pam_fscrypt')
| -rw-r--r-- | pam_fscrypt/run_fscrypt.go | 3 | ||||
| -rw-r--r-- | pam_fscrypt/run_test.go | 35 |
2 files changed, 38 insertions, 0 deletions
diff --git a/pam_fscrypt/run_fscrypt.go b/pam_fscrypt/run_fscrypt.go index 1527d42..3d73e87 100644 --- a/pam_fscrypt/run_fscrypt.go +++ b/pam_fscrypt/run_fscrypt.go @@ -82,6 +82,9 @@ func RunPamFunc(f PamFunc, pamh unsafe.Pointer, argc C.int, argv **C.char) C.int // where a key has a value of true if it appears in the argument list. func parseArgs(argc C.int, argv **C.char) map[string]bool { args := make(map[string]bool) + if argc == 0 || argv == nil { + return args + } for _, cString := range util.PointerSlice(unsafe.Pointer(argv))[:argc] { args[C.GoString((*C.char)(cString))] = true } diff --git a/pam_fscrypt/run_test.go b/pam_fscrypt/run_test.go new file mode 100644 index 0000000..1e74528 --- /dev/null +++ b/pam_fscrypt/run_test.go @@ -0,0 +1,35 @@ +/* + * run_test.go - tests that the PAM helper functionsd work properly + * + * Copyright 2017 Google Inc. + * Author: Joe Richey (joerichey@google.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package main + +import ( + "testing" +) + +func TestParseArgsEmpty(t *testing.T) { + // An empty argv should create a map with no entries + args := parseArgs(0, nil) + if args == nil { + t.Fatal("args map should not be nil") + } + if len(args) > 0 { + t.Fatal("args map should not have any entries") + } +} |