Here is a larger diff. More of the same. The only noteworthy thing
here is that OpenSSL can't easily change their ASN1-generated version
of X509_NAME_ENTRY_dup(3) into a const function, so we need to cast
const away in X509_NAME_add_entry(3).

Again part of sthen's bulk.

Index: lib/libcrypto/asn1/a_strex.c
===================================================================
RCS file: /cvs/src/lib/libcrypto/asn1/a_strex.c,v
retrieving revision 1.26
diff -u -p -r1.26 a_strex.c
--- lib/libcrypto/asn1/a_strex.c        25 Apr 2018 11:48:21 -0000      1.26
+++ lib/libcrypto/asn1/a_strex.c        18 May 2018 14:45:45 -0000
@@ -440,7 +440,7 @@ do_indent(char_io *io_ch, void *arg, int
 #define FN_WIDTH_SN    10
 
 static int
-do_name_ex(char_io *io_ch, void *arg, X509_NAME *n, int indent,
+do_name_ex(char_io *io_ch, void *arg, const X509_NAME *n, int indent,
     unsigned long flags)
 {
        int i, prev = -1, orflags, cnt;
@@ -582,7 +582,8 @@ do_name_ex(char_io *io_ch, void *arg, X5
 /* Wrappers round the main functions */
 
 int
-X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, unsigned long flags)
+X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
+    unsigned long flags)
 {
        if (flags == XN_FLAG_COMPAT)
                return X509_NAME_print(out, nm, indent);
@@ -590,7 +591,8 @@ X509_NAME_print_ex(BIO *out, X509_NAME *
 }
 
 int
-X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, unsigned long flags)
+X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent,
+    unsigned long flags)
 {
        if (flags == XN_FLAG_COMPAT) {
                BIO *btmp;
Index: lib/libcrypto/asn1/t_x509.c
===================================================================
RCS file: /cvs/src/lib/libcrypto/asn1/t_x509.c,v
retrieving revision 1.30
diff -u -p -r1.30 t_x509.c
--- lib/libcrypto/asn1/t_x509.c 1 May 2018 19:01:27 -0000       1.30
+++ lib/libcrypto/asn1/t_x509.c 18 May 2018 14:45:45 -0000
@@ -490,7 +490,7 @@ err:
 }
 
 int
-X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
+X509_NAME_print(BIO *bp, const X509_NAME *name, int obase)
 {
        char *s, *c, *b;
        int ret = 0, l, i;
Index: lib/libcrypto/x509/x509.h
===================================================================
RCS file: /cvs/src/lib/libcrypto/x509/x509.h,v
retrieving revision 1.50
diff -u -p -r1.50 x509.h
--- lib/libcrypto/x509/x509.h   18 May 2018 14:19:46 -0000      1.50
+++ lib/libcrypto/x509/x509.h   18 May 2018 14:45:46 -0000
@@ -965,7 +965,7 @@ extern const ASN1_ITEM NETSCAPE_CERT_SEQ
 #ifndef OPENSSL_NO_EVP
 X509_INFO *    X509_INFO_new(void);
 void           X509_INFO_free(X509_INFO *a);
-char *         X509_NAME_oneline(X509_NAME *a,char *buf,int size);
+char *         X509_NAME_oneline(const X509_NAME *a, char *buf, int size);
 
 int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data,
        unsigned char *md,unsigned int *len);
@@ -1076,11 +1076,13 @@ int             X509_print_ex_fp(FILE *bp,X509 *x, 
 int            X509_print_fp(FILE *bp,X509 *x);
 int            X509_CRL_print_fp(FILE *bp,X509_CRL *x);
 int            X509_REQ_print_fp(FILE *bp,X509_REQ *req);
-int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, unsigned long 
flags);
+int            X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent,
+                   unsigned long flags);
 
 #ifndef OPENSSL_NO_BIO
-int            X509_NAME_print(BIO *bp, X509_NAME *name, int obase);
-int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, unsigned long 
flags);
+int            X509_NAME_print(BIO *bp, const X509_NAME *name, int obase);
+int            X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
+                   unsigned long flags);
 int            X509_print_ex(BIO *bp,X509 *x, unsigned long nmflag, unsigned 
long cflag);
 int            X509_print(BIO *bp,X509 *x);
 int            X509_ocspid_print(BIO *bp,X509 *x);
@@ -1090,40 +1092,40 @@ int             X509_REQ_print_ex(BIO *bp, X509_REQ
 int            X509_REQ_print(BIO *bp,X509_REQ *req);
 #endif
 
-int            X509_NAME_entry_count(X509_NAME *name);
+int            X509_NAME_entry_count(const X509_NAME *name);
 int            X509_NAME_get_text_by_NID(X509_NAME *name, int nid,
                        char *buf,int len);
-int            X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
-                       char *buf,int len);
+int            X509_NAME_get_text_by_OBJ(X509_NAME *name,
+                       const ASN1_OBJECT *obj, char *buf,int len);
 
 /* NOTE: you should be passsing -1, not 0 as lastpos.  The functions that use
  * lastpos, search after that position on. */
 int            X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos);
-int            X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj,
-                       int lastpos);
-X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
+int            X509_NAME_get_index_by_OBJ(X509_NAME *name,
+                       const ASN1_OBJECT *obj, int lastpos);
+X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc);
 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
-int            X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne,
+int            X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne,
                        int loc, int set);
 int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
-                       unsigned char *bytes, int len, int loc, int set);
+                       const unsigned char *bytes, int len, int loc, int set);
 int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
-                       unsigned char *bytes, int len, int loc, int set);
+                       const unsigned char *bytes, int len, int loc, int set);
 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
                const char *field, int type, const unsigned char *bytes, int 
len);
 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
-                       int type,unsigned char *bytes, int len);
+                       int type, const unsigned char *bytes, int len);
 int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
                        const unsigned char *bytes, int len, int loc, int set);
 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
-                       ASN1_OBJECT *obj, int type,const unsigned char *bytes,
-                       int len);
+                       const ASN1_OBJECT *obj, int type,
+                       const unsigned char *bytes, int len);
 int            X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne,
-                       ASN1_OBJECT *obj);
+                       const ASN1_OBJECT *obj);
 int            X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
                        const unsigned char *bytes, int len);
 ASN1_OBJECT *  X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne);
-ASN1_STRING *  X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
+ASN1_STRING *  X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne);
 int            X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne);
 
 int            X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
@@ -1179,13 +1181,14 @@ X509_EXTENSION *X509_EXTENSION_create_by
                        int nid, int crit, ASN1_OCTET_STRING *data);
 X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
                        ASN1_OBJECT *obj,int crit,ASN1_OCTET_STRING *data);
-int            X509_EXTENSION_set_object(X509_EXTENSION *ex,ASN1_OBJECT *obj);
+int            X509_EXTENSION_set_object(X509_EXTENSION *ex,
+                   const ASN1_OBJECT *obj);
 int            X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
 int            X509_EXTENSION_set_data(X509_EXTENSION *ex,
                        ASN1_OCTET_STRING *data);
 ASN1_OBJECT *  X509_EXTENSION_get_object(X509_EXTENSION *ex);
 ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
-int            X509_EXTENSION_get_critical(X509_EXTENSION *ex);
+int            X509_EXTENSION_get_critical(const X509_EXTENSION *ex);
 
 int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
 int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
Index: lib/libcrypto/x509/x509_lu.c
===================================================================
RCS file: /cvs/src/lib/libcrypto/x509/x509_lu.c,v
retrieving revision 1.28
diff -u -p -r1.28 x509_lu.c
--- lib/libcrypto/x509/x509_lu.c        17 Mar 2018 15:43:32 -0000      1.28
+++ lib/libcrypto/x509/x509_lu.c        18 May 2018 14:45:46 -0000
@@ -154,8 +154,8 @@ X509_LOOKUP_by_issuer_serial(X509_LOOKUP
 }
 
 int
