]> git.alsa-project.org Git - alsa-lib.git/commitdiff
fixed dmix crashes by Clemens Ladisch <clemens@ladisch.de>:
authorTakashi Iwai <tiwai@suse.de>
Thu, 7 Aug 2003 14:20:32 +0000 (14:20 +0000)
committerTakashi Iwai <tiwai@suse.de>
Thu, 7 Aug 2003 14:20:32 +0000 (14:20 +0000)
  pcm->name can be NULL (when an unnamed pcm node is embedded in another
  pcm)

src/pcm/pcm_dmix.c
src/pcm/pcm_dshare.c
src/pcm/pcm_dsnoop.c
src/pcm/pcm_null.c

index a14e2d4d374884a0b89c1d864d63d938e759135b..c975aec20d763589c750ad9de70d9024023054af 100644 (file)
@@ -414,9 +414,11 @@ static int snd_pcm_dmix_info(snd_pcm_t *pcm, snd_pcm_info_t * info)
        info->stream = pcm->stream;
        info->card = -1;
        /* FIXME: fill this with something more useful: we know the hardware name */
-       strncpy(info->id, pcm->name, sizeof(info->id));
-       strncpy(info->name, pcm->name, sizeof(info->name));
-       strncpy(info->subname, pcm->name, sizeof(info->subname));
+       if (pcm->name) {
+               strncpy(info->id, pcm->name, sizeof(info->id));
+               strncpy(info->name, pcm->name, sizeof(info->name));
+               strncpy(info->subname, pcm->name, sizeof(info->subname));
+       }
        info->subdevices_count = 1;
        return 0;
 }
index 43670634b7cba0393f8dd0bbbb5678c6c4096e38..8d28ed588e2e65e137f6b20fc27b34e78802f8b6 100644 (file)
@@ -201,9 +201,11 @@ static int snd_pcm_dshare_info(snd_pcm_t *pcm, snd_pcm_info_t * info)
        info->stream = pcm->stream;
        info->card = -1;
        /* FIXME: fill this with something more useful: we know the hardware name */
-       strncpy(info->id, pcm->name, sizeof(info->id));
-       strncpy(info->name, pcm->name, sizeof(info->name));
-       strncpy(info->subname, pcm->name, sizeof(info->subname));
+       if (pcm->name) {
+               strncpy(info->id, pcm->name, sizeof(info->id));
+               strncpy(info->name, pcm->name, sizeof(info->name));
+               strncpy(info->subname, pcm->name, sizeof(info->subname));
+       }
        info->subdevices_count = 1;
        return 0;
 }
index a4c43df6424f472f22aca5d800dde4c1ecb30f60..d163095b33c0574b5151cfc52944e768112587d8 100644 (file)
@@ -184,9 +184,11 @@ static int snd_pcm_dsnoop_info(snd_pcm_t *pcm, snd_pcm_info_t * info)
        info->stream = pcm->stream;
        info->card = -1;
        /* FIXME: fill this with something more useful: we know the hardware name */
-       strncpy(info->id, pcm->name, sizeof(info->id));
-       strncpy(info->name, pcm->name, sizeof(info->name));
-       strncpy(info->subname, pcm->name, sizeof(info->subname));
+       if (pcm->name) {
+               strncpy(info->id, pcm->name, sizeof(info->id));
+               strncpy(info->name, pcm->name, sizeof(info->name));
+               strncpy(info->subname, pcm->name, sizeof(info->subname));
+       }
        info->subdevices_count = 1;
        return 0;
 }
index ffaba2bb0210087008bf389a8c0916500360c593..c19826cc85ea39b2b278e2c2b66ba80105e0bd14 100644 (file)
@@ -70,9 +70,11 @@ static int snd_pcm_null_info(snd_pcm_t *pcm, snd_pcm_info_t * info)
        memset(info, 0, sizeof(*info));
        info->stream = pcm->stream;
        info->card = -1;
-       strncpy(info->id, pcm->name, sizeof(info->id));
-       strncpy(info->name, pcm->name, sizeof(info->name));
-       strncpy(info->subname, pcm->name, sizeof(info->subname));
+       if (pcm->name) {
+               strncpy(info->id, pcm->name, sizeof(info->id));
+               strncpy(info->name, pcm->name, sizeof(info->name));
+               strncpy(info->subname, pcm->name, sizeof(info->subname));
+       }
        info->subdevices_count = 1;
        return 0;
 }