]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix type mismatches detected by LTO 1331/head
authorGreg Hudson <ghudson@mit.edu>
Tue, 12 Mar 2024 16:45:24 +0000 (12:45 -0400)
committerGreg Hudson <ghudson@mit.edu>
Tue, 19 Mar 2024 14:54:52 +0000 (10:54 -0400)
Building with link-time optimization reveals some type mismatches in
the interface between libkrb5 serialization and the profile library,
as well as in consumers of the SS library.  Fix them.  Reported by Eli
Schwartz.

ticket: 9114

src/kadmin/cli/kadmin.c
src/kadmin/cli/kadmin.h
src/kadmin/cli/keytab.c
src/kadmin/ktutil/ktutil.c
src/kadmin/ktutil/ktutil.h
src/lib/krb5/krb/ser_ctx.c
src/util/profile/prof_init.c
src/util/profile/prof_int.h

index c1256f77086bb2650ec5f168b3ef6cb32ec7b233..a03e03624e2fcc84eb85f05e8e8a676a6edbd31c 100644 (file)
@@ -633,7 +633,7 @@ quit(void)
 }
 
 void
-kadmin_lock(int argc, char *argv[])
+kadmin_lock(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
 
@@ -648,7 +648,7 @@ kadmin_lock(int argc, char *argv[])
 }
 
 void
-kadmin_unlock(int argc, char *argv[])
+kadmin_unlock(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
 
@@ -663,7 +663,7 @@ kadmin_unlock(int argc, char *argv[])
 }
 
 void
-kadmin_delprinc(int argc, char *argv[])
+kadmin_delprinc(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     krb5_principal princ = NULL;
@@ -711,7 +711,7 @@ cleanup:
 }
 
 void
-kadmin_renameprinc(int argc, char *argv[])
+kadmin_renameprinc(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     krb5_principal oprinc = NULL, nprinc = NULL;
@@ -784,7 +784,7 @@ cpw_usage(const char *str)
 }
 
 void
-kadmin_cpw(int argc, char *argv[])
+kadmin_cpw(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     static char newpw[1024];
@@ -1190,7 +1190,7 @@ prepare_dummy_password(char *buf, size_t sz)
 }
 
 void
-kadmin_addprinc(int argc, char *argv[])
+kadmin_addprinc(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_principal_ent_rec princ;
     long mask;
@@ -1313,7 +1313,7 @@ cleanup:
 }
 
 void
-kadmin_modprinc(int argc, char *argv[])
+kadmin_modprinc(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_principal_ent_rec princ, oldprinc;
     krb5_principal kprinc = NULL;
@@ -1386,7 +1386,7 @@ cleanup:
 }
 
 void
-kadmin_getprinc(int argc, char *argv[])
+kadmin_getprinc(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_principal_ent_rec dprinc;
     krb5_principal princ = NULL;
@@ -1522,7 +1522,7 @@ cleanup:
 }
 
 void
-kadmin_getprincs(int argc, char *argv[])
+kadmin_getprincs(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     char *expr, **names;
@@ -1659,7 +1659,7 @@ kadmin_addmodpol_usage(char *func)
 }
 
 void
-kadmin_addpol(int argc, char *argv[])
+kadmin_addpol(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     long mask;
@@ -1680,7 +1680,7 @@ kadmin_addpol(int argc, char *argv[])
 }
 
 void
-kadmin_modpol(int argc, char *argv[])
+kadmin_modpol(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     long mask;
@@ -1701,7 +1701,7 @@ kadmin_modpol(int argc, char *argv[])
 }
 
 void
-kadmin_delpol(int argc, char *argv[])
+kadmin_delpol(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     char reply[5];
@@ -1727,7 +1727,7 @@ kadmin_delpol(int argc, char *argv[])
 }
 
 void
-kadmin_getpol(int argc, char *argv[])
+kadmin_getpol(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     kadm5_policy_ent_rec policy;
@@ -1773,7 +1773,7 @@ kadmin_getpol(int argc, char *argv[])
 }
 
 void
-kadmin_getpols(int argc, char *argv[])
+kadmin_getpols(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     char *expr, **names;
@@ -1795,7 +1795,7 @@ kadmin_getpols(int argc, char *argv[])
 }
 
 void
