Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b26ec9b1 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

svcrpc: handle some gssproxy encoding errors

parent 3be34555
Loading
Loading
Loading
Loading
+14 −15
Original line number Diff line number Diff line
@@ -559,6 +559,8 @@ static int gssx_enc_cred(struct xdr_stream *xdr,

	/* cred->elements */
	err = dummy_enc_credel_array(xdr, &cred->elements);
	if (err)
		return err;

	/* 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,
		goto done;

	/* arg->context_handle */
	if (arg->context_handle) {
	if (arg->context_handle)
		err = gssx_enc_ctx(xdr, arg->context_handle);
	else
		err = gssx_enc_bool(xdr, 0);
	if (err)
		goto done;
	} else {
		err = gssx_enc_bool(xdr, 0);
	}

	/* arg->cred_handle */
	if (arg->cred_handle) {
	if (arg->cred_handle)
		err = gssx_enc_cred(xdr, arg->cred_handle);
	else
		err = gssx_enc_bool(xdr, 0);
	if (err)
		goto done;
	} else {
		err = gssx_enc_bool(xdr, 0);
	}

	/* 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,
		goto done;

	/* arg->input_cb */
	if (arg->input_cb) {
	if (arg->input_cb)
		err = gssx_enc_cb(xdr, arg->input_cb);
	else
		err = gssx_enc_bool(xdr, 0);
	if (err)
		goto done;
	} else {
		err = gssx_enc_bool(xdr, 0);
	}

	err = gssx_enc_bool(xdr, arg->ret_deleg_cred);
	if (err)