diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-04-16 04:22:24 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-04-16 04:22:24 -0400 |
commit | 18cb7109d3e83195b605ff2905981020e86f72ca (patch) | |
tree | 7db1fa0c6ec8656a0a041bf9163b0656dd4a5765 /sound/pci/hda/hda_intel.c | |
parent | 4e01f54bfd3f423db8fd6c91c4f0471f18aa0c50 (diff) |
ALSA: hda - Check strcpy length
Check the length to copy via strlen() beforehand to avoid the stack
corruption, or use strlcpy() to be safe in HD-audio codes.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 21a3092fad00..41db5d4da478 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -1830,7 +1830,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, | |||
1830 | &pcm); | 1830 | &pcm); |
1831 | if (err < 0) | 1831 | if (err < 0) |
1832 | return err; | 1832 | return err; |
1833 | strcpy(pcm->name, cpcm->name); | 1833 | strlcpy(pcm->name, cpcm->name, sizeof(pcm->name)); |
1834 | apcm = kzalloc(sizeof(*apcm), GFP_KERNEL); | 1834 | apcm = kzalloc(sizeof(*apcm), GFP_KERNEL); |
1835 | if (apcm == NULL) | 1835 | if (apcm == NULL) |
1836 | return -ENOMEM; | 1836 | return -ENOMEM; |
@@ -2358,9 +2358,11 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci, | |||
2358 | } | 2358 | } |
2359 | 2359 | ||
2360 | strcpy(card->driver, "HDA-Intel"); | 2360 | strcpy(card->driver, "HDA-Intel"); |
2361 | strcpy(card->shortname, driver_short_names[chip->driver_type]); | 2361 | strlcpy(card->shortname, driver_short_names[chip->driver_type], |
2362 | sprintf(card->longname, "%s at 0x%lx irq %i", | 2362 | sizeof(card->shortname)); |
2363 | card->shortname, chip->addr, chip->irq); | 2363 | snprintf(card->longname, sizeof(card->longname), |
2364 | "%s at 0x%lx irq %i", | ||
2365 | card->shortname, chip->addr, chip->irq); | ||
2364 | 2366 | ||
2365 | *rchip = chip; | 2367 | *rchip = chip; |
2366 | return 0; | 2368 | return 0; |