diff --git a/COPYING b/COPYING index a3000de..57ba600 100644 --- a/COPYING +++ b/COPYING @@ -138,6 +138,27 @@ -- + Copyright © 1995 Peter Wemm + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice immediately at the beginning of the file, without modification, + this list of conditions, and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. This work was done expressly for inclusion into FreeBSD. Other use + is permitted provided this notation is included. + 4. Absolutely no warranty of function or purpose is made by the author + Peter Wemm. + 5. Modifications may be freely made to this file providing the above + conditions are met. + + -- + Copyright © 1997-2000, 2002, 2005, 2006, 2008 The NetBSD Foundation, Inc. All rights reserved. diff --git a/man/Makefile.am b/man/Makefile.am index 01415ba..d0f2271 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -37,6 +37,7 @@ dist_man_MANS = \ readpassphrase.3 \ reallocf.3 \ setmode.3 \ + setproctitle.3 \ sradixsort.3 \ strlcat.3 \ strlcpy.3 \ diff --git a/man/setproctitle.3 b/man/setproctitle.3 new file mode 100644 index 0000000..d42498e --- /dev/null +++ b/man/setproctitle.3 @@ -0,0 +1,124 @@ +.\" Copyright (c) 1995 Peter Wemm +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, is permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice immediately at the beginning of the file, without modification, +.\" this list of conditions, and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. This work was done expressly for inclusion into FreeBSD. Other use +.\" is permitted provided this notation is included. +.\" 4. Absolutely no warranty of function or purpose is made by the author +.\" Peter Wemm. +.\" 5. Modifications may be freely made to this file providing the above +.\" conditions are met. +.\" +.\" $FreeBSD$ +.\" +.\" The following requests are required for all man pages. +.Dd December 16, 1995 +.Dt SETPROCTITLE 3 +.Os +.Sh NAME +.Nm setproctitle +.Nd set process title +.Sh LIBRARY +.ds str-Lb-libbsd Utility functions from BSD systems (libbsd, \-lbsd) +.Lb libbsd +.Sh SYNOPSIS +.In sys/types.h +.In bsd/unistd.h +.Ft void +.Fn setproctitle "const char *fmt" "..." +.Sh DESCRIPTION +The +.Fn setproctitle +library routine sets the process title that appears on the +.Xr ps 1 +command. +.Pp +The title is set from the executable's name, followed by the +result of a +.Xr printf 3 +style expansion of the arguments as specified by the +.Va fmt +argument. +If the +.Va fmt +argument begins with a +.Dq - +character, the executable's name is skipped. +.Pp +If +.Va fmt +is NULL, the process title is restored. +.Sh EXAMPLES +To set the title on a daemon to indicate its activity: +.Bd -literal -offset indent +setproctitle("talking to %s", inet_ntoa(addr)); +.Ed +.Sh SEE ALSO +.Xr ps 1 , +.Xr w 1 , +.Xr kvm 3 , +.Xr kvm_getargv 3 , +.Xr printf 3 +.Sh STANDARDS +The +.Fn setproctitle +function +is implicitly non-standard. +Other methods of causing the +.Xr ps 1 +command line to change, including copying over the argv[0] string are +also implicitly non-portable. +It is preferable to use an operating system +supplied +.Fn setproctitle +if present. +.Pp +Unfortunately, it is possible that there are other calling conventions +to other versions of +.Fn setproctitle , +although none have been found by the author as yet. +This is believed to be +the predominant convention. +.Pp +It is thought that the implementation is compatible with other systems, +including +.Nx +and +.Bsx . +.Sh HISTORY +The +.Fn setproctitle +function +first appeared in +.Fx 2.2 . +Other operating systems have +similar functions. +.Sh AUTHORS +.An -nosplit +.An Peter Wemm Aq peter@FreeBSD.org +stole the idea from the +.Sy "Sendmail 8.7.3" +source code by +.An Eric Allman Aq eric@sendmail.org . +.Sh BUGS +Never pass a string with user-supplied data as a format without using +.Ql %s . +An attacker can put format specifiers in the string to mangle your stack, +leading to a possible security hole. +This holds true even if the string was built using a function like +.Fn snprintf , +as the resulting string may still contain user-supplied conversion specifiers +for later interpolation by +.Fn setproctitle . +.Pp +Always use the proper secure idiom: +.Pp +.Dl setproctitle("%s", string);