All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Yafang Shao <laoar.shao@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Petr Mladek <pmladek@suse.com>, Al Viro <viro@zeniv.linux.org.uk>,
	Andrew Morton <akpm@linux-foundation.org>,
	Valentin Schneider <valentin.schneider@arm.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	qiang.zhang@windriver.com, robdclark@chromium.org,
	christian@brauner.io, Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Ingo Molnar <mingo@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Benjamin Segall <bsegall@google.com>,
	Mel Gorman <mgorman@suse.de>,
	Daniel Bristot de Oliveira <bristot@redhat.com>,
	David Miller <davem@davemloft.net>,
	kuba@kernel.org, LKML <linux-kernel@vger.kernel.org>,
	Vladimir Zapolskiy <vzapolskiy@gmail.com>,
	David Howells <dhowells@redhat.com>
Subject: Re: [PATCH v4 2/5] connector: use __get_task_comm in proc_comm_connector
Date: Wed, 13 Oct 2021 21:50:43 -0700	[thread overview]
Message-ID: <202110132148.523C3EA@keescook> (raw)
In-Reply-To: <20211013222418.7ea9727d@oasis.local.home>

On Wed, Oct 13, 2021 at 10:24:18PM -0400, Steven Rostedt wrote:
> On Thu, 14 Oct 2021 09:48:09 +0800
> Yafang Shao <laoar.shao@gmail.com> wrote:
> 
> > > __get_task_comm() uses strncpy() which my understanding is, does not add
> > > the nul terminating byte when truncating. Which changes the functionality
> > > here. As all task comms have a terminating byte, the old method would copy
> > > that and include it. This won't add the terminating byte if the buffer is
> > > smaller than the comm, and that might cause issues.
> > >  
> > 
> > Right, that is a problem.
> > It seems that we should add a new helper get_task_comm_may_truncated().
> 
> Or simply change __get_task_comm() to:
> 
> char *__get_task_comm(char *buf, size_t buf_size, struct task_struct *tsk)
> {
> 	task_lock(tsk);
> 	strncpy(buf, tsk->comm, buf_size);
> 	/* The copied value is always nul terminated */
> 	buf[buf_size - 1] = '\0';
> 	task_unlock(tsk);
> 	return buf;
> }
> 
> But that should probably be a separate patch.

strscpy_pad() is the right thing here -- it'll retain the NUL-fill
properties of strncpy and terminate correctly.

The use of non-terminating issue with strncpy() wasn't a problem here
because get_task_comm() would always make sure task->comm was
terminated. (It uses strlcpy(), which I think needs to be changed to
strscpy_pad() too...)

-- 
Kees Cook

  parent reply	other threads:[~2021-10-14  4:50 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-13 10:23 [PATCH v4 0/5] task_struct: extend task comm from 16 to 24 for CONFIG_BASE_FULL Yafang Shao
2021-10-13 10:23 ` [PATCH v4 1/5] elfcore: use TASK_COMM_LEN instead of 16 in prpsinfo Yafang Shao
2021-10-13 13:11   ` Steven Rostedt
2021-10-14  1:46     ` Yafang Shao
2021-10-13 10:23 ` [PATCH v4 2/5] connector: use __get_task_comm in proc_comm_connector Yafang Shao
2021-10-13 14:19   ` Steven Rostedt
2021-10-14  1:48     ` Yafang Shao
2021-10-14  2:24       ` Steven Rostedt
2021-10-14  2:42         ` Yafang Shao
2021-10-14  4:50         ` Kees Cook [this message]
2021-10-14  9:26           ` Yafang Shao
2021-10-14 13:31             ` Steven Rostedt
2021-10-13 10:23 ` [PATCH v4 3/5] fs/exec: use strscpy instead of strlcpy in __set_task_comm Yafang Shao
2021-10-13 10:23 ` [PATCH v4 4/5] sched.h: extend task comm from 16 to 24 for CONFIG_BASE_FULL Yafang Shao
2021-10-13 10:23 ` [PATCH v4 5/5] kernel/kthread: show a warning if kthread's comm is truncated Yafang Shao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202110132148.523C3EA@keescook \
    --to=keescook@chromium.org \
    --cc=akpm@linux-foundation.org \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=christian@brauner.io \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=juri.lelli@redhat.com \
    --cc=kuba@kernel.org \
    --cc=laoar.shao@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=qiang.zhang@windriver.com \
    --cc=robdclark@chromium.org \
    --cc=rostedt@goodmis.org \
    --cc=valentin.schneider@arm.com \
    --cc=vincent.guittot@linaro.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=vzapolskiy@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.