-kadmin_getprivs(int argc, char *argv[])
+kadmin_getprivs(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     static char *privs[] = {"INQUIRE", "ADD", "MODIFY", "DELETE"};
     krb5_error_code retval;
@@ -1820,7 +1820,7 @@ kadmin_getprivs(int argc, char *argv[])
 }
 
 void
-kadmin_purgekeys(int argc, char *argv[])
+kadmin_purgekeys(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     int keepkvno = -1;
@@ -1872,7 +1872,7 @@ cleanup:
 }
 
 void
-kadmin_getstrings(int argc, char *argv[])
+kadmin_getstrings(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     char *pname, *canon = NULL;
@@ -1918,7 +1918,7 @@ cleanup:
 }
 
 void
-kadmin_setstring(int argc, char *argv[])
+kadmin_setstring(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     char *pname, *canon = NULL, *key, *value;
@@ -1959,7 +1959,7 @@ cleanup:
 }
 
 void
-kadmin_delstring(int argc, char *argv[])
+kadmin_delstring(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     kadm5_ret_t retval;
     char *pname, *canon = NULL, *key;
index 4ab1e9d55192acdba94f4065f679d655c14a01bc..f08eac153de9fe37aa9e382fe2426e601d4bac05 100644 (file)
 extern void kadmin_startup(int argc, char *argv[], char **request_out,
                            char ***args_out);
 extern int quit (void);
-extern void kadmin_lock(int argc, char *argv[]);
-extern void kadmin_unlock(int argc, char *argv[]);
-extern void kadmin_delprinc(int argc, char *argv[]);
-extern void kadmin_renameprinc(int argc, char *argv[]);
-extern void kadmin_cpw(int argc, char *argv[]);
-extern void kadmin_addprinc(int argc, char *argv[]);
-extern void kadmin_modprinc(int argc, char *argv[]);
-extern void kadmin_getprinc(int argc, char *argv[]);
-extern void kadmin_getprincs(int argc, char *argv[]);
-extern void kadmin_addpol(int argc, char *argv[]);
-extern void kadmin_modpol(int argc, char *argv[]);
-extern void kadmin_delpol(int argc, char *argv[]);
-extern void kadmin_getpol(int argc, char *argv[]);
-extern void kadmin_getpols(int argc, char *argv[]);
-extern void kadmin_getprivs(int argc, char *argv[]);
-extern void kadmin_keytab_add(int argc, char *argv[]);
-extern void kadmin_keytab_remove(int argc, char *argv[]);
-extern void kadmin_purgekeys(int argc, char *argv[]);
-extern void kadmin_getstrings(int argc, char *argv[]);
-extern void kadmin_setstring(int argc, char *argv[]);
-extern void kadmin_delstring(int argc, char *argv[]);
+extern void kadmin_lock(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_unlock(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_delprinc(int argc, char *argv[], int sci_idx,
+                            void *info_ptr);
+extern void kadmin_renameprinc(int argc, char *argv[], int sci_idx,
+                               void *info_ptr);
+extern void kadmin_cpw(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_addprinc(int argc, char *argv[], int sci_idx,
+                            void *info_ptr);
+extern void kadmin_modprinc(int argc, char *argv[], int sci_idx,
+                            void *info_ptr);
+extern void kadmin_getprinc(int argc, char *argv[], int sci_idx,
+                            void *info_ptr);
+extern void kadmin_getprincs(int argc, char *argv[], int sci_idx,
+                             void *info_ptr);
+extern void kadmin_addpol(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_modpol(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_delpol(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_getpol(int argc, char *argv[], int sci_idx, void *info_ptr);
+extern void kadmin_getpols(int argc, char *argv[], int sci_idx,
+                           void *info_ptr);
+extern void kadmin_getprivs(int argc, char *argv[], int sci_idx,
+                            void *info_ptr);
+extern void kadmin_keytab_add(int argc, char *argv[], int sci_idx,
+                              void *info_ptr);
+extern void kadmin_keytab_remove(int argc, char *argv[], int sci_idx,
+                                 void *info_ptr);
+extern void kadmin_purgekeys(int argc, char *argv[], int sci_idx,
+                             void *info_ptr);
+extern void kadmin_getstrings(int argc, char *argv[], int sci_idx,
+                              void *info_ptr);
+extern void kadmin_setstring(int argc, char *argv[], int sci_idx,
+                             void *info_ptr);
+extern void kadmin_delstring(int argc, char *argv[], int sci_idx,
+                             void *info_ptr);
 
 #include <kdb.h>
 
index 976c8969e87f60f197d50234e8d6547079c2a9dc..408eac929807e6a3e1123829f464d9f328a4e624 100644 (file)
@@ -111,7 +111,7 @@ process_keytab(krb5_context my_context, char **keytab_str,
 }
 
 void
-kadmin_keytab_add(int argc, char **argv)
+kadmin_keytab_add(int argc, char **argv, int sci_idx, void *info_ptr)
 {
     krb5_keytab keytab = 0;
     char *keytab_str = NULL, **princs;
@@ -203,7 +203,7 @@ kadmin_keytab_add(int argc, char **argv)
 }
 
 void
-kadmin_keytab_remove(int argc, char **argv)
+kadmin_keytab_remove(int argc, char **argv, int sci_idx, void *info_ptr)
 {
     krb5_keytab keytab = 0;
     char *keytab_str = NULL;
index a1c17d154d0d7ab45423c31298a272688aae0e27..61105fcc0befe7faa7e232b5dd4fbb54e3741cf1 100644 (file)
@@ -63,7 +63,7 @@ main(int argc, char *argv[])
 }
 
 void
-ktutil_clear_list(int argc, char *argv[])
+ktutil_clear_list(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
 
@@ -78,7 +78,7 @@ ktutil_clear_list(int argc, char *argv[])
 }
 
 void
-ktutil_read_v5(int argc, char *argv[])
+ktutil_read_v5(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
 
@@ -92,14 +92,14 @@ ktutil_read_v5(int argc, char *argv[])
 }
 
 void
-ktutil_read_v4(int argc, char *argv[])
+ktutil_read_v4(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     fprintf(stderr, _("%s: reading srvtabs is no longer supported\n"),
             argv[0]);
 }
 
 void
-ktutil_write_v5(int argc, char *argv[])
+ktutil_write_v5(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
 
@@ -113,14 +113,14 @@ ktutil_write_v5(int argc, char *argv[])
 }
 
 void
-ktutil_write_v4(int argc, char *argv[])
+ktutil_write_v4(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     fprintf(stderr, _("%s: writing srvtabs is no longer supported\n"),
             argv[0]);
 }
 
 void
-ktutil_add_entry(int argc, char *argv[])
+ktutil_add_entry(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     char *princ = NULL;
@@ -177,7 +177,7 @@ ktutil_add_entry(int argc, char *argv[])
 }
 
 void
-ktutil_delete_entry(int argc, char *argv[])
+ktutil_delete_entry(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
 
@@ -191,7 +191,7 @@ ktutil_delete_entry(int argc, char *argv[])
 }
 
 void
-ktutil_list(int argc, char *argv[])
+ktutil_list(int argc, char *argv[], int sci_idx, void *info_ptr)
 {
     krb5_error_code retval;
     krb5_kt_list lp;
index acaf0239a83a9d18e6ff4ff83e88b51d6e73ce53..acd6a5a3b2125982e4451c7f76cb8c6fb884267c 100644 (file)
@@ -50,18 +50,18 @@ krb5_error_code ktutil_write_keytab (krb5_context,
                                      krb5_kt_list,
                                      char *);
 
-void ktutil_add_entry (int, char *[]);
+void ktutil_add_entry (int, char *[], int, void *);
 
-void ktutil_clear_list (int, char *[]);
+void ktutil_clear_list (int, char *[], int, void *);
 
-void ktutil_read_v5 (int, char *[]);
+void ktutil_read_v5 (int, char *[], int, void *);
 
-void ktutil_read_v4 (int, char *[]);
+void ktutil_read_v4 (int, char *[], int, void *);
 
-void ktutil_write_v5 (int, char *[]);
+void ktutil_write_v5 (int, char *[], int, void *);
 
-void ktutil_write_v4 (int, char *[]);
+void ktutil_write_v4 (int, char *[], int, void *);
 
-void ktutil_delete_entry (int, char *[]);
+void ktutil_delete_entry (int, char *[], int, void *);
 
-void ktutil_list (int, char *[]);
+void ktutil_list (int, char *[], int, void *);
index da3582f9624b572185e318f55eb0c3a113066657..5f266a3dfa2fda5e8108637e81b48364f12239c3 100644 (file)
 #include "k5-int.h"
 #include "int-proto.h"
 
-krb5_error_code profile_ser_size(krb5_context, profile_t, size_t *);
-krb5_error_code profile_ser_externalize(krb5_context, profile_t,
-                                        krb5_octet **, size_t *);
-krb5_error_code profile_ser_internalize(krb5_context, profile_t *,
-                                        krb5_octet **, size_t *);
+errcode_t profile_ser_size(profile_t, size_t *);
+errcode_t profile_ser_externalize(profile_t, krb5_octet **, size_t *);
+errcode_t profile_ser_internalize(profile_t *, krb5_octet **, size_t *);
 
 static krb5_error_code size_oscontext(krb5_os_context os_ctx, size_t *sizep);
 static krb5_error_code externalize_oscontext(krb5_os_context os_ctx,
@@ -83,7 +81,7 @@ k5_size_context(krb5_context context, size_t *sizep)
 
         /* Calculate size required by profile, if appropriate */
         if (!kret && context->profile)
-            kret = profile_ser_size(NULL, context->profile, &required);
+            kret = profile_ser_size(context->profile, &required);
     }
     if (!kret)
         *sizep += required;
@@ -186,7 +184,7 @@ k5_externalize_context(krb5_context context,
 
     /* Finally, handle profile, if appropriate */
     if (context->profile != NULL) {
-        kret = profile_ser_externalize(NULL, context->profile, &bp, &remain);
+        kret = profile_ser_externalize(context->profile, &bp, &remain);
         if (kret)
             return (kret);
     }
@@ -310,7 +308,7 @@ k5_internalize_context(krb5_context *argp,
     }
 
     /* Attempt to read in the profile */
-    kret = profile_ser_internalize(NULL, &context->profile, &bp, &remain);
+    kret = profile_ser_internalize(&context->profile, &bp, &remain);
     if (kret && (kret != EINVAL) && (kret != ENOENT))
         goto cleanup;
 
index 077c852e4983f781c28050156425ac56d0c98ece..c6c48b5949ab1ee24ab6cf00798958a1982dbae1 100644 (file)
@@ -521,8 +521,7 @@ profile_release(profile_t profile)
 /*
  * Here begins the profile serialization functions.
  */
-errcode_t profile_ser_size(const char *unused, profile_t profile,
-                           size_t *sizep)
+errcode_t profile_ser_size(profile_t profile, size_t *sizep)
 {
     size_t      required;
     prf_file_t  pfp;
@@ -543,7 +542,7 @@ static void pack_int32(int32_t oval, unsigned char **bufpp, size_t *remainp)
     *remainp -= sizeof(int32_t);
 }
 
-errcode_t profile_ser_externalize(const char *unused, profile_t profile,
+errcode_t profile_ser_externalize(profile_t profile,
                                   unsigned char **bufpp, size_t *remainp)
 {
     errcode_t           retval;
@@ -559,7 +558,7 @@ errcode_t profile_ser_externalize(const char *unused, profile_t profile,
     retval = EINVAL;
     if (profile) {
         retval = ENOMEM;
-        (void) profile_ser_size(unused, profile, &required);
+        (void) profile_ser_size(profile, &required);
         if (required <= remain) {
             fcount = 0;
             for (pfp = profile->first_file; pfp; pfp = pfp->next)
@@ -597,7 +596,7 @@ static int unpack_int32(int32_t *intp, unsigned char **bufpp,
         return 1;
 }
 
-errcode_t profile_ser_internalize(const char *unused, profile_t *profilep,
+errcode_t profile_ser_internalize(profile_t *profilep,
                                   unsigned char **bufpp, size_t *remainp)
 {
     errcode_t               retval;
index b42fd7b491df2bfa1451910700bed6a0dcc8d7c3..1ee9a8ca1c3433b75ad8ad7055afc00635f7bea2 100644 (file)
@@ -249,13 +249,13 @@ void profile_unlock_global (void);
 
 /* prof_init.c -- included from profile.h */
 errcode_t profile_ser_size
-        (const char *, profile_t, size_t *);
+       (profile_t, size_t *);
 
 errcode_t profile_ser_externalize
-        (const char *, profile_t, unsigned char **, size_t *);
+       (profile_t, unsigned char **, size_t *);
 
 errcode_t profile_ser_internalize
-        (const char *, profile_t *, unsigned char **, size_t *);
+       (profile_t *, unsigned char **, size_t *);
 
 /* prof_get.c */