-X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type, unsigned char *bytes,
-    int len, X509_OBJECT *ret)
+X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,
+    const unsigned char *bytes, int len, X509_OBJECT *ret)
 {
        if ((ctx->method == NULL) || (ctx->method->get_by_fingerprint == NULL))
                return X509_LU_FAIL;
@@ -163,7 +163,7 @@ X509_LOOKUP_by_fingerprint(X509_LOOKUP *
 }
 
 int
-X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len,
+X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, const char *str, int len,
     X509_OBJECT *ret)
 {
        if ((ctx->method == NULL) || (ctx->method->get_by_alias == NULL))
Index: lib/libcrypto/x509/x509_obj.c
===================================================================
RCS file: /cvs/src/lib/libcrypto/x509/x509_obj.c,v
retrieving revision 1.17
diff -u -p -r1.17 x509_obj.c
--- lib/libcrypto/x509/x509_obj.c       29 Jan 2017 17:49:23 -0000      1.17
+++ lib/libcrypto/x509/x509_obj.c       18 May 2018 14:45:46 -0000
@@ -66,7 +66,7 @@
 #include <openssl/x509.h>
 
 char *
-X509_NAME_oneline(X509_NAME *a, char *buf, int len)
+X509_NAME_oneline(const X509_NAME *a, char *buf, int len)
 {
        X509_NAME_ENTRY *ne;
        int i;
Index: lib/libcrypto/x509/x509_v3.c
===================================================================
RCS file: /cvs/src/lib/libcrypto/x509/x509_v3.c,v
retrieving revision 1.15
diff -u -p -r1.15 x509_v3.c
--- lib/libcrypto/x509/x509_v3.c        13 May 2018 10:25:06 -0000      1.15
+++ lib/libcrypto/x509/x509_v3.c        18 May 2018 14:45:46 -0000
@@ -240,7 +240,7 @@ err:
 }
 
 int
-X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj)
+X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj)
 {
        if ((ex == NULL) || (obj == NULL))
                return (0);
@@ -288,7 +288,7 @@ X509_EXTENSION_get_data(X509_EXTENSION *
 }
 
 int
-X509_EXTENSION_get_critical(X509_EXTENSION *ex)
+X509_EXTENSION_get_critical(const X509_EXTENSION *ex)
 {
        if (ex == NULL)
                return (0);
Index: lib/libcrypto/x509/x509_vfy.h
===================================================================
RCS file: /cvs/src/lib/libcrypto/x509/x509_vfy.h,v
retrieving revision 1.27
diff -u -p -r1.27 x509_vfy.h
--- lib/libcrypto/x509/x509_vfy.h       20 Mar 2018 15:26:22 -0000      1.27
+++ lib/libcrypto/x509/x509_vfy.h       18 May 2018 14:45:46 -0000
@@ -141,9 +141,9 @@ typedef struct x509_lookup_method_st
        int (*get_by_issuer_serial)(X509_LOOKUP *ctx,int type,X509_NAME *name,
                                    ASN1_INTEGER *serial,X509_OBJECT *ret);
        int (*get_by_fingerprint)(X509_LOOKUP *ctx,int type,
-                                 unsigned char *bytes,int len,
+                                 const unsigned char *bytes,int len,
                                  X509_OBJECT *ret);
-       int (*get_by_alias)(X509_LOOKUP *ctx,int type,char *str,int len,
+       int (*get_by_alias)(X509_LOOKUP *ctx,int type, const char *str,int len,
                            X509_OBJECT *ret);
        } X509_LOOKUP_METHOD;
 
@@ -496,8 +496,8 @@ int X509_LOOKUP_by_subject(X509_LOOKUP *
 int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name,
        ASN1_INTEGER *serial, X509_OBJECT *ret);
 int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,
-       unsigned char *bytes, int len, X509_OBJECT *ret);
-int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str,
+       const unsigned char *bytes, int len, X509_OBJECT *ret);
+int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, const char *str,
        int len, X509_OBJECT *ret);
 int X509_LOOKUP_shutdown(X509_LOOKUP *ctx);
 
Index: lib/libcrypto/x509/x509name.c
===================================================================
RCS file: /cvs/src/lib/libcrypto/x509/x509name.c,v
retrieving revision 1.17
diff -u -p -r1.17 x509name.c
--- lib/libcrypto/x509/x509name.c       1 May 2018 19:01:28 -0000       1.17
+++ lib/libcrypto/x509/x509name.c       18 May 2018 14:45:46 -0000
@@ -78,7 +78,7 @@ X509_NAME_get_text_by_NID(X509_NAME *nam
 }
 
 int
