s4:tls_tstream: fix partial reads, so that the gnutls layer doesn't read the same...
[metze/samba/wip.git] / source4 / lib / tls / tls_tstream.c
index e1137571a54fe1cdccda7a1718b8e67eee1d4f0d..09fe5714ebee359731bb1d0c269e23497f60c60f 100644 (file)
@@ -305,12 +305,17 @@ static ssize_t tstream_tls_pull_function(gnutls_transport_ptr ptr,
        }
 
        if (tlss->pull.iov.iov_base) {
+               uint8_t *b;
                size_t n;
 
+               b = (uint8_t *)tlss->pull.iov.iov_base;
+
                n = MIN(tlss->pull.iov.iov_len, size);
-               memcpy(buf, tlss->pull.iov.iov_base, n);
+               memcpy(buf, b, n);
 
                tlss->pull.iov.iov_len -= n;
+               b += n;
+               tlss->pull.iov.iov_base = (char *)b;
                if (tlss->pull.iov.iov_len == 0) {
                        tlss->pull.iov.iov_base = NULL;
                }