1*2f3ed619SDag-Erling Smørgrav.\"- 2*2f3ed619SDag-Erling Smørgrav.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc. 3*2f3ed619SDag-Erling Smørgrav.\" Copyright (c) 2004-2011 Dag-Erling Smørgrav 4*2f3ed619SDag-Erling Smørgrav.\" All rights reserved. 5*2f3ed619SDag-Erling Smørgrav.\" 6*2f3ed619SDag-Erling Smørgrav.\" This software was developed for the FreeBSD Project by ThinkSec AS and 7*2f3ed619SDag-Erling Smørgrav.\" Network Associates Laboratories, the Security Research Division of 8*2f3ed619SDag-Erling Smørgrav.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 9*2f3ed619SDag-Erling Smørgrav.\" ("CBOSS"), as part of the DARPA CHATS research program. 10*2f3ed619SDag-Erling Smørgrav.\" 11*2f3ed619SDag-Erling Smørgrav.\" Redistribution and use in source and binary forms, with or without 12*2f3ed619SDag-Erling Smørgrav.\" modification, are permitted provided that the following conditions 13*2f3ed619SDag-Erling Smørgrav.\" are met: 14*2f3ed619SDag-Erling Smørgrav.\" 1. Redistributions of source code must retain the above copyright 15*2f3ed619SDag-Erling Smørgrav.\" notice, this list of conditions and the following disclaimer. 16*2f3ed619SDag-Erling Smørgrav.\" 2. Redistributions in binary form must reproduce the above copyright 17*2f3ed619SDag-Erling Smørgrav.\" notice, this list of conditions and the following disclaimer in the 18*2f3ed619SDag-Erling Smørgrav.\" documentation and/or other materials provided with the distribution. 19*2f3ed619SDag-Erling Smørgrav.\" 3. The name of the author may not be used to endorse or promote 20*2f3ed619SDag-Erling Smørgrav.\" products derived from this software without specific prior written 21*2f3ed619SDag-Erling Smørgrav.\" permission. 22*2f3ed619SDag-Erling Smørgrav.\" 23*2f3ed619SDag-Erling Smørgrav.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 24*2f3ed619SDag-Erling Smørgrav.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25*2f3ed619SDag-Erling Smørgrav.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26*2f3ed619SDag-Erling Smørgrav.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 27*2f3ed619SDag-Erling Smørgrav.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28*2f3ed619SDag-Erling Smørgrav.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29*2f3ed619SDag-Erling Smørgrav.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30*2f3ed619SDag-Erling Smørgrav.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31*2f3ed619SDag-Erling Smørgrav.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32*2f3ed619SDag-Erling Smørgrav.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33*2f3ed619SDag-Erling Smørgrav.\" SUCH DAMAGE. 34*2f3ed619SDag-Erling Smørgrav.\" 35*2f3ed619SDag-Erling Smørgrav.\" $Id$ 36*2f3ed619SDag-Erling Smørgrav.\" 37*2f3ed619SDag-Erling Smørgrav.Dd May 26, 2012 38*2f3ed619SDag-Erling Smørgrav.Dt OPENPAM_STRADDCH 3 39*2f3ed619SDag-Erling Smørgrav.Os 40*2f3ed619SDag-Erling Smørgrav.Sh NAME 41*2f3ed619SDag-Erling Smørgrav.Nm openpam_straddch 42*2f3ed619SDag-Erling Smørgrav.Nd add a character to a string, expanding the buffer if needed 43*2f3ed619SDag-Erling Smørgrav.Sh LIBRARY 44*2f3ed619SDag-Erling Smørgrav.Lb libpam 45*2f3ed619SDag-Erling Smørgrav.Sh SYNOPSIS 46*2f3ed619SDag-Erling Smørgrav.In sys/types.h 47*2f3ed619SDag-Erling Smørgrav.In security/pam_appl.h 48*2f3ed619SDag-Erling Smørgrav.In security/openpam.h 49*2f3ed619SDag-Erling Smørgrav.Ft "int" 50*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch "char **str" "size_t *size" "size_t *len" "int ch" 51*2f3ed619SDag-Erling Smørgrav.Sh DESCRIPTION 52*2f3ed619SDag-Erling SmørgravThe 53*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 54*2f3ed619SDag-Erling Smørgravfunction appends a character to a dynamically 55*2f3ed619SDag-Erling Smørgravallocated NUL-terminated buffer, reallocating the buffer as needed. 56*2f3ed619SDag-Erling Smørgrav.Pp 57*2f3ed619SDag-Erling SmørgravThe 58*2f3ed619SDag-Erling Smørgrav.Fa str 59*2f3ed619SDag-Erling Smørgravargument points to a variable containing either a pointer to 60*2f3ed619SDag-Erling Smørgravan existing buffer or 61*2f3ed619SDag-Erling Smørgrav.Dv NULL . 62*2f3ed619SDag-Erling SmørgravIf the value of the variable pointed to by 63*2f3ed619SDag-Erling Smørgrav.Fa str 64*2f3ed619SDag-Erling Smørgravis 65*2f3ed619SDag-Erling Smørgrav.Dv NULL , 66*2f3ed619SDag-Erling Smørgrava new buffer 67*2f3ed619SDag-Erling Smørgravis allocated. 68*2f3ed619SDag-Erling Smørgrav.Pp 69*2f3ed619SDag-Erling SmørgravThe 70*2f3ed619SDag-Erling Smørgrav.Fa size 71*2f3ed619SDag-Erling Smørgravand 72*2f3ed619SDag-Erling Smørgrav.Fa len 73*2f3ed619SDag-Erling Smørgravargument point to variables used to hold the size 74*2f3ed619SDag-Erling Smørgravof the buffer and the length of the string it contains, respectively. 75*2f3ed619SDag-Erling Smørgrav.Pp 76*2f3ed619SDag-Erling SmørgravIf a new buffer is allocated or an existing buffer is reallocated to 77*2f3ed619SDag-Erling Smørgravmake room for the additional character, 78*2f3ed619SDag-Erling Smørgrav.Fa str 79*2f3ed619SDag-Erling Smørgravand 80*2f3ed619SDag-Erling Smørgrav.Fa size 81*2f3ed619SDag-Erling Smørgravare updated 82*2f3ed619SDag-Erling Smørgravaccordingly. 83*2f3ed619SDag-Erling Smørgrav.Pp 84*2f3ed619SDag-Erling SmørgravThe 85*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 86*2f3ed619SDag-Erling Smørgravfunction ensures that the buffer is always 87*2f3ed619SDag-Erling SmørgravNUL-terminated. 88*2f3ed619SDag-Erling Smørgrav.Pp 89*2f3ed619SDag-Erling SmørgravIf the 90*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 91*2f3ed619SDag-Erling Smørgravfunction is successful, it increments the 92*2f3ed619SDag-Erling Smørgravinteger variable pointed to by 93*2f3ed619SDag-Erling Smørgrav.Fa len 94*2f3ed619SDag-Erling Smørgravand returns 0. 95*2f3ed619SDag-Erling SmørgravOtherwise, it leaves the variables pointed to by 96*2f3ed619SDag-Erling Smørgrav.Fa str , 97*2f3ed619SDag-Erling Smørgrav.Fa size 98*2f3ed619SDag-Erling Smørgravand 99*2f3ed619SDag-Erling Smørgrav.Fa len 100*2f3ed619SDag-Erling Smørgravunmodified, sets 101*2f3ed619SDag-Erling Smørgrav.Va errno 102*2f3ed619SDag-Erling Smørgravto 103*2f3ed619SDag-Erling Smørgrav.Dv ENOMEM 104*2f3ed619SDag-Erling Smørgravand returns -1. 105*2f3ed619SDag-Erling Smørgrav.Pp 106*2f3ed619SDag-Erling Smørgrav.Sh RETURN VALUES 107*2f3ed619SDag-Erling SmørgravThe 108*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 109*2f3ed619SDag-Erling Smørgravfunction returns 0 on success and -1 on failure. 110*2f3ed619SDag-Erling Smørgrav.Sh SEE ALSO 111*2f3ed619SDag-Erling Smørgrav.Xr pam 3 , 112*2f3ed619SDag-Erling Smørgrav.Xr pam_strerror 3 113*2f3ed619SDag-Erling Smørgrav.Sh STANDARDS 114*2f3ed619SDag-Erling SmørgravThe 115*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 116*2f3ed619SDag-Erling Smørgravfunction is an OpenPAM extension. 117*2f3ed619SDag-Erling Smørgrav.Sh AUTHORS 118*2f3ed619SDag-Erling SmørgravThe 119*2f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 120*2f3ed619SDag-Erling Smørgravfunction and this manual page were 121*2f3ed619SDag-Erling Smørgravdeveloped by 122*2f3ed619SDag-Erling Smørgrav.An Dag-Erling Sm\(/orgrav Aq des@des.no . 123