-X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf,
+X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, char *buf,
     int len)
 {
        int i;
@@ -99,7 +99,7 @@ X509_NAME_get_text_by_OBJ(X509_NAME *nam
 }
 
 int
-X509_NAME_entry_count(X509_NAME *name)
+X509_NAME_entry_count(const X509_NAME *name)
 {
        if (name == NULL)
                return (0);
@@ -119,7 +119,7 @@ X509_NAME_get_index_by_NID(X509_NAME *na
 
 /* NOTE: you should be passsing -1, not 0 as lastpos */
 int
-X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int lastpos)
+X509_NAME_get_index_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int 
lastpos)
 {
        int n;
        X509_NAME_ENTRY *ne;
@@ -140,7 +140,7 @@ X509_NAME_get_index_by_OBJ(X509_NAME *na
 }
 
 X509_NAME_ENTRY *
-X509_NAME_get_entry(X509_NAME *name, int loc)
+X509_NAME_get_entry(const X509_NAME *name, int loc)
 {
        if (name == NULL || sk_X509_NAME_ENTRY_num(name->entries) <= loc ||
            loc < 0)
@@ -189,7 +189,7 @@ X509_NAME_delete_entry(X509_NAME *name, 
 
 int
 X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
-    unsigned char *bytes, int len, int loc, int set)
+    const unsigned char *bytes, int len, int loc, int set)
 {
        X509_NAME_ENTRY *ne;
        int ret;
@@ -204,7 +204,7 @@ X509_NAME_add_entry_by_OBJ(X509_NAME *na
 
 int
 X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
-    unsigned char *bytes, int len, int loc, int set)
+    const unsigned char *bytes, int len, int loc, int set)
 {
        X509_NAME_ENTRY *ne;
        int ret;
@@ -235,7 +235,8 @@ X509_NAME_add_entry_by_txt(X509_NAME *na
 /* if set is -1, append to previous set, 0 'a new one', and 1,
  * prepend to the guy we are about to stomp on. */
 int
-X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, int loc, int set)
+X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, int loc,
+    int set)
 {
        X509_NAME_ENTRY *new_name = NULL;
        int n, i, inc;
@@ -268,7 +269,8 @@ X509_NAME_add_entry(X509_NAME *name, X50
                        set = sk_X509_NAME_ENTRY_value(sk, loc)->set;
        }
 
-       if ((new_name = X509_NAME_ENTRY_dup(ne)) == NULL)
+       /* OpenSSL has ASN1-generated X509_NAME_ENTRY_dup() without const. */
+       if ((new_name = X509_NAME_ENTRY_dup((X509_NAME_ENTRY *)ne)) == NULL)
                goto err;
        new_name->set = set;
        if (!sk_X509_NAME_ENTRY_insert(sk, new_name, loc)) {
@@ -308,7 +310,7 @@ X509_NAME_ENTRY_create_by_txt(X509_NAME_
 
 X509_NAME_ENTRY *
 X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, int type,
-    unsigned char *bytes, int len)
+    const unsigned char *bytes, int len)
 {
        ASN1_OBJECT *obj;
        X509_NAME_ENTRY *nentry;
@@ -324,8 +326,8 @@ X509_NAME_ENTRY_create_by_NID(X509_NAME_
 }
 
 X509_NAME_ENTRY *
-X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, ASN1_OBJECT *obj, int type,
-    const unsigned char *bytes, int len)
+X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, const ASN1_OBJECT *obj,
+    int type, const unsigned char *bytes, int len)
 {
        X509_NAME_ENTRY *ret;
 
@@ -351,7 +353,7 @@ err:
 }
 
 int
-X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj)
+X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj)
 {
        if ((ne == NULL) || (obj == NULL)) {
                X509error(ERR_R_PASSED_NULL_PARAMETER);
@@ -396,7 +398,7 @@ X509_NAME_ENTRY_get_object(const X509_NA
 }
 
 ASN1_STRING *
-X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne)
+X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne)
 {
        if (ne == NULL)
                return (NULL);

Reply via email to