From 18927bfe9a3fcd7cbadfa74238c4e417a1890ff4 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Thu, 7 Aug 2003 14:20:32 +0000 Subject: [PATCH] fixed dmix crashes by Clemens Ladisch : pcm->name can be NULL (when an unnamed pcm node is embedded in another pcm) --- src/pcm/pcm_dmix.c | 8 +++++--- src/pcm/pcm_dshare.c | 8 +++++--- src/pcm/pcm_dsnoop.c | 8 +++++--- src/pcm/pcm_null.c | 8 +++++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c index a14e2d4d..c975aec2 100644 --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -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; } diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c index 43670634..8d28ed58 100644 --- a/src/pcm/pcm_dshare.c +++ b/src/pcm/pcm_dshare.c @@ -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; } diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c index a4c43df6..d163095b 100644 --- a/src/pcm/pcm_dsnoop.c +++ b/src/pcm/pcm_dsnoop.c @@ -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; } diff --git a/src/pcm/pcm_null.c b/src/pcm/pcm_null.c index ffaba2bb..c19826cc 100644 --- a/src/pcm/pcm_null.c +++ b/src/pcm/pcm_null.c @@ -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; } -- 2.47.1