Commit e8a58591 authored by Maciej Żenczykowski's avatar Maciej Żenczykowski Committed by Richard Weinberger

um: Fix incorrect assumptions about max pid length

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 <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Linux UM Mailing List <linux-um@lists.infradead.org>
Signed-off-by: default avatarMaciej Żenczykowski <maze@google.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 4687615d
...@@ -97,7 +97,7 @@ static int remove_files_and_dir(char *dir) ...@@ -97,7 +97,7 @@ static int remove_files_and_dir(char *dir)
while ((ent = readdir(directory)) != NULL) { while ((ent = readdir(directory)) != NULL) {
if (!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) if (!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, ".."))
continue; continue;
len = strlen(dir) + sizeof("/") + strlen(ent->d_name) + 1; len = strlen(dir) + strlen("/") + strlen(ent->d_name) + 1;
if (len > sizeof(file)) { if (len > sizeof(file)) {
ret = -E2BIG; ret = -E2BIG;
goto out; goto out;
...@@ -135,7 +135,7 @@ static int remove_files_and_dir(char *dir) ...@@ -135,7 +135,7 @@ static int remove_files_and_dir(char *dir)
*/ */
static inline int is_umdir_used(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; int dead, fd, p, n, err;
size_t filelen; size_t filelen;
...@@ -217,10 +217,10 @@ static int umdir_take_if_dead(char *dir) ...@@ -217,10 +217,10 @@ static int umdir_take_if_dead(char *dir)
static void __init create_pid_file(void) static void __init create_pid_file(void)
{ {
char pid[sizeof("nnnnn\0")], *file; char pid[sizeof("nnnnnnnnn")], *file;
int fd, n; int fd, n;
n = strlen(uml_dir) + UMID_LEN + sizeof("/pid\0"); n = strlen(uml_dir) + UMID_LEN + sizeof("/pid");
file = malloc(n); file = malloc(n);
if (!file) if (!file)
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment