From: Craig Small 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 + * + * + * 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 -#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 #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)