[alsa-devel] [PATCH 2/2] alsaucm: Don't double-free empty lists
Stephen Warren
swarren at nvidia.com
Fri Jun 3 00:45:13 CEST 2011
When snd_use_case_get_list (and hence also snd_use_case_card_list) returns
an empty list, alsaucm still attempts to free it. This ends up double-
freeing the returned list, or worse, freeing an invalid pointer, depending
on how snd_use_case_get_list gets implemented. Fix alsaucm to return early
on empty lists to avoid this.
Signed-off-by: Stephen Warren <swarren at nvidia.com>
---
alsaucm/usecase.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/alsaucm/usecase.c b/alsaucm/usecase.c
index f24e63e..1c94680 100644
--- a/alsaucm/usecase.c
+++ b/alsaucm/usecase.c
@@ -226,8 +226,10 @@ static int do_one(struct context *context, struct cmd *cmd, char **argv)
snd_strerror(err));
return err;
}
- if (err == 0)
+ if (err == 0) {
printf(" list is empty\n");
+ return 0;
+ }
for (i = 0; i < err / 2; i++) {
printf(" %i: %s\n", i, list[i*2]);
if (list[i*2+1])
@@ -256,8 +258,10 @@ static int do_one(struct context *context, struct cmd *cmd, char **argv)
snd_strerror(err));
return err;
}
- if (err == 0)
+ if (err == 0) {
printf(" list is empty\n");
+ return 0;
+ }
for (i = 0; i < err / entries; i++) {
printf(" %i: %s\n", i, list[i*entries]);
for (j = 0; j < entries - 1; j++)
--
1.7.0.4
More information about the Alsa-devel
mailing list