17 Mar
2011
17 Mar
'11
12:22 p.m.
sudarshan.bisht@nokia.com wrote:
--- a/src/control/control_hw.c +++ b/src/control/control_hw.c @@ -414,6 +414,7 @@ int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode) if (err < 0) { close(fd); free(hw);
}hw = NULL;
In this place, it's just a "return err" that is missing.
--- a/src/mixer/mixer.c +++ b/src/mixer/mixer.c @@ -205,7 +205,7 @@ int snd_mixer_attach(snd_mixer_t *mixer, const char *name) return err; err = snd_mixer_attach_hctl(mixer, hctl); if (err < 0) {
snd_hctl_close(hctl);
return err; }/* ideally hctl should be freed here, but it's taken care in snd_mixer_attach_hctl*/
If the calloc() in snd_mixer_attach_hctl() fails, hctl is not freed. The bug is the inconsistent error handling cleanup in snd_mixer_attach_hctl(); I think it shouldn't free its hctl in any case.
Regards, Clemens