ALSA: hda - Add sanity check for storing the user-defined pin configs
authorTakashi Iwai <tiwai@suse.de>
Sun, 27 Dec 2009 10:24:56 +0000 (11:24 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sun, 27 Dec 2009 12:39:25 +0000 (13:39 +0100)
Check whether the given NID is a pin widget before storing the
user-defined pin configs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c

index 94ae69f209251f304e045dbbbe9f4a7919a01b8e..d02ea8926e7e7913d00a7a3b0c7b1c722d82d55f 100644 (file)
@@ -824,6 +824,9 @@ int snd_hda_add_pincfg(struct hda_codec *codec, struct snd_array *list,
        struct hda_pincfg *pin;
        unsigned int oldcfg;
 
+       if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN)
+               return -EINVAL;
+
        oldcfg = snd_hda_codec_get_pincfg(codec, nid);
        pin = look_up_pincfg(codec, list, nid);
        if (!pin) {