---
name: "openpam_straddch"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/openpam_straddch"
---

# openpam\_straddch(3)

add a character to a string, expanding the buffer if needed

## NAME

**openpam\_straddch** – add a character to a string, expanding the buffer if needed

## SYNOPSIS

**#include \<sys/types.h\>**

**#include \<security/pam\_appl.h\>**

**#include \<security/openpam.h\>**

*int*\

**openpam\_straddch**(*char \*\*str*, *size\_t \*size*, *size\_t \*len*, *int ch*);

## DESCRIPTION

The **openpam\_straddch**() function appends a character to a dynamically allocated NUL-terminated buffer, reallocating the buffer as needed.

The *str* argument points to a variable containing either a pointer to an existing buffer or NULL. If the value of the variable pointed to by *str* is NULL, a new buffer is allocated.

The *size* and *len* argument point to variables used to hold the size of the buffer and the length of the string it contains, respectively.

The final argument, *ch*, is the character that should be appended to the string.  If *ch* is 0, nothing is appended, but a new buffer is still allocated if *str* is NULL.  This can be used to“ bootstrap” the string.

If a new buffer is allocated or an existing buffer is reallocated to make room for the additional character, *str* and *size* are updated accordingly.

The **openpam\_straddch**() function ensures that the buffer is always NUL-terminated.

If the **openpam\_straddch**() function is successful, it increments the integer variable pointed to by *len* (unless *ch* was 0) and returns 0. Otherwise, it leaves the variables pointed to by *str*, *size* and *len* unmodified, sets *errno* to ENOMEM and returns -1.

## RETURN VALUES

The **openpam\_straddch**() function returns 0 on success and -1 on failure.

## SEE ALSO

[pam(3)](/pam/3.md), [pam\_strerror(3)](/pam_strerror/3.md)

## STANDARDS

The **openpam\_straddch**() function is an OpenPAM extension.

## AUTHORS

The **openpam\_straddch**() function and this manual page were developed by Dag-Erling Smørgrav ⟨*des@des.dev*⟩.
