OSDN Git Service

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 a14e2d4..c975aec 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 4367063..8d28ed5 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 a4c43df..d163095 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 ffaba2b..c19826c 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;
 }