summarylogtreecommitdiffstats
path: root/0014-Linux-6.8-Add-function-prototypes-for-krb5.patch
diff options
context:
space:
mode:
Diffstat (limited to '0014-Linux-6.8-Add-function-prototypes-for-krb5.patch')
-rw-r--r--0014-Linux-6.8-Add-function-prototypes-for-krb5.patch187
1 files changed, 187 insertions, 0 deletions
diff --git a/0014-Linux-6.8-Add-function-prototypes-for-krb5.patch b/0014-Linux-6.8-Add-function-prototypes-for-krb5.patch
new file mode 100644
index 000000000000..4630ffb63324
--- /dev/null
+++ b/0014-Linux-6.8-Add-function-prototypes-for-krb5.patch
@@ -0,0 +1,187 @@
+From b1c93f13870e24795b857cb483320871703d00e8 Mon Sep 17 00:00:00 2001
+From: Cheyenne Wills <cwills@sinenomine.net>
+Date: Wed, 7 Feb 2024 15:25:10 -0700
+Subject: [PATCH 14/32] Linux 6.8: Add function prototypes for krb5
+
+The external files for heimdal/krb5 do not provide function prototypes
+in a header file that is used when building files that we use from
+heimdal/krb5 (e.g. crypto.c).
+
+These functions are flagged due to missing prototypes when building
+against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
+-Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
+ 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
+
+When building against a kernel with CONFIG_WERROR=y, the build fails.
+
+We cannot modify the external source files, however there is the local
+OpenAFS include file, krb5_locl.h, that does contain OpenAFS specific
+changes.
+
+Add declarations to krb5_locl.h for the functions defined in the
+heimdal/krb5 source.
+
+There are no functional changes with this commit.
+
+Reviewed-on: https://gerrit.openafs.org/15621
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+(cherry picked from commit 612927dd1dd44bbd08eda790de12b24213583156)
+
+Change-Id: Iaae28186a24c3c5ca4407de9563c8cfed9644921
+Reviewed-on: https://gerrit.openafs.org/15692
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+---
+ src/crypto/rfc3961/krb5_locl.h | 132 +++++++++++++++++++++++++++++++++
+ 1 file changed, 132 insertions(+)
+
+diff --git a/src/crypto/rfc3961/krb5_locl.h b/src/crypto/rfc3961/krb5_locl.h
+index 6e706737c..04292eefa 100644
+--- a/src/crypto/rfc3961/krb5_locl.h
++++ b/src/crypto/rfc3961/krb5_locl.h
+@@ -287,6 +287,138 @@ krb5_error_code krb5_enctype_to_string(krb5_context context,
+ krb5_enctype etype,
+ char **string);
+
++/*
++ * Unused prototypes from heimdal/krb5. These are functions that are not used
++ * outside of their compilation unit at all, but we may need to declare them to
++ * avoid compiler warnings.
++ */
++struct _krb5_key_data;
++struct _krb5_encryption_type;
++/* heimdal/krb5/crypto.c */
++KRB5_LIB_FUNCTION krb5_error_code _krb5_derive_key(krb5_context context,
++ struct _krb5_encryption_type *et,
++ struct _krb5_key_data *key,
++ const void *constant,
++ size_t len);
++KRB5_LIB_FUNCTION krb5_error_code krb5_allow_weak_crypto(krb5_context context,
++ krb5_boolean enable);
++KRB5_LIB_FUNCTION krb5_error_code krb5_checksum_disable(krb5_context context,
++ krb5_cksumtype type);
++KRB5_LIB_FUNCTION krb5_boolean krb5_checksum_is_keyed(krb5_context context,
++ krb5_cksumtype type);
++KRB5_LIB_FUNCTION krb5_error_code krb5_cksumtype_valid(krb5_context context,
++ krb5_cksumtype ctype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_create_checksum_iov(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ krb5_crypto_iov *data,
++ unsigned int num_data,
++ krb5_cksumtype *type);
++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getblocksize(krb5_context context,
++ krb5_crypto crypto,
++ size_t *blocksize);
++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getenctype(krb5_context context,
++ krb5_crypto crypto,
++ krb5_enctype *enctype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getpadsize(krb5_context context,
++ krb5_crypto crypto,
++ size_t *padsize);
++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_length(krb5_context context,
++ krb5_crypto crypto,
++ int type,
++ size_t *len);
++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_length_iov(krb5_context context,
++ krb5_crypto crypto,
++ krb5_crypto_iov *data,
++ unsigned int num_data);
++KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_iov_ivec(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ krb5_crypto_iov *data,
++ unsigned int num_data,
++ void *ivec);
++KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_ivec(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ void *data,
++ size_t len,
++ krb5_data *result,
++ void *ivec);
++KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_iov_ivec(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ krb5_crypto_iov *data,
++ int num_data,
++ void *ivec);
++KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_ivec(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ const void *data,
++ size_t len,
++ krb5_data *result,
++ void *ivec);
++KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_disable(krb5_context context,
++ krb5_enctype enctype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_enable(krb5_context context,
++ krb5_enctype enctype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_to_keytype(krb5_context context,
++ krb5_enctype etype,
++ krb5_keytype *keytype);
++KRB5_LIB_FUNCTION size_t krb5_get_wrapped_length (krb5_context context,
++ krb5_crypto crypto,
++ size_t data_len);
++KRB5_LIB_FUNCTION krb5_error_code krb5_hmac(krb5_context context,
++ krb5_cksumtype cktype,
++ const void *data,
++ size_t len,
++ unsigned usage,
++ krb5_keyblock *key,
++ Checksum *result);
++KRB5_LIB_FUNCTION krb5_boolean krb5_is_enctype_weak(krb5_context context,
++ krb5_enctype enctype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_string_to_enctype(krb5_context context,
++ const char *string,
++ krb5_enctype *etype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_verify_checksum_iov(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ krb5_crypto_iov *data,
++ unsigned int num_data,
++ krb5_cksumtype *type);
++KRB5_LIB_FUNCTION krb5_error_code krb5_generate_random_keyblock(krb5_context context,
++ krb5_enctype type,
++ krb5_keyblock *key);
++KRB5_LIB_FUNCTION krb5_boolean krb5_checksum_is_collision_proof(krb5_context context,
++ krb5_cksumtype type);
++
++KRB5_LIB_FUNCTION krb5_error_code krb5_cksumtype_to_enctype(krb5_context context,
++ krb5_cksumtype ctype,
++ krb5_enctype *etype);
++KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_EncryptedData(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ void *data,
++ size_t len,
++ int kvno,
++ EncryptedData *result);
++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getconfoundersize(krb5_context context,
++ krb5_crypto crypto,
++ size_t *confoundersize);
++
++KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_EncryptedData(krb5_context context,
++ krb5_crypto crypto,
++ unsigned usage,
++ const EncryptedData *e,
++ krb5_data *result);
++/* heimdal/krb5/data.c */
++KRB5_LIB_FUNCTION krb5_error_code krb5_data_realloc(krb5_data *p, int len);
++KRB5_LIB_FUNCTION krb5_error_code krb5_copy_data(krb5_context context,
++ const krb5_data *indata,
++ krb5_data **outdata);
++KRB5_LIB_FUNCTION int krb5_data_cmp(const krb5_data *data1, const krb5_data *data2);
++/* heimdal/krb5/store-int.c */
++KRB5_LIB_FUNCTION krb5_ssize_t _krb5_get_int(void *buffer, unsigned long *value, size_t size);
++
+ #include "crypto.h"
+
+ struct _krb5_checksum_type * _krb5_find_checksum (krb5_cksumtype);
+--
+2.45.1
+