openssl/crypto/objects
Bernd Edlinger e91384d5b0 Fix error handling in OBJ_add_object
This fixes the possible memory leak in OBJ_add_object
when a pre-existing object is replaced by a new one,
with identical NID, OID, and/or short/long name.
We do not try to delete any orphans, but only mark
them as type == -1, because the previously returned
pointers from OBJ_nid2obj/OBJ_nid2sn/OBJ_nid2ln
may be cached by applications and can thus not
be cleaned up before the application terminates.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22534)
2024-08-21 15:53:37 +02:00
..
build.info
o_names.c
obj_compat.h
obj_dat.c Fix error handling in OBJ_add_object 2024-08-21 15:53:37 +02:00
obj_dat.h Add OIDs id-kp-wisun-fan-device and id-on-hardwareModule 2024-08-07 19:53:19 +02:00
obj_dat.pl Typo fixes 2024-05-13 11:10:35 +02:00
obj_err.c
obj_lib.c
obj_local.h
obj_mac.num Add OIDs id-kp-wisun-fan-device and id-on-hardwareModule 2024-08-07 19:53:19 +02:00
obj_xref.c
obj_xref.h Add Content Type OID for id-ct-rpkiSignedPrefixList 2024-03-15 09:10:22 +01:00
obj_xref.txt obj_xref: ecdsa support sha3 hash function 2023-10-02 12:46:24 +02:00
objects.pl
objects.txt Add OIDs id-kp-wisun-fan-device and id-on-hardwareModule 2024-08-07 19:53:19 +02:00
objxref.pl
README.md

objects.txt syntax

To cover all the naming hacks that were previously in objects.h needed some kind of hacks in objects.txt.

The basic syntax for adding an object is as follows:

    1 2 3 4         : shortName     : Long Name

            If Long Name contains only word characters and hyphen-minus
            (0x2D) or full stop (0x2E) then Long Name is used as basis
            for the base name in C. Otherwise, the shortName is used.

            The base name (let's call it 'base') will then be used to
            create the C macros SN_base, LN_base, NID_base and OBJ_base.

            Note that if the base name contains spaces, dashes or periods,
            those will be converted to underscore.

Then there are some extra commands:

    !Alias foo 1 2 3 4

            This just makes a name foo for an OID.  The C macro
            OBJ_foo will be created as a result.

    !Cname foo

            This makes sure that the name foo will be used as base name
            in C.

    !module foo
    1 2 3 4         : shortName     : Long Name
    !global

            The !module command was meant to define a kind of modularity.
            What it does is to make sure the module name is prepended
            to the base name.  !global turns this off.  This construction
            is not recursive.

Lines starting with # are treated as comments, as well as any line starting with ! and not matching the commands above.