summaryrefslogtreecommitdiff
path: root/core/psmisc/COMM_LEN-to-18.patch
blob: 5cec62507b7a55b7f5afaa4e873e851ffeeefb4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
From: Craig Small <csmall@users.sourceforge.net>
Date: Fri, 27 Jan 2012 01:02:48 +0000 (+1100)
Subject: Set COMM_LEN to 18 to include brackets in name
X-Git-Url: http://psmisc.git.sourceforge.net/git/gitweb.cgi?p=psmisc%2Fpsmisc;a=commitdiff_plain;h=340f81524cb097d814fcf344a3743de17f988e3d

Set COMM_LEN to 18 to include brackets in name

Also use strncpy in case the command names grow.
---

diff --git a/src/comm.h b/src/comm.h
index 956383d..2b780b0 100644
--- a/src/comm.h
+++ b/src/comm.h
@@ -1,18 +1,37 @@
-/* comm.h - command name length definition */
-
-/* Copyright 1995 Werner Almesberger. See file COPYING for details. */
-
+/*
+ * comm.h - command name length definition 
+ *
+ * Copyright 1995 Werner Almesberger
+ * Copyright 2012 Craig Small <csmall@enc.com.au>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
 
 #ifndef COMM_H
 #define COMM_H
 
-#if 0				/* broken in 1.3.xx */
-#include <linux/sched.h>
-#define COMM_LEN sizeof(dummy.comm)
-extern struct task_struct dummy;
-#else
-#define COMM_LEN 16		/* synchronize with size of comm in struct task_struct in
-				   /usr/include/linux/sched.h */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
 #endif
 
+/*
+ * COMM_LEN should be the same size as TASK_COMM_LEN in the Linux source
+ * at include/linux/sched.h
+ * However, that doesn't include the brackets that may be in the field.
+ */
+#define COMM_LEN 18
+
 #endif
diff --git a/src/pstree.c b/src/pstree.c
index 452f823..3129f76 100644
--- a/src/pstree.c
+++ b/src/pstree.c
@@ -264,7 +264,7 @@ static PROC *new_proc(const char *comm, pid_t pid, uid_t uid)
         perror("malloc");
         exit(1);
     }
-    strcpy(new->comm, comm);
+    strncpy(new->comm, comm, COMM_LEN);
     new->pid = pid;
     new->uid = uid;
     new->flags = 0;
@@ -352,7 +352,7 @@ add_proc(const char *comm, pid_t pid, pid_t ppid, uid_t uid,
         this = new_proc(comm, pid, uid);
 #endif                                /*WITH_SELINUX */
     else {
-        strcpy(this->comm, comm);
+        strncpy(this->comm, comm, COMM_LEN);
         this->uid = uid;
     }
     if (args)