aboutsummaryrefslogtreecommitdiff
path: root/sys/geom/virstor
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2010-02-02 22:25:22 +0000
committerXin LI <delphij@FreeBSD.org>2010-02-02 22:25:22 +0000
commit38907b4cc7ddbda8f26a2f55ee2c2065731f0fbc (patch)
tree4f0267abb9251b0d33ece971f37e262158da9b69 /sys/geom/virstor
parentd577d18a00085621ed1e31e461c4f186fa8631f4 (diff)
downloadsrc-38907b4cc7ddbda8f26a2f55ee2c2065731f0fbc.tar.gz
src-38907b4cc7ddbda8f26a2f55ee2c2065731f0fbc.zip
Prevent NULL deference by checking return value of
gctl_get_asciiparam. MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=203408
Diffstat (limited to 'sys/geom/virstor')
-rw-r--r--sys/geom/virstor/g_virstor.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/geom/virstor/g_virstor.c b/sys/geom/virstor/g_virstor.c
index cd84b05c7a69..efdba4ba3ff0 100644
--- a/sys/geom/virstor/g_virstor.c
+++ b/sys/geom/virstor/g_virstor.c
@@ -311,6 +311,11 @@ virstor_ctl_add(struct gctl_req *req, struct g_class *cp)
snprintf(aname, sizeof aname, "arg%d", i);
prov_name = gctl_get_asciiparam(req, aname);
+ if (prov_name == NULL) {
+ gctl_error(req, "Error fetching argument '%s'", aname);
+ g_topology_unlock();
+ return;
+ }
if (strncmp(prov_name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
prov_name += strlen(_PATH_DEV);
@@ -565,6 +570,10 @@ virstor_ctl_remove(struct gctl_req *req, struct g_class *cp)
sprintf(param, "arg%d", i);
prov_name = gctl_get_asciiparam(req, param);
+ if (prov_name == NULL) {
+ gctl_error(req, "Error fetching argument '%s'", param);
+ return;
+ }
if (strncmp(prov_name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
prov_name += strlen(_PATH_DEV);