Change obj_... generation so that it does not generate rubbish or
abort with errors if no name is defined for some object, which was the
case for 'pilotAttributeType 27'.

Also avoid this very situation by assigning the name
'pilotAttributeType27'.
diff --git a/Makefile.org b/Makefile.org
index e638725..1c79eee 100644
--- a/Makefile.org
+++ b/Makefile.org
@@ -446,9 +446,9 @@
 util/ssleay.num::
 	$(PERL) util/mkdef.pl ssl update
 
-crypto/objects/obj_dat.h: crypto/objects/obj_mac.h crypto/objects/obj_dat.pl
+crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
 	$(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
-crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt 
+crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/obj_mac.num
 	$(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
 
 TABLE: Configure
diff --git a/crypto/objects/Makefile.ssl b/crypto/objects/Makefile.ssl
index 1c5d65d..f12602e 100644
--- a/crypto/objects/Makefile.ssl
+++ b/crypto/objects/Makefile.ssl
@@ -15,6 +15,7 @@
 MAKEDEPEND=	$(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
 MAKEFILE=	Makefile.ssl
 AR=		ar r
+PERL=		perl
 
 CFLAGS= $(INCLUDES) $(CFLAG)
 
@@ -44,10 +45,11 @@
 	- $(RANLIB) $(LIB)
 	@touch lib
 
-obj_dat.h: objects.h objects.txt obj_mac.h
+obj_dat.h: obj_dat.pl obj_mac.h
 	$(PERL) obj_dat.pl obj_mac.h obj_dat.h
 
-obj_mac.h: objects.txt obj_mac.num
+# objects.pl both reads and writes obj_mac.num
+obj_mac.h: objects.pl objects.txt obj_mac.num
 	$(PERL) objects.pl objects.txt obj_mac.num obj_mac.h
 
 files:
diff --git a/crypto/objects/obj_dat.h b/crypto/objects/obj_dat.h
index fd8c568..f39e567 100644
--- a/crypto/objects/obj_dat.h
+++ b/crypto/objects/obj_dat.h
@@ -58,13 +58,13 @@
 
 /* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the
  * following command:
- * perl obj_dat.pl objects.h obj_dat.h
+ * perl obj_dat.pl obj_mac.h obj_dat.h
  */
 
 #define NUM_NID 480
-#define NUM_SN 481
-#define NUM_LN 481
-#define NUM_OBJ 455
+#define NUM_SN 478
+#define NUM_LN 478
+#define NUM_OBJ 452
 
 static unsigned char lvalues[3694]={
 0x00,                                        /* [  0] OBJ_undef */
@@ -495,7 +495,7 @@
 0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x17,/* [3423] OBJ_lastModifiedTime */
 0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x18,/* [3433] OBJ_lastModifiedBy */
 0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1A,/* [3443] OBJ_aRecord */
-0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1B,/* [3453] OBJ_ */
+0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1B,/* [3453] OBJ_pilotAttributeType27 */
 0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1C,/* [3463] OBJ_mXRecord */
 0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1D,/* [3473] OBJ_nSRecord */
 0x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1E,/* [3483] OBJ_sOARecord */
@@ -1219,7 +1219,8 @@
 {"lastModifiedBy","lastModifiedBy",NID_lastModifiedBy,10,
 	&(lvalues[3433]),0},
 {"aRecord","aRecord",NID_aRecord,10,&(lvalues[3443]),0},
-{"NULL","NULL",NID_,10,&(lvalues[3453]),0},
+{"pilotAttributeType27","pilotAttributeType27",
+	NID_pilotAttributeType27,10,&(lvalues[3453]),0},
 {"mXRecord","mXRecord",NID_mXRecord,10,&(lvalues[3463]),0},
 {"nSRecord","nSRecord",NID_nSRecord,10,&(lvalues[3473]),0},
 {"sOARecord","sOARecord",NID_sOARecord,10,&(lvalues[3483]),0},
@@ -1323,10 +1324,6 @@
 &(nid_objs[ 4]),/* "MD5" */
 &(nid_objs[114]),/* "MD5-SHA1" */
 &(nid_objs[95]),/* "MDC2" */
-&(nid_objs[118]),/* "NULL" */
-&(nid_objs[393]),/* "NULL" */
-&(nid_objs[456]),/* "NULL" */
-&(nid_objs[480]),/* "NULL" */
 &(nid_objs[57]),/* "Netscape" */
 &(nid_objs[366]),/* "Nonce" */
 &(nid_objs[17]),/* "O" */
@@ -1678,6 +1675,7 @@
 &(nid_objs[414]),/* "pilot" */
 &(nid_objs[416]),/* "pilotAttributeSyntax" */
 &(nid_objs[415]),/* "pilotAttributeType" */
+&(nid_objs[456]),/* "pilotAttributeType27" */
 &(nid_objs[433]),/* "pilotDSA" */
 &(nid_objs[418]),/* "pilotGroups" */
 &(nid_objs[421]),/* "pilotObject" */
@@ -1775,10 +1773,6 @@
 &(nid_objs[134]),/* "Microsoft Individual Code Signing" */
 &(nid_objs[137]),/* "Microsoft Server Gated Crypto" */
 &(nid_objs[136]),/* "Microsoft Trust List Signing" */
-&(nid_objs[118]),/* "NULL" */
-&(nid_objs[393]),/* "NULL" */
-&(nid_objs[456]),/* "NULL" */
-&(nid_objs[480]),/* "NULL" */
 &(nid_objs[72]),/* "Netscape Base Url" */
 &(nid_objs[76]),/* "Netscape CA Policy Url" */
 &(nid_objs[74]),/* "Netscape CA Revocation Url" */
@@ -2146,6 +2140,7 @@
 &(nid_objs[414]),/* "pilot" */
 &(nid_objs[416]),/* "pilotAttributeSyntax" */
 &(nid_objs[415]),/* "pilotAttributeType" */
+&(nid_objs[456]),/* "pilotAttributeType27" */
 &(nid_objs[433]),/* "pilotDSA" */
 &(nid_objs[418]),/* "pilotGroups" */
 &(nid_objs[421]),/* "pilotObject" */
@@ -2548,10 +2543,7 @@
 &(nid_objs[454]),/* OBJ_lastModifiedBy               0 9 2342 19200300 100 1 24 */
 &(nid_objs[391]),/* OBJ_domainComponent              0 9 2342 19200300 100 1 25 */
 &(nid_objs[455]),/* OBJ_aRecord                      0 9 2342 19200300 100 1 26 */
-&(nid_objs[118]),/* OBJ_                             0 9 2342 19200300 100 1 27 */
-&(nid_objs[393]),/* OBJ_                             0 9 2342 19200300 100 1 27 */
-&(nid_objs[456]),/* OBJ_                             0 9 2342 19200300 100 1 27 */
-&(nid_objs[480]),/* OBJ_                             0 9 2342 19200300 100 1 27 */
+&(nid_objs[456]),/* OBJ_pilotAttributeType27         0 9 2342 19200300 100 1 27 */
 &(nid_objs[457]),/* OBJ_mXRecord                     0 9 2342 19200300 100 1 28 */
 &(nid_objs[458]),/* OBJ_nSRecord                     0 9 2342 19200300 100 1 29 */
 &(nid_objs[459]),/* OBJ_sOARecord                    0 9 2342 19200300 100 1 30 */
diff --git a/crypto/objects/obj_dat.pl b/crypto/objects/obj_dat.pl
index 11066df..9e49fea 100644
--- a/crypto/objects/obj_dat.pl
+++ b/crypto/objects/obj_dat.pl
@@ -224,7 +224,7 @@
 
 /* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the
  * following command:
- * perl obj_dat.pl objects.h obj_dat.h
+ * perl obj_dat.pl obj_mac.h obj_dat.h
  */
 
 EOF
diff --git a/crypto/objects/obj_mac.h b/crypto/objects/obj_mac.h
index 420534e..e511cbc 100644
--- a/crypto/objects/obj_mac.h
+++ b/crypto/objects/obj_mac.h
@@ -2070,8 +2070,9 @@
 #define NID_aRecord		455
 #define OBJ_aRecord		OBJ_pilotAttributeType,26L
 
-#define NID_		456
-#define OBJ_		OBJ_pilotAttributeType,27L
+#define LN_pilotAttributeType27		"pilotAttributeType27"
+#define NID_pilotAttributeType27		456
+#define OBJ_pilotAttributeType27		OBJ_pilotAttributeType,27L
 
 #define LN_mXRecord		"mXRecord"
 #define NID_mXRecord		457
diff --git a/crypto/objects/obj_mac.num b/crypto/objects/obj_mac.num
index 056b6bb..f8627ed 100644
--- a/crypto/objects/obj_mac.num
+++ b/crypto/objects/obj_mac.num
@@ -453,7 +453,7 @@
 lastModifiedTime		453
 lastModifiedBy		454
 aRecord		455
-		456
+pilotAttributeType27		456
 mXRecord		457
 nSRecord		458
 sOARecord		459
diff --git a/crypto/objects/objects.pl b/crypto/objects/objects.pl
index c956bbb..41fa414 100644
--- a/crypto/objects/objects.pl
+++ b/crypto/objects/objects.pl
@@ -9,7 +9,9 @@
 	$o++;
 	s/#.*$//;
 	next if /^\s*$/;
+	$_ = 'X'.$_;
 	($Cname,$mynum) = split;
+	$Cname =~ s/^X//;
 	if (defined($nidn{$mynum}))
 		{ die "$ARGV[1]:$o:There's already an object with NID ",$mynum," on line ",$order{$mynum},"\n"; }
 	$nid{$Cname} = $mynum;
diff --git a/crypto/objects/objects.txt b/crypto/objects/objects.txt
index ba7d868..2859746 100644
--- a/crypto/objects/objects.txt
+++ b/crypto/objects/objects.txt
@@ -669,7 +669,7 @@
 pilotAttributeType 24	:			: lastModifiedBy
 pilotAttributeType 25	: DC			: domainComponent
 pilotAttributeType 26	:			: aRecord
-pilotAttributeType 27	:			: 
+pilotAttributeType 27	:			: pilotAttributeType27
 pilotAttributeType 28	:			: mXRecord
 pilotAttributeType 29	:			: nSRecord
 pilotAttributeType 30	:			: sOARecord