aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Richey <joerichey94@gmail.com>2017-08-29 21:37:01 -0700
committerJoseph Richey <joerichey94@gmail.com>2017-08-29 21:37:01 -0700
commit83d4b499c505d3f5841fc0b0f8f29509622e870b (patch)
tree37ef55047f4d86662aab3ffc99de69f6b4a15e48
parentfaec58eb20569513427c4defb84e54cb68e5a56a (diff)
pam_fscrypt: Handle empty arguments list
-rw-r--r--pam_fscrypt/run_fscrypt.go3
-rw-r--r--pam_fscrypt/run_test.go35
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")
+ }
+}