[alsa-devel] [PATCH 1/2] ucm: fix seg fault in execute_cset()
When there's no space in 'cset', 'pos' gets NULL, dereferencing 'pos' gets a seg fault. We need to be more robust.
Signed-off-by: Lu Guanqun guanqun.lu@intel.com --- src/ucm/main.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/ucm/main.c b/src/ucm/main.c index 8e9a85d..9ecbe43 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -196,7 +196,8 @@ static int execute_cset(snd_ctl_t *ctl, char *cset) goto __fail; err = 0; __fail: - *pos = ' '; + if (pos != NULL) + *pos = ' ';
if (id != NULL) free(id);
Signed-off-by: Lu Guanqun guanqun.lu@intel.com --- src/ucm/main.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/ucm/main.c b/src/ucm/main.c index 9ecbe43..76ca151 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -173,7 +173,7 @@ static int execute_cset(snd_ctl_t *ctl, char *cset) pos = strrchr(cset, ' '); if (pos == NULL) { uc_error("undefined value for cset >%s<", cset); - err = -EINVAL; + err = -EINVAL; goto __fail; } *pos = '\0';
At Fri, 19 Aug 2011 16:05:25 +0800, Lu Guanqun wrote:
When there's no space in 'cset', 'pos' gets NULL, dereferencing 'pos' gets a seg fault. We need to be more robust.
Signed-off-by: Lu Guanqun guanqun.lu@intel.com
Thanks, applied both now.
Takashi
src/ucm/main.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/ucm/main.c b/src/ucm/main.c index 8e9a85d..9ecbe43 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -196,7 +196,8 @@ static int execute_cset(snd_ctl_t *ctl, char *cset) goto __fail; err = 0; __fail:
- *pos = ' ';
if (pos != NULL)
*pos = ' ';
if (id != NULL) free(id);
participants (2)
-
Lu Guanqun
-
Takashi Iwai