Re: [PATCH v2] sanitize task->comm to avoid leaking escape codes

From: KOSAKI Motohiro
Date: Tue Jun 29 2010 - 20:31:39 EST


> > This patch sanitizes task->comm to only contain printable characters
> > when it is set. Additionally, it redefines get_task_comm so that it is
> > more obvious when misused by callers (presently nothing was incorrectly
> > calling get_task_comm's unsafe use of strncpy).
>
> This is a regression for tools that correctly handle unmutilated data.
>
> > + /* sanitize non-printable characters */
> > + for (i = 0; buf[i] && i < (sizeof(tsk->comm) - 1); i++) {
> > + if (!isprint(buf[i]))
> > + tsk->comm[i] = '?';
>
> The kernel "isprint" isn't adequate for this. comm is set by the shell
> based on argv[0] usually which means that in normal situations it is a
> UTF-8 string.

Ah, I recall one use case. In past, some IBM folks talked about they
want to map Java thread name to prctl(PR_SET_NAME). In such case,
utf-8 name is very common.

So, I agree with you.

Thanks.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/