RT3230: Better test for C identifier
authorAnnie Yousar <a.yousar@informatik.hu-berlin.de>
Sun, 3 May 2015 13:05:47 +0000 (09:05 -0400)
committerRich Salz <rsalz@openssl.org>
Tue, 2 Jun 2015 21:16:54 +0000 (17:16 -0400)
objects.pl only looked for a space to see if the name could be
used as a C identifier.  Improve the test to match the real C
rules.

Signed-off-by: Rich Salz <rsalz@akamai.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
crypto/objects/objects.README
crypto/objects/objects.pl

index 4d74550..cb1d216 100644 (file)
@@ -8,9 +8,9 @@ The basic syntax for adding an object is as follows:
 
        1 2 3 4         : shortName     : Long Name
 
-               If the long name doesn't contain spaces, or no short name
-               exists, the long name is used as basis for the base name
-               in C.  Otherwise, the short name is used.
+               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.
@@ -22,7 +22,7 @@ Then there are some extra commands:
 
        !Alias foo 1 2 3 4
 
-               This juts makes a name foo for an OID.  The C macro
+               This just makes a name foo for an OID.  The C macro
                OBJ_foo will be created as a result.
 
        !Cname foo
index d0ed459..389dc34 100644 (file)
@@ -67,7 +67,7 @@ while (<IN>)
                $myoid = &process_oid($myoid);
                }
 
-       if ($Cname eq "" && !($myln =~ / /))
+       if ($Cname eq "" && ($myln =~ /^[_A-Za-z][\w.-]*$/ ))
                {
                $Cname = $myln;
                $Cname =~ s/\./_/g;