summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_ccd.c
diff options
context:
space:
mode:
authorlulf <lulf@FreeBSD.org>2008-11-25 20:28:33 +0000
committerlulf <lulf@FreeBSD.org>2008-11-25 20:28:33 +0000
commit12359ec70ec661ba582eacfd18561d9e3ca3ed4e (patch)
treebe696f3e2a655192f790a82d161fd1d98c3b025b /sys/geom/geom_ccd.c
parent2ba03c359594560a88ae0e4cf2399165f29b3852 (diff)
downloadFreeBSD-src-12359ec70ec661ba582eacfd18561d9e3ca3ed4e.zip
FreeBSD-src-12359ec70ec661ba582eacfd18561d9e3ca3ed4e.tar.gz
- Fix a potential NULL pointer reference. Note that this should not happen in
practice, but it is a good programming practice and allows the kernel to not depend on userland correctness. - While there, make sizeof usage match the rest of the code. Found with: Coverity Prevent(tm) CID: 660, 662
Diffstat (limited to 'sys/geom/geom_ccd.c')
-rw-r--r--sys/geom/geom_ccd.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/sys/geom/geom_ccd.c b/sys/geom/geom_ccd.c
index 75d7f0f..1659321 100644
--- a/sys/geom/geom_ccd.c
+++ b/sys/geom/geom_ccd.c
@@ -709,8 +709,20 @@ g_ccd_create(struct gctl_req *req, struct g_class *mp)
g_topology_assert();
unit = gctl_get_paraml(req, "unit", sizeof (*unit));
+ if (unit == NULL) {
+ gctl_error(req, "unit parameter not given");
+ return;
+ }
ileave = gctl_get_paraml(req, "ileave", sizeof (*ileave));
+ if (ileave == NULL) {
+ gctl_error(req, "ileave parameter not given");
+ return;
+ }
nprovider = gctl_get_paraml(req, "nprovider", sizeof (*nprovider));
+ if (nprovider == NULL) {
+ gctl_error(req, "nprovider parameter not given");
+ return;
+ }
/* Check for duplicate unit */
LIST_FOREACH(gp, &mp->geom, geom) {
@@ -838,7 +850,11 @@ g_ccd_list(struct gctl_req *req, struct g_class *mp)
struct g_geom *gp;
int i, unit, *up;
- up = gctl_get_paraml(req, "unit", sizeof (int));
+ up = gctl_get_paraml(req, "unit", sizeof (*up));
+ if (up == NULL) {
+ gctl_error(req, "unit parameter not given");
+ return;
+ }
unit = *up;
sb = sbuf_new_auto();
LIST_FOREACH(gp, &mp->geom, geom) {
OpenPOWER on IntegriCloud