[lvm-devel] master - cleanup: validate pointers
Zdenek Kabelac
zkabelac at fedoraproject.org
Thu Nov 13 16:53:37 UTC 2014
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=428b9fcd87d1c79cd4349c884a68de7ccac51981
Commit: 428b9fcd87d1c79cd4349c884a68de7ccac51981
Parent: 7278556c768ae418b03873bd5d9e921e13ce79e8
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Thu Nov 13 17:40:30 2014 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Thu Nov 13 17:49:42 2014 +0100
cleanup: validate pointers
Mostly on almost impossible to happen paths - but stay safe.
---
lib/activate/dev_manager.c | 3 ++-
lib/report/report.c | 4 +++-
tools/dmsetup.c | 11 +++++++----
tools/pvresize.c | 4 ++++
4 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 32abde7..44b273d 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -131,7 +131,8 @@ static int _get_segment_status_from_target_params(const char *target_name,
if (strcmp(target_name, "cache"))
return 1;
- segtype = get_segtype_from_string(seg_status->seg->lv->vg->cmd, target_name);
+ if (!(segtype = get_segtype_from_string(seg_status->seg->lv->vg->cmd, target_name)))
+ return_0;
if (segtype != seg_status->seg->segtype) {
log_error(INTERNAL_ERROR "_get_segment_status_from_target_params: "
diff --git a/lib/report/report.c b/lib/report/report.c
index 42355e2..5637d50 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -779,7 +779,9 @@ static int _cachemode_disp(struct dm_report *rh, struct dm_pool *mem,
seg = first_seg(seg->pool_lv);
if (seg_is_cache_pool(seg)) {
- cachemode_str = get_cache_pool_cachemode_name(seg);
+ if (!(cachemode_str = get_cache_pool_cachemode_name(seg)))
+ return_0;
+
return dm_report_field_string(rh, field, &cachemode_str);
}
diff --git a/tools/dmsetup.c b/tools/dmsetup.c
index f1808c0..4202dbb 100644
--- a/tools/dmsetup.c
+++ b/tools/dmsetup.c
@@ -3824,13 +3824,15 @@ int main(int argc, char **argv)
}
if (_switches[HELP_ARG]) {
- cmd = _find_command("help");
- goto doit;
+ if ((cmd = _find_command("help")))
+ goto doit;
+ goto unknown;
}
if (_switches[VERSION_ARG]) {
- cmd = _find_command("version");
- goto doit;
+ if ((cmd = _find_command("version")))
+ goto doit;
+ goto unknown;
}
if (argc == 0) {
@@ -3839,6 +3841,7 @@ int main(int argc, char **argv)
}
if (!(cmd = _find_command(argv[0]))) {
+unknown:
fprintf(stderr, "Unknown command\n");
_usage(stderr);
goto out;
diff --git a/tools/pvresize.c b/tools/pvresize.c
index 70b564d..631e63e 100644
--- a/tools/pvresize.c
+++ b/tools/pvresize.c
@@ -30,6 +30,10 @@ static int _pvresize_single(struct cmd_context *cmd,
{
struct pvresize_params *params = (struct pvresize_params *) handle;
+ if (!params) {
+ log_error(INTERNAL_ERROR "Invalid resize params.");
+ return ECMD_FAILED;
+ }
params->total++;
if (!pv_resize_single(cmd, vg, pv, params->new_size))
More information about the lvm-devel
mailing list