auth/kerberos: Use talloc_stackframe to avoid memory and FD leak of event context
[kai/samba-autobuild/.git] / source4 / auth / kerberos / krb5_init_context.h
index f9e88ceef8e1e8c72b0884247a75cf0a8d20e37b..6c997c5fa563e69077abb88c24ffbb02acf51ed8 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#ifndef _KRB5_INIT_CONTEXT_H_
+#define _KRB5_INIT_CONTEXT_H_
+
 struct smb_krb5_context {
        krb5_context krb5_context;
-       krb5_log_facility *logf;
+       void *pvt_log_data;
+       struct tevent_context *current_ev;
 };
-       
+
 struct tevent_context;
 struct loadparm_context;
 
 krb5_error_code
 smb_krb5_init_context_basic(TALLOC_CTX *tmp_ctx,
-                           struct tevent_context *ev,
                            struct loadparm_context *lp_ctx,
                            krb5_context *_krb5_context);
 
-krb5_error_code smb_krb5_init_context(void *parent_ctx, struct tevent_context *ev,
+krb5_error_code smb_krb5_init_context(void *parent_ctx,
                                      struct loadparm_context *lp_ctx,
                                      struct smb_krb5_context **smb_krb5_context); 
 
+#ifdef SAMBA4_USES_HEIMDAL
 krb5_error_code smb_krb5_send_and_recv_func(krb5_context context,
                                            void *data,
                                            krb5_krbhst_info *hi,
                                            time_t timeout,
                                            const krb5_data *send_buf,
                                            krb5_data *recv_buf);
+krb5_error_code smb_krb5_send_and_recv_func_forced(krb5_context context,
+                                                  void *data, /* struct addrinfo */
+                                                  krb5_krbhst_info *hi,
+                                                  time_t timeout,
+                                                  const krb5_data *send_buf,
+                                                  krb5_data *recv_buf);
+krb5_error_code smb_krb5_context_set_event_ctx(struct smb_krb5_context *smb_krb5_context,
+                                              struct tevent_context *ev,
+                                              struct tevent_context **previous_ev);
+krb5_error_code smb_krb5_context_remove_event_ctx(struct smb_krb5_context *smb_krb5_context,
+                                                 struct tevent_context *previous_ev,
+                                                 struct tevent_context *ev);
+#endif
+
+#endif /* _KRB5_INIT_CONTEXT_H_ */