12f3ed619SDag-Erling Smørgrav.\"- 22f3ed619SDag-Erling Smørgrav.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc. 32f3ed619SDag-Erling Smørgrav.\" Copyright (c) 2004-2011 Dag-Erling Smørgrav 42f3ed619SDag-Erling Smørgrav.\" All rights reserved. 52f3ed619SDag-Erling Smørgrav.\" 62f3ed619SDag-Erling Smørgrav.\" This software was developed for the FreeBSD Project by ThinkSec AS and 72f3ed619SDag-Erling Smørgrav.\" Network Associates Laboratories, the Security Research Division of 82f3ed619SDag-Erling Smørgrav.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 92f3ed619SDag-Erling Smørgrav.\" ("CBOSS"), as part of the DARPA CHATS research program. 102f3ed619SDag-Erling Smørgrav.\" 112f3ed619SDag-Erling Smørgrav.\" Redistribution and use in source and binary forms, with or without 122f3ed619SDag-Erling Smørgrav.\" modification, are permitted provided that the following conditions 132f3ed619SDag-Erling Smørgrav.\" are met: 142f3ed619SDag-Erling Smørgrav.\" 1. Redistributions of source code must retain the above copyright 152f3ed619SDag-Erling Smørgrav.\" notice, this list of conditions and the following disclaimer. 162f3ed619SDag-Erling Smørgrav.\" 2. Redistributions in binary form must reproduce the above copyright 172f3ed619SDag-Erling Smørgrav.\" notice, this list of conditions and the following disclaimer in the 182f3ed619SDag-Erling Smørgrav.\" documentation and/or other materials provided with the distribution. 192f3ed619SDag-Erling Smørgrav.\" 3. The name of the author may not be used to endorse or promote 202f3ed619SDag-Erling Smørgrav.\" products derived from this software without specific prior written 212f3ed619SDag-Erling Smørgrav.\" permission. 222f3ed619SDag-Erling Smørgrav.\" 232f3ed619SDag-Erling Smørgrav.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 242f3ed619SDag-Erling Smørgrav.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 252f3ed619SDag-Erling Smørgrav.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 262f3ed619SDag-Erling Smørgrav.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 272f3ed619SDag-Erling Smørgrav.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 282f3ed619SDag-Erling Smørgrav.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 292f3ed619SDag-Erling Smørgrav.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 302f3ed619SDag-Erling Smørgrav.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 312f3ed619SDag-Erling Smørgrav.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 322f3ed619SDag-Erling Smørgrav.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 332f3ed619SDag-Erling Smørgrav.\" SUCH DAMAGE. 342f3ed619SDag-Erling Smørgrav.\" 352f3ed619SDag-Erling Smørgrav.\" $Id$ 362f3ed619SDag-Erling Smørgrav.\" 37*ea807406SDag-Erling Smørgrav.Dd March 3, 2013 382f3ed619SDag-Erling Smørgrav.Dt OPENPAM_STRADDCH 3 392f3ed619SDag-Erling Smørgrav.Os 402f3ed619SDag-Erling Smørgrav.Sh NAME 412f3ed619SDag-Erling Smørgrav.Nm openpam_straddch 422f3ed619SDag-Erling Smørgrav.Nd add a character to a string, expanding the buffer if needed 432f3ed619SDag-Erling Smørgrav.Sh LIBRARY 442f3ed619SDag-Erling Smørgrav.Lb libpam 452f3ed619SDag-Erling Smørgrav.Sh SYNOPSIS 462f3ed619SDag-Erling Smørgrav.In sys/types.h 472f3ed619SDag-Erling Smørgrav.In security/pam_appl.h 482f3ed619SDag-Erling Smørgrav.In security/openpam.h 492f3ed619SDag-Erling Smørgrav.Ft "int" 502f3ed619SDag-Erling Smørgrav.Fn openpam_straddch "char **str" "size_t *size" "size_t *len" "int ch" 512f3ed619SDag-Erling Smørgrav.Sh DESCRIPTION 522f3ed619SDag-Erling SmørgravThe 532f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 542f3ed619SDag-Erling Smørgravfunction appends a character to a dynamically 552f3ed619SDag-Erling Smørgravallocated NUL-terminated buffer, reallocating the buffer as needed. 562f3ed619SDag-Erling Smørgrav.Pp 572f3ed619SDag-Erling SmørgravThe 582f3ed619SDag-Erling Smørgrav.Fa str 592f3ed619SDag-Erling Smørgravargument points to a variable containing either a pointer to 602f3ed619SDag-Erling Smørgravan existing buffer or 612f3ed619SDag-Erling Smørgrav.Dv NULL . 622f3ed619SDag-Erling SmørgravIf the value of the variable pointed to by 632f3ed619SDag-Erling Smørgrav.Fa str 642f3ed619SDag-Erling Smørgravis 652f3ed619SDag-Erling Smørgrav.Dv NULL , 662f3ed619SDag-Erling Smørgrava new buffer 672f3ed619SDag-Erling Smørgravis allocated. 682f3ed619SDag-Erling Smørgrav.Pp 692f3ed619SDag-Erling SmørgravThe 702f3ed619SDag-Erling Smørgrav.Fa size 712f3ed619SDag-Erling Smørgravand 722f3ed619SDag-Erling Smørgrav.Fa len 732f3ed619SDag-Erling Smørgravargument point to variables used to hold the size 742f3ed619SDag-Erling Smørgravof the buffer and the length of the string it contains, respectively. 752f3ed619SDag-Erling Smørgrav.Pp 76*ea807406SDag-Erling SmørgravThe final argument, 77*ea807406SDag-Erling Smørgrav.Fa ch , 78*ea807406SDag-Erling Smørgravis the character that should be appended to 79*ea807406SDag-Erling Smørgravthe string. If 80*ea807406SDag-Erling Smørgrav.Fa ch 81*ea807406SDag-Erling Smørgravis 0, nothing is appended, but a new buffer is 82*ea807406SDag-Erling Smørgravstill allocated if 83*ea807406SDag-Erling Smørgrav.Fa str 84*ea807406SDag-Erling Smørgravis NULL. This can be used to 85*ea807406SDag-Erling Smørgrav.Do 86*ea807406SDag-Erling Smørgravbootstrap 87*ea807406SDag-Erling Smørgrav.Dc 88*ea807406SDag-Erling Smørgravthe 89*ea807406SDag-Erling Smørgravstring. 90*ea807406SDag-Erling Smørgrav.Pp 912f3ed619SDag-Erling SmørgravIf a new buffer is allocated or an existing buffer is reallocated to 922f3ed619SDag-Erling Smørgravmake room for the additional character, 932f3ed619SDag-Erling Smørgrav.Fa str 942f3ed619SDag-Erling Smørgravand 952f3ed619SDag-Erling Smørgrav.Fa size 962f3ed619SDag-Erling Smørgravare updated 972f3ed619SDag-Erling Smørgravaccordingly. 982f3ed619SDag-Erling Smørgrav.Pp 992f3ed619SDag-Erling SmørgravThe 1002f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 1012f3ed619SDag-Erling Smørgravfunction ensures that the buffer is always 1022f3ed619SDag-Erling SmørgravNUL-terminated. 1032f3ed619SDag-Erling Smørgrav.Pp 1042f3ed619SDag-Erling SmørgravIf the 1052f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 1062f3ed619SDag-Erling Smørgravfunction is successful, it increments the 1072f3ed619SDag-Erling Smørgravinteger variable pointed to by 1082f3ed619SDag-Erling Smørgrav.Fa len 109*ea807406SDag-Erling Smørgrav(unless 110*ea807406SDag-Erling Smørgrav.Fa ch 111*ea807406SDag-Erling Smørgravwas 0) and returns 0. 1122f3ed619SDag-Erling SmørgravOtherwise, it leaves the variables pointed to by 1132f3ed619SDag-Erling Smørgrav.Fa str , 1142f3ed619SDag-Erling Smørgrav.Fa size 1152f3ed619SDag-Erling Smørgravand 1162f3ed619SDag-Erling Smørgrav.Fa len 1172f3ed619SDag-Erling Smørgravunmodified, sets 1182f3ed619SDag-Erling Smørgrav.Va errno 1192f3ed619SDag-Erling Smørgravto 1202f3ed619SDag-Erling Smørgrav.Dv ENOMEM 1212f3ed619SDag-Erling Smørgravand returns -1. 1222f3ed619SDag-Erling Smørgrav.Pp 1232f3ed619SDag-Erling Smørgrav.Sh RETURN VALUES 1242f3ed619SDag-Erling SmørgravThe 1252f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 1262f3ed619SDag-Erling Smørgravfunction returns 0 on success and -1 on failure. 1272f3ed619SDag-Erling Smørgrav.Sh SEE ALSO 1282f3ed619SDag-Erling Smørgrav.Xr pam 3 , 1292f3ed619SDag-Erling Smørgrav.Xr pam_strerror 3 1302f3ed619SDag-Erling Smørgrav.Sh STANDARDS 1312f3ed619SDag-Erling SmørgravThe 1322f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 1332f3ed619SDag-Erling Smørgravfunction is an OpenPAM extension. 1342f3ed619SDag-Erling Smørgrav.Sh AUTHORS 1352f3ed619SDag-Erling SmørgravThe 1362f3ed619SDag-Erling Smørgrav.Fn openpam_straddch 1372f3ed619SDag-Erling Smørgravfunction and this manual page were 1382f3ed619SDag-Erling Smørgravdeveloped by 1392f3ed619SDag-Erling Smørgrav.An Dag-Erling Sm\(/orgrav Aq des@des.no . 140