1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

libdm: validate params for NULL

Validate passed params and report error
instead of dereferencing NULL passed argument.
This commit is contained in:
Zdenek Kabelac 2013-04-02 15:01:26 +02:00
parent 72921d7922
commit 3fd0242a0a
2 changed files with 17 additions and 3 deletions

View File

@ -1,5 +1,6 @@
Version 1.02.78 - Version 1.02.78 -
=================================== ===================================
Validate passed params to dm_get_status_raid/thin/thin_pool().
Fix 'dmsetup splitname -o' to not fail if used without '-c' switch (1.02.68). Fix 'dmsetup splitname -o' to not fail if used without '-c' switch (1.02.68).
Add dm_config_write_{node_out/one_node_out} for enhanced config output. Add dm_config_write_{node_out/one_node_out} for enhanced config output.
Add dm_config_value_is_bool to check for boolean value in supported formats. Add dm_config_value_is_bool to check for boolean value in supported formats.

View File

@ -2877,11 +2877,14 @@ int dm_get_status_raid(struct dm_pool *mem, const char *params,
struct dm_status_raid **status) struct dm_status_raid **status)
{ {
int dev_count; int dev_count;
const char *p = params; const char *p;
struct dm_status_raid *s; struct dm_status_raid *s;
if (!(p = strchr(p, ' '))) if (!params || !(p = strchr(params, ' '))) {
return_0; log_error("Failed to parse invalid raid params.");
return 0;
}
p++; p++;
if (sscanf(p, "%d", &dev_count) != 1) if (sscanf(p, "%d", &dev_count) != 1)
@ -3318,6 +3321,11 @@ int dm_get_status_thin_pool(struct dm_pool *mem, const char *params,
struct dm_status_thin_pool *s; struct dm_status_thin_pool *s;
int pos; int pos;
if (!params) {
log_error("Failed to parse invalid thin pool params.");
return 0;
}
if (!(s = dm_pool_zalloc(mem, sizeof(struct dm_status_thin_pool)))) { if (!(s = dm_pool_zalloc(mem, sizeof(struct dm_status_thin_pool)))) {
log_error("Failed to allocate thin_pool status structure."); log_error("Failed to allocate thin_pool status structure.");
return 0; return 0;
@ -3354,6 +3362,11 @@ int dm_get_status_thin(struct dm_pool *mem, const char *params,
{ {
struct dm_status_thin *s; struct dm_status_thin *s;
if (!params) {
log_error("Failed to parse invalid thin params.");
return 0;
}
if (!(s = dm_pool_zalloc(mem, sizeof(struct dm_status_thin)))) { if (!(s = dm_pool_zalloc(mem, sizeof(struct dm_status_thin)))) {
log_error("Failed to allocate thin status structure."); log_error("Failed to allocate thin status structure.");
return 0; return 0;