Loading ssl/d1_pkt.c +6 −1 Original line number Diff line number Diff line Loading @@ -561,7 +561,12 @@ again: /* read timeout is handled by dtls1_read_bytes */ if (n <= 0) return(n); /* error or non-blocking */ OPENSSL_assert(s->packet_length == DTLS1_RT_HEADER_LENGTH); /* this packet contained a partial record, dump it */ if (s->packet_length != DTLS1_RT_HEADER_LENGTH) { s->packet_length = 0; goto again; } s->rstate=SSL_ST_READ_BODY; Loading ssl/s3_pkt.c +24 −8 Original line number Diff line number Diff line Loading @@ -176,9 +176,10 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* ... now we can act as if 'extend' was set */ } /* extend reads should not span multiple packets for DTLS */ if ( (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) && extend) /* For DTLS/UDP reads should not span multiple packets * because the read operation returns the whole packet * at once (as long as it fits into the buffer). */ if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) { if (left > 0 && n > left) n = left; Loading Loading @@ -207,15 +208,22 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) rb->offset = len + align; } max = rb->len - rb->offset; if (n > max) /* does not happen */ if (n > rb->len - rb->offset) /* does not happen */ { SSLerr(SSL_F_SSL3_READ_N,ERR_R_INTERNAL_ERROR); return -1; } if (!s->read_ahead) /* ignore max parameter */ max = n; else { if (max < n) max = n; if (max > rb->len - rb->offset) max = rb->len - rb->offset; } while (left < n) { Loading Loading @@ -244,6 +252,14 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) return(i); } left+=i; /* reads should *never* span multiple packets for DTLS because * the underlying transport protocol is message oriented as opposed * to byte oriented as in the TLS case. */ if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) { if (n > left) n = left; /* makes the while condition false */ } } /* done reading, now the book-keeping */ Loading Loading
ssl/d1_pkt.c +6 −1 Original line number Diff line number Diff line Loading @@ -561,7 +561,12 @@ again: /* read timeout is handled by dtls1_read_bytes */ if (n <= 0) return(n); /* error or non-blocking */ OPENSSL_assert(s->packet_length == DTLS1_RT_HEADER_LENGTH); /* this packet contained a partial record, dump it */ if (s->packet_length != DTLS1_RT_HEADER_LENGTH) { s->packet_length = 0; goto again; } s->rstate=SSL_ST_READ_BODY; Loading
ssl/s3_pkt.c +24 −8 Original line number Diff line number Diff line Loading @@ -176,9 +176,10 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* ... now we can act as if 'extend' was set */ } /* extend reads should not span multiple packets for DTLS */ if ( (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) && extend) /* For DTLS/UDP reads should not span multiple packets * because the read operation returns the whole packet * at once (as long as it fits into the buffer). */ if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) { if (left > 0 && n > left) n = left; Loading Loading @@ -207,15 +208,22 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) rb->offset = len + align; } max = rb->len - rb->offset; if (n > max) /* does not happen */ if (n > rb->len - rb->offset) /* does not happen */ { SSLerr(SSL_F_SSL3_READ_N,ERR_R_INTERNAL_ERROR); return -1; } if (!s->read_ahead) /* ignore max parameter */ max = n; else { if (max < n) max = n; if (max > rb->len - rb->offset) max = rb->len - rb->offset; } while (left < n) { Loading Loading @@ -244,6 +252,14 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) return(i); } left+=i; /* reads should *never* span multiple packets for DTLS because * the underlying transport protocol is message oriented as opposed * to byte oriented as in the TLS case. */ if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) { if (n > left) n = left; /* makes the while condition false */ } } /* done reading, now the book-keeping */ Loading