diff options
author | lulf <lulf@FreeBSD.org> | 2008-11-25 20:28:33 +0000 |
---|---|---|
committer | lulf <lulf@FreeBSD.org> | 2008-11-25 20:28:33 +0000 |
commit | 12359ec70ec661ba582eacfd18561d9e3ca3ed4e (patch) | |
tree | be696f3e2a655192f790a82d161fd1d98c3b025b /sys/geom/geom_ccd.c | |
parent | 2ba03c359594560a88ae0e4cf2399165f29b3852 (diff) | |
download | FreeBSD-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.c | 18 |
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) { |