summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2007-05-17 15:34:51 +0000
committermarcel <marcel@FreeBSD.org>2007-05-17 15:34:51 +0000
commit39b684b294257f663fb44b309d588692719421cc (patch)
tree42e38766e7a4fea4c149b346680ce7bc5ba7c306 /sbin
parent4a84495e500fc791e7b690fc62edf35c57a3982c (diff)
downloadFreeBSD-src-39b684b294257f663fb44b309d588692719421cc.zip
FreeBSD-src-39b684b294257f663fb44b309d588692719421cc.tar.gz
Fix the construction of the gctl_req that got broken by my
previous commit and that introduced optional parameters. Existing classes (like geli(8)) use empty strings by default and expect the parameter to be passed to the kernel as such. Also, the default value of a string argument can be NULL. Fix both cases by making the optional parameter conditional upon gc_argname being set and making sure to test for NULL before dereferencing the pointer. Reported by: brueffer@
Diffstat (limited to 'sbin')
-rw-r--r--sbin/geom/core/geom.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sbin/geom/core/geom.c b/sbin/geom/core/geom.c
index 7547f50..1b9ea6b 100644
--- a/sbin/geom/core/geom.c
+++ b/sbin/geom/core/geom.c
@@ -330,7 +330,9 @@ parse_arguments(struct g_command *cmd, struct gctl_req *req, int *argc,
gctl_ro_param(req, opt->go_name,
sizeof(intmax_t), opt->go_val);
} else if (G_OPT_TYPE(opt) == G_TYPE_STRING) {
- if (*(char *)opt->go_val != '\0')
+ if (cmd->gc_argname == NULL ||
+ opt->go_val == NULL ||
+ *(char *)opt->go_val != '\0')
gctl_ro_param(req, opt->go_name,
-1, opt->go_val);
} else {
OpenPOWER on IntegriCloud