From: Maciej Żenczykowski <m...@google.com>

Fixes: is_umdir_used - pid filename too long

pids are no longer limited to 16-bits, bump to 32-bits,
ie. 9 decimal characters.  Additionally sizeof("/") already
returns 2 - ie. it already accounts for trailing zero.

Cc: Jeff Dike <jd...@addtoit.com>
Cc: Richard Weinberger <rich...@nod.at>
Cc: Anton Ivanov <anton.iva...@cambridgegreys.com>
Cc: Linux UM Mailing List <linux...@lists.infradead.org>
Signed-off-by: Maciej Żenczykowski <m...@google.com>
---
 arch/um/os-Linux/umid.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/um/os-Linux/umid.c b/arch/um/os-Linux/umid.c
index 9e16078a4bf8..1d7558dac75f 100644
--- a/arch/um/os-Linux/umid.c
+++ b/arch/um/os-Linux/umid.c
@@ -97,7 +97,7 @@ static int remove_files_and_dir(char *dir)
        while ((ent = readdir(directory)) != NULL) {
                if (!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, ".."))
                        continue;
-               len = strlen(dir) + sizeof("/") + strlen(ent->d_name) + 1;
+               len = strlen(dir) + strlen("/") + strlen(ent->d_name) + 1;
                if (len > sizeof(file)) {
                        ret = -E2BIG;
                        goto out;
@@ -135,7 +135,7 @@ static int remove_files_and_dir(char *dir)
  */
 static inline int is_umdir_used(char *dir)
 {
-       char pid[sizeof("nnnnn\0")], *end, *file;
+       char pid[sizeof("nnnnnnnnn")], *end, *file;
        int dead, fd, p, n, err;
        size_t filelen;
 
@@ -217,10 +217,10 @@ static int umdir_take_if_dead(char *dir)
 
 static void __init create_pid_file(void)
 {
-       char pid[sizeof("nnnnn\0")], *file;
+       char pid[sizeof("nnnnnnnnn")], *file;
        int fd, n;
 
-       n = strlen(uml_dir) + UMID_LEN + sizeof("/pid\0");
+       n = strlen(uml_dir) + UMID_LEN + sizeof("/pid");
        file = malloc(n);
        if (!file)
                return;
-- 
2.28.0.236.gb10cc79966-goog

Reply via email to