HomeFreeBSD

heimdal: Add 64-bit integer support to ASN.1 compiler

Description

heimdal: Add 64-bit integer support to ASN.1 compiler

Import upstream 19d378f44:

ASN.1 INTEGERs will now compile to C int64_t or uint64_t, depending
on whether the constraint ranges include numbers that cannot be
represented in 32-bit ints and whether they include negative
numbers.

Template backend support included.  check-template is now built with
--template, so we know we're testing it.

Tests included.

Also adjusts the generated files:

  • asn1parse.c, asn1parse.h (not strictly necessary, but nice to have)
  • der-protos.h, which needs a bunch of new prototypes. I copied these from a der-protos.h generated by the upstream build system, which uses a perl script for this.
  • adjust printf format strings for int64_t. Upstream uses %lld for this, but that is not portable, and leads to lots of -Werror warnings.

This should fix target-dependent differences between headers generated
by asn1_compile. For example, when cross compiling world from amd64 to
i386, the generated cms_asn1.h header has:

CMSRC2CBCParameter ::= SEQUENCE {
  rc2ParameterVersion   INTEGER (0..-1),
  iv                    OCTET STRING,
}

while a native build on i386 has:

CMSRC2CBCParameter ::= SEQUENCE {
  rc2ParameterVersion   INTEGER (0..2147483647),
  iv                    OCTET STRING,
}

These are _both_ wrong, since the source file, cms.asn1, has:

CMSRC2CBCParameter ::= SEQUENCE {
        rc2ParameterVersion   INTEGER (0..4294967295),
        iv                    OCTET STRING -- exactly 8 octets
}

PR: 276960
Reviewed by: cy, emaste
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44814
Differential Revision: https://reviews.freebsd.org/D44815

(cherry picked from commit 1b7487592987c91020063a311a14dc15b6e58075)

Details

Provenance
dimAuthored on Apr 16 2024, 6:56 PM
Reviewer
cy
Differential Revision
D44814: heimdal: Add 64-bit integer support to ASN.1 compiler, part 2
Parents
rG8b4cf1092b65: Add a few missed libclang_rt files to ObsoleteFiles.inc
Branches
Unknown
Tags
Unknown