diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-08-01 15:39:01 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-08-03 18:48:02 +1000 |
commit | 35b309fa0cac9341f364243b03ebfcc80f74198e (patch) | |
tree | b99fc49ec70be97a41289b3978db367fba63a769 /auth/gensec/gensec.h | |
parent | d3fe48ba48b25f359292ee96dbf5cecc0b0b16a3 (diff) | |
download | samba-35b309fa0cac9341f364243b03ebfcc80f74198e.tar.gz |
gensec: clarify memory ownership for gensec_session_info() and gensec_session_key()
This is slightly less efficient, because we no longer keep a cache on
the gensec structures, but much clearer in terms of memory ownership.
Both gensec_session_info() and gensec_session_key() now take a mem_ctx
and put the result only on that context.
Some duplication of memory in the callers (who were rightly uncertain
about who was the rightful owner of the returned memory) has been
removed to compensate for the internal copy.
Andrew Bartlett
Diffstat (limited to 'auth/gensec/gensec.h')
-rw-r--r-- | auth/gensec/gensec.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/auth/gensec/gensec.h b/auth/gensec/gensec.h index 852618c1af4..38f25137425 100644 --- a/auth/gensec/gensec.h +++ b/auth/gensec/gensec.h @@ -132,8 +132,9 @@ struct gensec_security_ops { size_t *len_processed); NTSTATUS (*packet_full_request)(struct gensec_security *gensec_security, DATA_BLOB blob, size_t *size); - NTSTATUS (*session_key)(struct gensec_security *gensec_security, DATA_BLOB *session_key); - NTSTATUS (*session_info)(struct gensec_security *gensec_security, + NTSTATUS (*session_key)(struct gensec_security *gensec_security, TALLOC_CTX *mem_ctx, + DATA_BLOB *session_key); + NTSTATUS (*session_info)(struct gensec_security *gensec_security, TALLOC_CTX *mem_ctx, struct auth_session_info **session_info); void (*want_feature)(struct gensec_security *gensec_security, uint32_t feature); @@ -233,6 +234,7 @@ const char *gensec_get_target_service(struct gensec_security *gensec_security); NTSTATUS gensec_set_target_hostname(struct gensec_security *gensec_security, const char *hostname); const char *gensec_get_target_hostname(struct gensec_security *gensec_security); NTSTATUS gensec_session_key(struct gensec_security *gensec_security, + TALLOC_CTX *mem_ctx, DATA_BLOB *session_key); NTSTATUS gensec_start_mech_by_oid(struct gensec_security *gensec_security, const char *mech_oid); @@ -269,6 +271,7 @@ NTSTATUS gensec_server_start(TALLOC_CTX *mem_ctx, struct auth4_context *auth_context, struct gensec_security **gensec_security); NTSTATUS gensec_session_info(struct gensec_security *gensec_security, + TALLOC_CTX *mem_ctx, struct auth_session_info **session_info); NTSTATUS gensec_set_local_address(struct gensec_security *gensec_security, |