krb5 commit: Avoid repeating typedef in certauth_plugin.h

Greg Hudson ghudson at mit.edu
Mon Aug 21 16:17:47 EDT 2017


https://github.com/krb5/krb5/commit/da47c655f084b511ea1f6142b6f571b5198915b7
commit da47c655f084b511ea1f6142b6f571b5198915b7
Author: Greg Hudson <ghudson at mit.edu>
Date:   Mon Aug 14 11:47:44 2017 -0400

    Avoid repeating typedef in certauth_plugin.h
    
    Repeating an identical typedef is allowed by C11, but not C99 or C89.
    Use the underlying structure type in certauth_plugin.h so that it can
    safely be included along with kdb.h.
    
    Also constify the name field in the vtable.
    
    ticket: 8561

 src/include/krb5/certauth_plugin.h      |    8 +++++---
 src/plugins/certauth/test/main.c        |    6 ++++--
 src/plugins/preauth/pkinit/pkinit_srv.c |    9 ++++++---
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/include/krb5/certauth_plugin.h b/src/include/krb5/certauth_plugin.h
index f22fc1e..0b3a58b 100644
--- a/src/include/krb5/certauth_plugin.h
+++ b/src/include/krb5/certauth_plugin.h
@@ -44,7 +44,9 @@
 /* Abstract module data type. */
 typedef struct krb5_certauth_moddata_st *krb5_certauth_moddata;
 
-typedef struct _krb5_db_entry_new krb5_db_entry;
+/* A module can optionally include <kdb.h> to inspect the client principal
+ * entry when authorizing a request. */
+struct _krb5_db_entry_new;
 
 /*
  * Optional: Initialize module data.
@@ -80,7 +82,7 @@ typedef krb5_error_code
                               krb5_certauth_moddata moddata,
                               const uint8_t *cert, size_t cert_len,
                               krb5_const_principal princ, const void *opts,
-                              const krb5_db_entry *db_entry,
+                              const struct _krb5_db_entry_new *db_entry,
                               char ***authinds_out);
 
 /*
@@ -93,7 +95,7 @@ typedef void
                                    char **authinds);
 
 typedef struct krb5_certauth_vtable_st {
-    char *name;
+    const char *name;
     krb5_certauth_init_fn init;
     krb5_certauth_fini_fn fini;
     krb5_certauth_authorize_fn authorize;
diff --git a/src/plugins/certauth/test/main.c b/src/plugins/certauth/test/main.c
index 7ef7377..7764123 100644
--- a/src/plugins/certauth/test/main.c
+++ b/src/plugins/certauth/test/main.c
@@ -42,7 +42,8 @@ static krb5_error_code
 test1_authorize(krb5_context context, krb5_certauth_moddata moddata,
                 const uint8_t *cert, size_t cert_len,
                 krb5_const_principal princ, const void *opts,
-                const krb5_db_entry *db_entry, char ***authinds_out)
+                const struct _krb5_db_entry_new *db_entry,
+                char ***authinds_out)
 {
     char **ais = NULL;
 
@@ -136,7 +137,8 @@ static krb5_error_code
 test2_authorize(krb5_context context, krb5_certauth_moddata moddata,
                 const uint8_t *cert, size_t cert_len,
                 krb5_const_principal princ, const void *opts,
-                const krb5_db_entry *db_entry, char ***authinds_out)
+                const struct _krb5_db_entry_new *db_entry,
+                char ***authinds_out)
 {
     krb5_error_code ret;
     char *name = NULL, **ais = NULL;
diff --git a/src/plugins/preauth/pkinit/pkinit_srv.c b/src/plugins/preauth/pkinit/pkinit_srv.c
index a4ce308..5da8892 100644
--- a/src/plugins/preauth/pkinit/pkinit_srv.c
+++ b/src/plugins/preauth/pkinit/pkinit_srv.c
@@ -1449,7 +1449,8 @@ static krb5_error_code
 pkinit_san_authorize(krb5_context context, krb5_certauth_moddata moddata,
                      const uint8_t *cert, size_t cert_len,
                      krb5_const_principal princ, const void *opts,
-                     const krb5_db_entry *db_entry, char ***authinds_out)
+                     const struct _krb5_db_entry_new *db_entry,
+                     char ***authinds_out)
 {
     krb5_error_code ret;
     int valid_san;
@@ -1476,7 +1477,8 @@ static krb5_error_code
 pkinit_eku_authorize(krb5_context context, krb5_certauth_moddata moddata,
                      const uint8_t *cert, size_t cert_len,
                      krb5_const_principal princ, const void *opts,
-                     const krb5_db_entry *db_entry, char ***authinds_out)
+                     const struct _krb5_db_entry_new *db_entry,
+                     char ***authinds_out)
 {
     krb5_error_code ret;
     int valid_eku;
@@ -1535,7 +1537,8 @@ static krb5_error_code
 dbmatch_authorize(krb5_context context, krb5_certauth_moddata moddata,
                   const uint8_t *cert, size_t cert_len,
                   krb5_const_principal princ, const void *opts,
-                  const krb5_db_entry *db_entry, char ***authinds_out)
+                  const struct _krb5_db_entry_new *db_entry,
+                  char ***authinds_out)
 {
     krb5_error_code ret;
     const struct certauth_req_opts *req_opts = opts;


More information about the cvs-krb5 mailing list