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