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:
parent
72921d7922
commit
3fd0242a0a
@ -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.
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user