USTAR & PAX Field Capacities, Bounds, and Buffer Limits

Fixed array sizes, maximum string lengths, encoding numeric limits, and formatting buffer sizes.

Defines

Name
MPTAR_USTAR_SIZE_LINKNAME
Raw size of the header linkname field in bytes.
MPTAR_USTAR_SIZE_NAME
Raw size of the header filename field in bytes.
MPTAR_USTAR_SIZE_PREFIX
Raw size of the header prefix field in bytes.
MPTAR_USTAR_SIZE_UNAME
Raw size of the header owner user name field in bytes.
MPTAR_USTAR_SIZE_GNAME
Raw size of the header owner group name field in bytes.
MPTAR_USTAR_MAX_LEN_NAME
Maximum string length for filename (99 chars).
MPTAR_USTAR_MAX_LEN_LINKNAME
Maximum string length for linkname (99 chars).
MPTAR_USTAR_MAX_LEN_PREFIX
Maximum string length for prefix (154 chars).
MPTAR_USTAR_MAX_LEN_UNAME
Maximum string length for uname (31 chars).
MPTAR_USTAR_MAX_LEN_GNAME
Maximum string length for gname (31 chars).
MPTAR_USTAR_MAX_OCTAL_12B
Maximum value encodeable in a 12-byte USTAR octal field (77777777777 octal).
MPTAR_USTAR_MAX_OCTAL_8B
Maximum value encodeable in an 8-byte USTAR octal field (7777777 octal).
MPTAR_MAX_OCTAL_DIGITS_64
Max octal digits required to represent a 64-bit integer.
MPTAR_BINARY_MAX_8B
Max boundary for 8-byte base-256 binary encoded values.
MPTAR_PAX_MAX_UINT32_STR_LEN
String length required to represent a uint32 value when its value exceeds 999999999 (10 digits, up to 4294967295).
MPTAR_PAX_NSEC_MAX_DIGITS
Maximum digits needed for writing nanoseconds precision (10^-9).
MPTAR_PAX_NSEC_INITIAL_MULTIPLIER
Scale factor (10^8) for extracting top nanosecond digit.
MPTAR_PAX_MAX_DATA_LEN
Maximum payload byte capacity inside a single PAX record.
MPTAR_UINT64_STR_BUF_SIZE
Buffer capacity used to safely format a 64-bit uint string (including terminator).
MPTAR_TIMESPEC_STR_BUF_SIZE
Buffer capacity used to safely format full PAX timestamp string ("sec.nsec", including null terminator).
MPTAR_MAX_PAX_SIZE
Maximum permitted byte size for a single PAX extended header payload.

Macros Documentation

define MPTAR_USTAR_SIZE_LINKNAME

#define MPTAR_USTAR_SIZE_LINKNAME 100

Raw size of the header linkname field in bytes.

define MPTAR_USTAR_SIZE_NAME

#define MPTAR_USTAR_SIZE_NAME 100

Raw size of the header filename field in bytes.

define MPTAR_USTAR_SIZE_PREFIX

#define MPTAR_USTAR_SIZE_PREFIX 155

Raw size of the header prefix field in bytes.

define MPTAR_USTAR_SIZE_UNAME

#define MPTAR_USTAR_SIZE_UNAME 32

Raw size of the header owner user name field in bytes.

define MPTAR_USTAR_SIZE_GNAME

#define MPTAR_USTAR_SIZE_GNAME 32

Raw size of the header owner group name field in bytes.

define MPTAR_USTAR_MAX_LEN_NAME

#define MPTAR_USTAR_MAX_LEN_NAME (MPTAR_USTAR_SIZE_NAME - 1)

Maximum string length for filename (99 chars).

define MPTAR_USTAR_MAX_LEN_LINKNAME

#define MPTAR_USTAR_MAX_LEN_LINKNAME (MPTAR_USTAR_SIZE_LINKNAME - 1)

Maximum string length for linkname (99 chars).

define MPTAR_USTAR_MAX_LEN_PREFIX

#define MPTAR_USTAR_MAX_LEN_PREFIX (MPTAR_USTAR_SIZE_PREFIX - 1)

Maximum string length for prefix (154 chars).

define MPTAR_USTAR_MAX_LEN_UNAME

#define MPTAR_USTAR_MAX_LEN_UNAME (MPTAR_USTAR_SIZE_UNAME - 1)

Maximum string length for uname (31 chars).

define MPTAR_USTAR_MAX_LEN_GNAME

#define MPTAR_USTAR_MAX_LEN_GNAME (MPTAR_USTAR_SIZE_GNAME - 1)

Maximum string length for gname (31 chars).

define MPTAR_USTAR_MAX_OCTAL_12B

#define MPTAR_USTAR_MAX_OCTAL_12B 8589934591ULL

Maximum value encodeable in a 12-byte USTAR octal field (77777777777 octal).

define MPTAR_USTAR_MAX_OCTAL_8B

#define MPTAR_USTAR_MAX_OCTAL_8B 2097151ULL

Maximum value encodeable in an 8-byte USTAR octal field (7777777 octal).

define MPTAR_MAX_OCTAL_DIGITS_64

#define MPTAR_MAX_OCTAL_DIGITS_64 22U

Max octal digits required to represent a 64-bit integer.

define MPTAR_BINARY_MAX_8B

#define MPTAR_BINARY_MAX_8B MPTAR_INT64_MAX

Max boundary for 8-byte base-256 binary encoded values.

define MPTAR_PAX_MAX_UINT32_STR_LEN

#define MPTAR_PAX_MAX_UINT32_STR_LEN 10U

String length required to represent a uint32 value when its value exceeds 999999999 (10 digits, up to 4294967295).

define MPTAR_PAX_NSEC_MAX_DIGITS

#define MPTAR_PAX_NSEC_MAX_DIGITS 9U

Maximum digits needed for writing nanoseconds precision (10^-9).

define MPTAR_PAX_NSEC_INITIAL_MULTIPLIER

#define MPTAR_PAX_NSEC_INITIAL_MULTIPLIER 100000000U

Scale factor (10^8) for extracting top nanosecond digit.

define MPTAR_PAX_MAX_DATA_LEN

#define MPTAR_PAX_MAX_DATA_LEN (MPTAR_UINT32_MAX - MPTAR_PAX_MAX_UINT32_STR_LEN)

Maximum payload byte capacity inside a single PAX record.

define MPTAR_UINT64_STR_BUF_SIZE

#define MPTAR_UINT64_STR_BUF_SIZE 24U

Buffer capacity used to safely format a 64-bit uint string (including terminator).

define MPTAR_TIMESPEC_STR_BUF_SIZE

#define MPTAR_TIMESPEC_STR_BUF_SIZE 32U

Buffer capacity used to safely format full PAX timestamp string ("sec.nsec", including null terminator).

define MPTAR_MAX_PAX_SIZE

#define MPTAR_MAX_PAX_SIZE (8 * 1024 * 1024)

Maximum permitted byte size for a single PAX extended header payload.

Protects against Denial of Service (DoS) attacks or dynamic allocation panics caused by corrupted or untrusted TAR archives with unnaturally large PAX size headers. Defaults to 8 MiB (8,388,608 bytes). Can be overridden at compile-time.


Updated on 2026-07-23 at 20:07:34 +0000