On Fri, 31 May 2013, Mike Frysinger wrote:

On Friday 31 May 2013 20:34:16 Dag Wieers wrote:
--- busybox-1.21.0/procps/pstree.c.orig 2013-06-01 02:27:14.008530872 +0200
+++ busybox-1.21.0/procps/pstree.c      2013-06-01 02:31:36.483537110 +0200
@@ -342,7 +342,7 @@
  static void handle_thread(const char *comm, pid_t pid, pid_t ppid, uid_t
uid) {
         char threadname[COMM_LEN + 2];
-       sprintf(threadname, "{%.*s}", COMM_LEN - 2, comm);
+       sprintf(threadname, "{%.*s}", COMM_LEN - 1, comm);
         add_proc(threadname, pid, ppid, uid/*, 1*/);
  }

hmm, your change is correct all by itself (but really it should be using
sizeof()), but i don't think the current code is correct.  it *should* be
truncating 2 bytes from the comm name.

If this fixes the truncated thread names I don't care that much which fix is being chosen. I'll leave that up to the maintainer(s) :)

BTW I don't see why we do COMM_LEN + 1 in the non-threaded name. Isn't the process name always limited to 15 characters (plus null-termination) ? Which is the size of COMM_LEN (=16) ? So COMM_LEN + 2 for threadname is fine as we add 2 curly brackets, whereas you eventually have for threads:

    COMM_DISP_LEN + 1 = COMM_LEN + 2 + 1 = COMM_LEN + 3

instead of COMM_LEN + 2. What am I missing ?

--
-- dag wieers, [email protected], http://dag.wieers.com/
-- dagit linux solutions, [email protected], http://dagit.net/

[Any errors in spelling, tact or fact are transmission errors]
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to