diff --git a/toolbox/lsof.c b/toolbox/lsof.c
index 982f5aaf650bb18cf5559cf1bf8ddd5e0221fe63..da78ddd71bf3808d656f4ee8e0d04937bcf5261c 100644
--- a/toolbox/lsof.c
+++ b/toolbox/lsof.c
@@ -100,10 +100,11 @@ out:
 static void print_maps(struct pid_info_t* info)
 {
     FILE *maps;
+
     size_t offset;
     char device[10];
     long int inode;
-    char file[PATH_MAX];
+    char file[1024];
 
     strlcat(info->path, "maps", sizeof(info->path));
 
@@ -111,8 +112,8 @@ static void print_maps(struct pid_info_t* info)
     if (!maps)
         goto out;
 
-    while (fscanf(maps, "%*x-%*x %*s %zx %s %ld %s\n", &offset, device, &inode,
-            file) == 4) {
+    while (fscanf(maps, "%*x-%*x %*s %zx %5s %ld %1023s\n",
+                  &offset, device, &inode, file) == 4) {
         // We don't care about non-file maps
         if (inode == 0 || !strcmp(device, "00:00"))
             continue;