---
name: "ares_expand_string"
section: "3"
platform: "linux"
package: "c-ares"
version: "1.34.9-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ares_expand_string"
---

# ares\_expand\_string(3)

Expand a length encoded string

## NAME

ares\_expand\_string - Expand a length encoded string

## SYNOPSIS

```
#include <ares.h>
int ares_expand_string(const unsigned char *encoded,
                       const unsigned char *abuf, int alen,
                       unsigned char **s, long *enclen)
```

## DESCRIPTION

The **ares\_expand\_string** function converts a length encoded string to a NUL-terminated C string.  The argument *encoded* gives the beginning of the encoded string, and the arguments *abuf* and *alen* give the containing message buffer (necessary for the processing of indirection pointers within the encoded domain name).  The result is placed in a NUL-terminated allocated buffer, a pointer to which is stored in the variable pointed to by *s*. The length of the encoded string is stored in the variable pointed to by *enclen* so that the caller can advance past the encoded string to read further data in the message.

## RETURN VALUES

**ares\_expand\_string** can return any of the following values:

- **ARES\_SUCCESS**

  Expansion of the encoded string succeeded.

- **ARES\_EBADSTR**

  The encoded string was malformed and could not be expanded.

- **ARES\_ENOMEM**

  Memory was exhausted.

## SEE ALSO

[**ares\_free\_string**(3)](/ares_free_string/3.md)
