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 /source4/libnet | |
parent | d3fe48ba48b25f359292ee96dbf5cecc0b0b16a3 (diff) | |
download | samba-35b309fa0cac9341f364243b03ebfcc80f74198e.tar.gz samba-35b309fa0cac9341f364243b03ebfcc80f74198e.tar.bz2 samba-35b309fa0cac9341f364243b03ebfcc80f74198e.zip |
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 'source4/libnet')
-rw-r--r-- | source4/libnet/libnet_become_dc.c | 3 | ||||
-rw-r--r-- | source4/libnet/py_net.c | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/source4/libnet/libnet_become_dc.c b/source4/libnet/libnet_become_dc.c index 4d845ca1f0..aabb3b41a8 100644 --- a/source4/libnet/libnet_become_dc.c +++ b/source4/libnet/libnet_become_dc.c @@ -1595,6 +1595,7 @@ static void becomeDC_drsuapi1_connect_recv(struct composite_context *req) s->drsuapi1.drsuapi_handle = s->drsuapi1.pipe->binding_handle; c->status = gensec_session_key(s->drsuapi1.pipe->conn->security_state.generic_state, + s, &s->drsuapi1.gensec_skey); if (!composite_is_ok(c)) return; @@ -2475,6 +2476,7 @@ static void becomeDC_drsuapi2_connect_recv(struct composite_context *req) s->drsuapi2.drsuapi_handle = s->drsuapi2.pipe->binding_handle; c->status = gensec_session_key(s->drsuapi2.pipe->conn->security_state.generic_state, + s, &s->drsuapi2.gensec_skey); if (!composite_is_ok(c)) return; @@ -2535,6 +2537,7 @@ static void becomeDC_drsuapi3_connect_recv(struct composite_context *req) s->drsuapi3.drsuapi_handle = s->drsuapi3.pipe->binding_handle; c->status = gensec_session_key(s->drsuapi3.pipe->conn->security_state.generic_state, + s, &s->drsuapi3.gensec_skey); if (!composite_is_ok(c)) return; diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c index fdf21592ad..90fa1d56d6 100644 --- a/source4/libnet/py_net.c +++ b/source4/libnet/py_net.c @@ -434,6 +434,7 @@ static PyObject *py_net_replicate_init(py_net_Object *self, PyObject *args, PyOb } status = gensec_session_key(s->drs_pipe->pipe->conn->security_state.generic_state, + s, &s->gensec_skey); if (!NT_STATUS_IS_OK(status)) { PyErr_Format(PyExc_RuntimeError, "Unable to get session key from drspipe: %s", |