From: Takashi Iwai Date: Tue, 5 Jul 2011 07:25:59 +0000 (+0200) Subject: ASoC: Don't set invalid name string to snd_card->driver field X-Git-Tag: v3.0~17^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=873bd4cb4fbba6a3e99f750e17ef2ba6ef96e9d3;p=platform%2Fkernel%2Flinux-3.10.git ASoC: Don't set invalid name string to snd_card->driver field The snd_card->driver field contains a driver name string, and in general it shouldn't contain space or special letters. The commit 2b39535b9e54888649923beaab443af212b6c0fd changed the string copy from card->name, but the long name string may contain such letters, thus it may still lead to a segfault. A temporary fix is not to copy the long name string but just keep it empty as the earlier version did. Reported-by: Kuninori Morimoto Acked-by: Liam Girdwood Signed-off-by: Takashi Iwai --- diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index d75043e..b194be0 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1929,8 +1929,9 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card) "%s", card->name); snprintf(card->snd_card->longname, sizeof(card->snd_card->longname), "%s", card->long_name ? card->long_name : card->name); - snprintf(card->snd_card->driver, sizeof(card->snd_card->driver), - "%s", card->driver_name ? card->driver_name : card->name); + if (card->driver_name) + strlcpy(card->snd_card->driver, card->driver_name, + sizeof(card->snd_card->driver)); if (card->late_probe) { ret = card->late_probe(card);