um: Fix len of file in create_pid_file
authorWen Yang <wenyang@linux.alibaba.com>
Wed, 19 Feb 2020 13:44:42 +0000 (21:44 +0800)
committerRichard Weinberger <richard@nod.at>
Sun, 29 Mar 2020 21:20:07 +0000 (23:20 +0200)
sizeof gives us the size of the pointer variable, not of the
area it points to. So the number of bytes copied by umid_file_name()
is 8.
We should pass in the correct length of the file buffer.

Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/os-Linux/umid.c

index 44def53..9e16078 100644 (file)
@@ -220,11 +220,12 @@ static void __init create_pid_file(void)
        char pid[sizeof("nnnnn\0")], *file;
        int fd, n;
 
-       file = malloc(strlen(uml_dir) + UMID_LEN + sizeof("/pid\0"));
+       n = strlen(uml_dir) + UMID_LEN + sizeof("/pid\0");
+       file = malloc(n);
        if (!file)
                return;
 
-       if (umid_file_name("pid", file, sizeof(file)))
+       if (umid_file_name("pid", file, n))
                goto out;
 
        fd = open(file, O_RDWR | O_CREAT | O_EXCL, 0644);