These are 2 hex digits each with a ':' between them in the kernel.
---
toys/pending/lsof.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
From 1c6c67e62cea41ef2c1fad90dc7ce92cf6056521 Mon Sep 17 00:00:00 2001
From: Elliott Hughes <[email protected]>
Date: Sat, 25 Sep 2021 18:53:23 -0700
Subject: [PATCH] lsof: explicit size for device major:minor buffer.
These are 2 hex digits each with a ':' between them in the kernel.
---
toys/pending/lsof.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/toys/pending/lsof.c b/toys/pending/lsof.c
index 2ab4177a..7d209bc2 100644
--- a/toys/pending/lsof.c
+++ b/toys/pending/lsof.c
@@ -330,10 +330,10 @@ static void visit_maps(struct proc_info *pi)
{
FILE *fp;
unsigned long long offset;
- char device[10];
long inode;
- char *line = NULL;
+ char *line = NULL, device[6];
size_t line_length = 0;
+ struct file_info *fi;
snprintf(toybuf, sizeof(toybuf), "/proc/%d/maps", pi->pid);
fp = fopen(toybuf, "r");
@@ -342,10 +342,8 @@ static void visit_maps(struct proc_info *pi)
while (getline(&line, &line_length, fp) > 0) {
int name_pos;
- if (sscanf(line, "%*x-%*x %*s %llx %s %ld %n",
+ if (sscanf(line, "%*x-%*x %*s %llx %5s %ld %n",
&offset, device, &inode, &name_pos) >= 3) {
- struct file_info *fi;
-
// Ignore non-file maps.
if (inode == 0 || !strcmp(device, "00:00")) continue;
// TODO: show unique maps even if they have a non-zero offset?
--
2.33.0.685.g46640cef36-goog
_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net