提交 b26ec9b1 编写于 作者: J J. Bruce Fields

svcrpc: handle some gssproxy encoding errors

Reported-by: NAndi Kleen <andi@firstfloor.org>
Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
上级 3be34555
...@@ -559,6 +559,8 @@ static int gssx_enc_cred(struct xdr_stream *xdr, ...@@ -559,6 +559,8 @@ static int gssx_enc_cred(struct xdr_stream *xdr,
/* cred->elements */ /* cred->elements */
err = dummy_enc_credel_array(xdr, &cred->elements); err = dummy_enc_credel_array(xdr, &cred->elements);
if (err)
return err;
/* cred->cred_handle_reference */ /* cred->cred_handle_reference */
err = gssx_enc_buffer(xdr, &cred->cred_handle_reference); err = gssx_enc_buffer(xdr, &cred->cred_handle_reference);
...@@ -740,22 +742,20 @@ void gssx_enc_accept_sec_context(struct rpc_rqst *req, ...@@ -740,22 +742,20 @@ void gssx_enc_accept_sec_context(struct rpc_rqst *req,
goto done; goto done;
/* arg->context_handle */ /* arg->context_handle */
if (arg->context_handle) { if (arg->context_handle)
err = gssx_enc_ctx(xdr, arg->context_handle); err = gssx_enc_ctx(xdr, arg->context_handle);
if (err) else
goto done;
} else {
err = gssx_enc_bool(xdr, 0); err = gssx_enc_bool(xdr, 0);
} if (err)
goto done;
/* arg->cred_handle */ /* arg->cred_handle */
if (arg->cred_handle) { if (arg->cred_handle)
err = gssx_enc_cred(xdr, arg->cred_handle); err = gssx_enc_cred(xdr, arg->cred_handle);
if (err) else
goto done;
} else {
err = gssx_enc_bool(xdr, 0); err = gssx_enc_bool(xdr, 0);
} if (err)
goto done;
/* arg->input_token */ /* arg->input_token */
err = gssx_enc_in_token(xdr, &arg->input_token); err = gssx_enc_in_token(xdr, &arg->input_token);
...@@ -763,13 +763,12 @@ void gssx_enc_accept_sec_context(struct rpc_rqst *req, ...@@ -763,13 +763,12 @@ void gssx_enc_accept_sec_context(struct rpc_rqst *req,
goto done; goto done;
/* arg->input_cb */ /* arg->input_cb */
if (arg->input_cb) { if (arg->input_cb)
err = gssx_enc_cb(xdr, arg->input_cb); err = gssx_enc_cb(xdr, arg->input_cb);
if (err) else
goto done;
} else {
err = gssx_enc_bool(xdr, 0); err = gssx_enc_bool(xdr, 0);
} if (err)
goto done;
err = gssx_enc_bool(xdr, arg->ret_deleg_cred); err = gssx_enc_bool(xdr, arg->ret_deleg_cred);
if (err) if (err)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册