]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsactl: Do not access other cards than specified for init
authorJaroslav Kysela <perex@perex.cz>
Wed, 9 May 2012 06:45:47 +0000 (08:45 +0200)
committerJaroslav Kysela <perex@perex.cz>
Wed, 9 May 2012 06:45:47 +0000 (08:45 +0200)
When the global state does not exist, alsactl tries to
initialize all soundcards. It is not good when alsactl
is called multiple times from udev. Also, selinux can deny
access to non-existent devices.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
alsactl/state.c

index a8b5bd33b2b7bc3869ec3078d7067b5b9415fb5c..fec000dd2f032b621f6be32e326734f815d90a9b 100644 (file)
@@ -1646,13 +1646,23 @@ int load_state(const char *file, const char *initfile, const char *cardname,
 
                error("Cannot open %s for reading: %s", file, snd_strerror(err));
                finalerr = err;
-               card = -1;
+               if (cardname) {
+                       card = snd_card_get_index(cardname);
+                       if (card < 0) {
+                               error("Cannot find soundcard '%s'...", cardname);
+                               return -ENODEV;
+                       }
+                       goto single;
+               } else {
+                       card = -1;
+               }
                /* find each installed soundcards */
-               while (1) {
+               while (!cardname) {
                        if (snd_card_next(&card) < 0)
                                break;
                        if (card < 0)
                                break;
+single:
                        first = 0;
                        if (!do_init)
                                break;