X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udevinfo.c;h=eb9b3534046ea6de2c2014219945d1ab31b83eff;hp=82057de54c566b9dd8469b7c5bf5583c4e888d95;hb=6e9edde6c962ab183e8d86086bddda7aa6e3cb9b;hpb=fd80719273b9d58f88fc5d576cdb67a1fd92e2bb diff --git a/udevinfo.c b/udevinfo.c index 82057de54..eb9b35340 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -79,6 +79,8 @@ static void print_all_attributes(const char *devpath, const char *key) if (attr_value == NULL) continue; len = strlcpy(value, attr_value, sizeof(value)); + if(len >= sizeof(value)) + len = sizeof(value) - 1; dbg("attr '%s'='%s'(%zi)", dent->d_name, value, len); /* remove trailing newlines */ @@ -265,7 +267,6 @@ int main(int argc, char *argv[], char *envp[]) goto exit; } - /* get command line options */ while (1) { option = getopt_long(argc, argv, "aen:p:q:rVh", options, NULL); if (option == -1) @@ -279,7 +280,7 @@ int main(int argc, char *argv[], char *envp[]) strlcpy(name, &optarg[strlen(udev_root)+1], sizeof(name)); else strlcpy(name, optarg, sizeof(name)); - dbg("name: %s\n", name); + dbg("name: %s", name); break; case 'p': /* remove /sys if given */ @@ -287,10 +288,9 @@ int main(int argc, char *argv[], char *envp[]) strlcpy(path, &optarg[strlen(sysfs_path)], sizeof(path)); else strlcpy(path, optarg, sizeof(path)); - dbg("path: %s\n", path); + dbg("path: %s", path); break; case 'q': - dbg("udev query: %s\n", optarg); action = ACTION_QUERY; if (strcmp(optarg, "name") == 0) { query = QUERY_NAME; @@ -385,15 +385,14 @@ int main(int argc, char *argv[], char *envp[]) printf("%s\n", udev->name); break; case QUERY_SYMLINK: - if (list_empty(&udev->symlink_list)) - goto exit; - if (root) - list_for_each_entry(name_loop, &udev->symlink_list, node) - printf("%s/%s ", udev_root, name_loop->name); - else - list_for_each_entry(name_loop, &udev->symlink_list, node) - printf("%s ", name_loop->name); - printf("\n"); + list_for_each_entry(name_loop, &udev->symlink_list, node) { + char c = name_loop->node.next != &udev->symlink_list ? ' ' : '\n'; + + if (root) + printf("%s/%s%c", udev_root, name_loop->name, c); + else + printf("%s%c", name_loop->name, c); + } break; case QUERY_PATH: printf("%s\n", udev->dev->devpath);