- patch from svn to fixup a couple of get_init_creds_opt problems
This commit is contained in:
parent
40bfa86a85
commit
d36d579aba
41
krb5-1.6.1-get_opt_fixup.patch
Normal file
41
krb5-1.6.1-get_opt_fixup.patch
Normal file
@ -0,0 +1,41 @@
|
||||
Index: src/include/k5-int.h
|
||||
===================================================================
|
||||
--- src/include/k5-int.h (revision 19537)
|
||||
+++ src/include/k5-int.h (revision 19538)
|
||||
@@ -1048,9 +1048,9 @@
|
||||
#define KRB5_GET_INIT_CREDS_OPT_SHADOWED 0x40000000
|
||||
|
||||
#define krb5_gic_opt_is_extended(s) \
|
||||
- (((s)->flags & KRB5_GET_INIT_CREDS_OPT_EXTENDED) ? 1 : 0)
|
||||
+ ((s) && ((s)->flags & KRB5_GET_INIT_CREDS_OPT_EXTENDED) ? 1 : 0)
|
||||
#define krb5_gic_opt_is_shadowed(s) \
|
||||
- (((s)->flags & KRB5_GET_INIT_CREDS_OPT_SHADOWED) ? 1 : 0)
|
||||
+ ((s) && ((s)->flags & KRB5_GET_INIT_CREDS_OPT_SHADOWED) ? 1 : 0)
|
||||
|
||||
|
||||
typedef struct _krb5_gic_opt_private {
|
||||
Index: src/lib/krb5/krb/gic_opt.c
|
||||
===================================================================
|
||||
--- src/lib/krb5/krb/gic_opt.c (revision 19537)
|
||||
+++ src/lib/krb5/krb/gic_opt.c (revision 19538)
|
||||
@@ -206,8 +206,18 @@
|
||||
oe = krb5int_gic_opte_alloc(context);
|
||||
if (NULL == oe)
|
||||
return ENOMEM;
|
||||
- memcpy(oe, opt, sizeof(*opt));
|
||||
- /* Fix these -- overwritten by the copy */
|
||||
+
|
||||
+ if (opt)
|
||||
+ memcpy(oe, opt, sizeof(*opt));
|
||||
+
|
||||
+ /*
|
||||
+ * Fix the flags -- the EXTENDED flag would have been
|
||||
+ * overwritten by the copy if there was one. The
|
||||
+ * SHADOWED flag is necessary to ensure that the
|
||||
+ * krb5_gic_opt_ext structure that was allocated
|
||||
+ * here will be freed by the library because the
|
||||
+ * application is unaware of its existence.
|
||||
+ */
|
||||
oe->flags |= ( KRB5_GET_INIT_CREDS_OPT_EXTENDED |
|
||||
KRB5_GET_INIT_CREDS_OPT_SHADOWED);
|
||||
|
Loading…
Reference in New Issue
Block a user