Messages in this thread Patch in this message | | | Date | Tue, 7 Sep 2004 23:16:26 +0200 | From | Andi Kleen <> | Subject | Re: [PATCH] Add prctl to modify current->comm |
| |
On Tue, Sep 07, 2004 at 06:12:48PM +0100, Alan Cox wrote: > > + case PR_SET_NAME: { > > + struct task_struct *me = current; > > + me->comm[sizeof(me->comm)-1] = 0; > > + if (strncpy_from_user(me->comm, (char *)arg2, sizeof(me->comm)-1) < 0) > > + return -EFAULT; > > + return 0; > > + } > > If the strncpy_from_user faults the state of current->comm is undefined.
I didn't see it as a big issue because the result will be 0 terminated anyways.
> This strikes me as bad design.
Here's is a new patch with this fixed.
-Andi
--------------------------------------------------------------------
Allow a program to change its current->comm
Useful for KDE & kdeinit.
diff -u linux-2.6.8-5/kernel/sys.c-o linux-2.6.8-5/kernel/sys.c --- linux-2.6.8-5/kernel/sys.c-o 2004-08-14 07:36:16.000000000 +0200 +++ linux-2.6.8-5/kernel/sys.c 2004-09-07 23:09:56.000000000 +0200 @@ -1660,6 +1660,15 @@ } current->keep_capabilities = arg2; break; + case PR_SET_NAME: { + struct task_struct *me = current; + unsigned char ncomm[sizeof(me->comm)]; + ncomm[sizeof(me->comm)-1] = 0; + if (strncpy_from_user(ncomm, (char *)arg2, sizeof(me->comm)-1) < 0) + return -EFAULT; + memcpy(me->comm, ncomm, sizeof(me->comm)); + return 0; + } default: error = -EINVAL; break; diff -u linux-2.6.8-5/include/linux/prctl.h-o linux-2.6.8-5/include/linux/prctl.h --- linux-2.6.8-5/include/linux/prctl.h-o 2004-08-14 07:37:14.000000000 +0200 +++ linux-2.6.8-5/include/linux/prctl.h 2004-09-07 23:09:44.000000000 +0200 @@ -49,5 +49,6 @@ # define PR_TIMING_TIMESTAMP 1 /* Accurate timestamp based process timing */ +#define PR_SET_NAME 15 /* Set process name. */ #endif /* _LINUX_PRCTL_H */ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |