diff --git a/libtirpc/src/auth_sspi.c b/libtirpc/src/auth_sspi.c index 7664809..b4c6de6 100644 --- a/libtirpc/src/auth_sspi.c +++ b/libtirpc/src/auth_sspi.c @@ -760,7 +760,7 @@ uint32_t sspi_wrap(PCtxtHandle ctx, u_int seq, sspi_buffer_desc *bufin, SecBuff[2].BufferType = SECBUFFER_PADDING; SecBuff[2].pvBuffer = malloc(ContextSizes.cbBlockSize); - maj_stat = EncryptMessage(ctx, ulQop, &BuffDesc, 0); + maj_stat = EncryptMessage(ctx, ulQop, &BuffDesc, seq); if (maj_stat != SEC_E_OK) goto out_free; @@ -781,7 +781,7 @@ out: return maj_stat; } -uint32_t sspi_unwrap(PCtxtHandle ctx, sspi_buffer_desc *bufin, +uint32_t sspi_unwrap(PCtxtHandle ctx, u_int seq, sspi_buffer_desc *bufin, sspi_buffer_desc *bufout, u_int *conf_state, u_int *qop_state) { @@ -804,7 +804,7 @@ uint32_t sspi_unwrap(PCtxtHandle ctx, sspi_buffer_desc *bufin, log_hexdump(0, "cipher:", bufin->value, bufin->length, 0); - maj_stat = DecryptMessage(ctx, &BuffDesc, 0, &ulQop); + maj_stat = DecryptMessage(ctx, &BuffDesc, seq, &ulQop); if (maj_stat != SEC_E_OK) return maj_stat; bufout->length = SecBuff[1].cbBuffer; diff --git a/libtirpc/src/authsspi_prot.c b/libtirpc/src/authsspi_prot.c index ff812bc..96629e9 100644 --- a/libtirpc/src/authsspi_prot.c +++ b/libtirpc/src/authsspi_prot.c @@ -248,7 +248,7 @@ xdr_rpc_sspi_unwrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr, maj_stat = gss_unwrap(&min_stat, ctx, &wrapbuf, &databuf, &conf_state, &qop_state); #else - maj_stat = sspi_unwrap(ctx, &wrapbuf, &databuf, &conf_state, &qop_state); + maj_stat = sspi_unwrap(ctx, seq, &wrapbuf, &databuf, &conf_state, &qop_state); #endif #if 0 gss_release_buffer(&min_stat, &wrapbuf); diff --git a/libtirpc/tirpc/rpc/auth_sspi.h b/libtirpc/tirpc/rpc/auth_sspi.h index 53f06b6..dedf9ad 100644 --- a/libtirpc/tirpc/rpc/auth_sspi.h +++ b/libtirpc/tirpc/rpc/auth_sspi.h @@ -107,7 +107,7 @@ uint32_t sspi_verify_mic(void *ctx, u_int seq, sspi_buffer_desc *bufin, sspi_buffer_desc *bufout, u_int *qop_state); uint32_t sspi_wrap(void *ctx, u_int seq, sspi_buffer_desc *bufin, sspi_buffer_desc *bufout, u_int *conf_state); -uint32_t sspi_unwrap(void *ctx, sspi_buffer_desc *bufin, +uint32_t sspi_unwrap(void *ctx, u_int seq, sspi_buffer_desc *bufin, sspi_buffer_desc *bufout, u_int *conf_state, u_int *qop_state); void sspi_release_buffer(sspi_buffer_desc *buf);