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