[alsa-devel] SALSA-Lib: snd_pcm_hw_params_any clobbers memory
Takashi Iwai
tiwai at suse.de
Thu Jun 28 13:23:28 CEST 2007
At Wed, 27 Jun 2007 16:33:52 -0400,
J. Scott Merritt wrote:
>
> Dear list,
>
> Using SALSA-Lib 0.0.2, I call
> snd_pcm_open
> snd_pcm_hw_params_malloc
> snd_pcm_hw_params_any
>
> The call to snd_pcm_hw_params_any appears to clobber memory beyond the
> end of the hw_params allocated by snd_pcm_hw_params_malloc (as reported
> by linking in -lmcheck).
Gosh, my bad. I didn't test *_malloc() at all.
There was a stupid bug in the template I copy-n-pasted. The fix patch
is below. I'll release version 0.0.3 soon later.
Thanks for reporting!
Takashi
diff -r 47cb6e3fe0b7 src/ctl_macros.h
--- a/src/ctl_macros.h Thu Jun 21 18:16:47 2007 +0200
+++ b/src/ctl_macros.h Thu Jun 28 12:52:16 2007 +0200
@@ -305,7 +305,7 @@ static inline
static inline
int snd_ctl_elem_id_malloc(snd_ctl_elem_id_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -411,7 +411,7 @@ static inline
static inline
int snd_ctl_card_info_malloc(snd_ctl_card_info_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -487,7 +487,7 @@ static inline
static inline
int snd_ctl_event_malloc(snd_ctl_event_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -526,7 +526,7 @@ static inline
static inline
int snd_ctl_elem_list_malloc(snd_ctl_elem_list_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -627,7 +627,7 @@ static inline
static inline
int snd_ctl_elem_info_malloc(snd_ctl_elem_info_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -912,7 +912,7 @@ static inline
static inline
int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
diff -r 47cb6e3fe0b7 src/hwdep_macros.h
--- a/src/hwdep_macros.h Thu Jun 21 18:16:47 2007 +0200
+++ b/src/hwdep_macros.h Thu Jun 28 12:52:16 2007 +0200
@@ -107,7 +107,7 @@ static inline
static inline
int snd_hwdep_info_malloc(snd_hwdep_info_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -170,7 +170,7 @@ static inline
static inline
int snd_hwdep_dsp_status_malloc(snd_hwdep_dsp_status_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -228,7 +228,7 @@ static inline
static inline
int snd_hwdep_dsp_image_malloc(snd_hwdep_dsp_image_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
diff -r 47cb6e3fe0b7 src/mixer_macros.h
--- a/src/mixer_macros.h Thu Jun 21 18:16:47 2007 +0200
+++ b/src/mixer_macros.h Thu Jun 28 12:52:16 2007 +0200
@@ -518,7 +518,7 @@ static inline
static inline
int snd_mixer_selem_id_malloc(snd_mixer_selem_id_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
diff -r 47cb6e3fe0b7 src/pcm_macros.h
--- a/src/pcm_macros.h Thu Jun 21 18:16:47 2007 +0200
+++ b/src/pcm_macros.h Thu Jun 28 12:52:16 2007 +0200
@@ -599,7 +599,7 @@ static inline
static inline
int snd_pcm_access_mask_malloc(snd_pcm_access_mask_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -663,7 +663,7 @@ static inline
static inline
int snd_pcm_format_mask_malloc(snd_pcm_format_mask_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -727,7 +727,7 @@ static inline
static inline
int snd_pcm_subformat_mask_malloc(snd_pcm_subformat_mask_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -795,7 +795,7 @@ static inline
static inline
int snd_pcm_hw_params_malloc(snd_pcm_hw_params_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -1770,7 +1770,7 @@ static inline
static inline
int snd_pcm_sw_params_malloc(snd_pcm_sw_params_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -1940,7 +1940,7 @@ static inline
static inline
int snd_pcm_status_malloc(snd_pcm_status_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -2025,7 +2025,7 @@ static inline
static inline
int snd_pcm_info_malloc(snd_pcm_info_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
diff -r 47cb6e3fe0b7 src/rawmidi_macros.h
--- a/src/rawmidi_macros.h Thu Jun 21 18:16:47 2007 +0200
+++ b/src/rawmidi_macros.h Thu Jun 28 12:52:16 2007 +0200
@@ -77,7 +77,7 @@ static inline
static inline
int snd_rawmidi_info_malloc(snd_rawmidi_info_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!ptr)
return -ENOMEM;
return 0;
@@ -193,7 +193,7 @@ static inline
static inline
int snd_rawmidi_params_malloc(snd_rawmidi_params_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!ptr)
return -ENOMEM;
return 0;
@@ -283,7 +283,7 @@ static inline
static inline
int snd_rawmidi_status_malloc(snd_rawmidi_status_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!ptr)
return -ENOMEM;
return 0;
diff -r 47cb6e3fe0b7 src/timer_macros.h
--- a/src/timer_macros.h Thu Jun 21 18:16:47 2007 +0200
+++ b/src/timer_macros.h Thu Jun 28 12:52:16 2007 +0200
@@ -124,7 +124,7 @@ static inline
static inline
int snd_timer_id_malloc(snd_timer_id_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -211,7 +211,7 @@ static inline
static inline
int snd_timer_ginfo_malloc(snd_timer_ginfo_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -299,7 +299,7 @@ static inline
static inline
int snd_timer_info_malloc(snd_timer_info_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -356,7 +356,7 @@ static inline
static inline
int snd_timer_params_malloc(snd_timer_params_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
@@ -472,7 +472,7 @@ static inline
static inline
int snd_timer_status_malloc(snd_timer_status_t **ptr)
{
- *ptr = calloc(1, sizeof(*ptr));
+ *ptr = calloc(1, sizeof(**ptr));
if (!*ptr)
return -ENOMEM;
return 0;
More information about the Alsa-devel
mailing list