diff options
| author | Joseph Richey <joerichey94@gmail.com> | 2017-08-29 21:37:01 -0700 |
|---|---|---|
| committer | Joseph Richey <joerichey94@gmail.com> | 2017-08-29 21:37:01 -0700 |
| commit | 83d4b499c505d3f5841fc0b0f8f29509622e870b (patch) | |
| tree | 37ef55047f4d86662aab3ffc99de69f6b4a15e48 | |
| parent | faec58eb20569513427c4defb84e54cb68e5a56a (diff) | |
pam_fscrypt: Handle empty arguments list
| -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") + } +} |