diff -Naur alsa-utils-1.0.21.orig/speaker-test/speaker-test.c alsa-utils-1.0.21/speaker-test/speaker-test.c
--- alsa-utils-1.0.21.orig/speaker-test/speaker-test.c	2009-08-31 11:13:36.000000000 -0400
+++ alsa-utils-1.0.21/speaker-test/speaker-test.c	2009-09-09 16:21:25.000000000 -0400
@@ -755,7 +755,7 @@
   snd_pcm_hw_params_t  *hwparams;
   snd_pcm_sw_params_t  *swparams;
   uint8_t              *frames;
-  int                   chn;
+  int                   chn, bufsize = 0;
   double		time1,time2,time3;
   unsigned int		n, nloops;
   struct   timeval	tv1,tv2;
@@ -918,11 +918,12 @@
     exit(EXIT_FAILURE);
   }
 
-  frames = malloc(snd_pcm_frames_to_bytes(handle, period_size));
+  bufsize = snd_pcm_frames_to_bytes(handle, period_size);
+  frames = malloc(bufsize);
   if (test_type == TEST_PINK_NOISE)
     initialize_pink_noise(&pink, 16);
   
-  if (frames == NULL) {
+  if (frames == NULL && bufsize > 0) {
     fprintf(stderr, _("No enough memory\n"));
     exit(EXIT_FAILURE);
   }
