OSDN Git Service

alsactl: terminate readlink result string
authorTobias Stoeckmann <tobias@stoeckmann.org>
Sat, 11 Jul 2015 11:23:57 +0000 (13:23 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 13 Jul 2015 14:37:28 +0000 (16:37 +0200)
readlink does not guarantee that its result string is nul-terminated.
Instead, increase the buffer by one byte to make sure that we can
add '\0' at the end.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
alsactl/init_sysfs.c

index 0cbada2..5c789b6 100644 (file)
@@ -108,11 +108,11 @@ static char *sysfs_attr_get_value(const char *devpath, const char *attr_name)
 
        if (S_ISLNK(statbuf.st_mode)) {
                /* links return the last element of the target path */
-               char link_target[PATH_SIZE];
+               char link_target[PATH_SIZE + 1];
                int len;
                const char *pos;
 
-               len = readlink(path_full, link_target, sizeof(link_target));
+               len = readlink(path_full, link_target, sizeof(link_target) - 1);
                if (len > 0) {
                        link_target[len] = '\0';
                        pos = strrchr(link_target, '/');