Loading ssl/record/d1_pkt.c +6 −6 Original line number Diff line number Diff line Loading @@ -193,8 +193,8 @@ static int dtls1_copy_record(SSL *s, pitem *item) SSL3_BUFFER_release(&s->rlayer.rbuf); s->packet = rdata->packet; s->packet_length = rdata->packet_length; s->rlayer.packet = rdata->packet; s->rlayer.packet_length = rdata->packet_length; memcpy(&s->rlayer.rbuf, &(rdata->rbuf), sizeof(SSL3_BUFFER)); memcpy(&s->rlayer.rrec, &(rdata->rrec), sizeof(SSL3_RECORD)); Loading Loading @@ -226,8 +226,8 @@ dtls1_buffer_record(SSL *s, record_pqueue *queue, unsigned char *priority) return -1; } rdata->packet = s->packet; rdata->packet_length = s->packet_length; rdata->packet = s->rlayer.packet; rdata->packet_length = s->rlayer.packet_length; memcpy(&(rdata->rbuf), &s->rlayer.rbuf, sizeof(SSL3_BUFFER)); memcpy(&(rdata->rrec), &s->rlayer.rrec, sizeof(SSL3_RECORD)); Loading @@ -243,8 +243,8 @@ dtls1_buffer_record(SSL *s, record_pqueue *queue, unsigned char *priority) } #endif s->packet = NULL; s->packet_length = 0; s->rlayer.packet = NULL; s->rlayer.packet_length = 0; memset(&s->rlayer.rbuf, 0, sizeof(SSL3_BUFFER)); memset(&s->rlayer.rrec, 0, sizeof(SSL3_RECORD)); Loading ssl/record/rec_layer.h +10 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,11 @@ typedef struct record_layer_st { SSL3_RECORD rrec; /* goes out from here */ SSL3_RECORD wrec; /* used internally to point at a raw packet */ unsigned char *packet; unsigned int packet_length; } RECORD_LAYER; Loading @@ -161,6 +166,9 @@ typedef struct record_layer_st { #define RECORD_LAYER_set_read_ahead(rl, ra) ((rl)->read_ahead = (ra)) #define RECORD_LAYER_get_read_ahead(rl) ((rl)->read_ahead) #define RECORD_LAYER_setup_comp_buffer(rl) (SSL3_RECORD_setup(&(rl)->rrec)) #define RECORD_LAYER_get_packet(rl) ((rl)->packet) #define RECORD_LAYER_get_packet_length(rl) ((rl)->packet_length) #define RECORD_LAYER_add_packet_length(rl, inc) ((rl)->packet_length += (inc)) void RECORD_LAYER_init(RECORD_LAYER *rl, SSL *s); void RECORD_LAYER_clear(RECORD_LAYER *rl); Loading Loading @@ -193,6 +201,8 @@ void dtls1_reset_seq_numbers(SSL *s, int rw); #define RECORD_LAYER_get_wbuf(rl) (&(rl)->wbuf) #define RECORD_LAYER_get_rrec(rl) (&(rl)->rrec) #define RECORD_LAYER_get_wrec(rl) (&(rl)->wrec) #define RECORD_LAYER_set_packet(rl, p) ((rl)->packet = (p)) #define RECORD_LAYER_reset_packet_length(rl) ((rl)->packet_length = 0) __owur int ssl3_read_n(SSL *s, int n, int max, int extend); __owur int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, Loading ssl/record/s23_pkt.c +8 −7 Original line number Diff line number Diff line Loading @@ -94,19 +94,20 @@ int ssl23_read_bytes(SSL *s, int n) unsigned char *p; int j; if (s->packet_length < (unsigned int)n) { p = s->packet; if (RECORD_LAYER_get_packet_length(&s->rlayer) < (unsigned int)n) { p = RECORD_LAYER_get_packet(&s->rlayer); for (;;) { s->rwstate = SSL_READING; j = BIO_read(s->rbio, (char *)&(p[s->packet_length]), n - s->packet_length); j = BIO_read(s->rbio, (char *)&(p[RECORD_LAYER_get_packet_length(&s->rlayer)]), n - RECORD_LAYER_get_packet_length(&s->rlayer)); if (j <= 0) return (j); s->rwstate = SSL_NOTHING; s->packet_length += j; if (s->packet_length >= (unsigned int)n) return (s->packet_length); RECORD_LAYER_add_packet_length(&s->rlayer, j); if (RECORD_LAYER_get_packet_length(&s->rlayer) >= (unsigned int)n) return (RECORD_LAYER_get_packet_length(&s->rlayer)); } } return (n); Loading ssl/record/s3_pkt.c +10 −10 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ int RECORD_LAYER_write_pending(RECORD_LAYER *rl) int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len) { rl->s->packet_length = len; rl->packet_length = len; if(len != 0) { rl->s->rstate = SSL_ST_READ_HEADER; if (!SSL3_BUFFER_is_initialised(&rl->rbuf)) Loading @@ -195,7 +195,7 @@ int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len) return 0; } rl->s->packet = SSL3_BUFFER_get_buf(&rl->rbuf); rl->packet = SSL3_BUFFER_get_buf(&rl->rbuf); SSL3_BUFFER_set_data(&rl->rbuf, buf, len); return 1; Loading Loading @@ -261,8 +261,8 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) rb->offset = align; } } s->packet = rb->buf + rb->offset; s->packet_length = 0; s->rlayer.packet = rb->buf + rb->offset; s->rlayer.packet_length = 0; /* ... now we can act as if 'extend' was set */ } Loading @@ -280,7 +280,7 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* if there is enough in the buffer from a previous read, take some */ if (left >= n) { s->packet_length += n; s->rlayer.packet_length += n; rb->left = left - n; rb->offset += n; return (n); Loading @@ -288,15 +288,15 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* else we need to read more data */ len = s->packet_length; len = s->rlayer.packet_length; pkt = rb->buf + align; /* * Move any available bytes to front of buffer: 'len' bytes already * pointed to by 'packet', 'left' extra ones at the end */ if (s->packet != pkt) { /* len > 0 */ memmove(pkt, s->packet, len + left); s->packet = pkt; if (s->rlayer.packet != pkt) { /* len > 0 */ memmove(pkt, s->rlayer.packet, len + left); s->rlayer.packet = pkt; rb->offset = len + align; } Loading Loading @@ -354,7 +354,7 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* done reading, now the book-keeping */ rb->offset += n; rb->left = left - n; s->packet_length += n; s->rlayer.packet_length += n; s->rwstate = SSL_NOTHING; return (n); } Loading ssl/record/ssl3_buffer.c +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ int ssl3_setup_read_buffer(SSL *s) b->len = len; } s->packet = &(b->buf[0]); RECORD_LAYER_set_packet(&s->rlayer, &(b->buf[0])); return 1; err: Loading Loading
ssl/record/d1_pkt.c +6 −6 Original line number Diff line number Diff line Loading @@ -193,8 +193,8 @@ static int dtls1_copy_record(SSL *s, pitem *item) SSL3_BUFFER_release(&s->rlayer.rbuf); s->packet = rdata->packet; s->packet_length = rdata->packet_length; s->rlayer.packet = rdata->packet; s->rlayer.packet_length = rdata->packet_length; memcpy(&s->rlayer.rbuf, &(rdata->rbuf), sizeof(SSL3_BUFFER)); memcpy(&s->rlayer.rrec, &(rdata->rrec), sizeof(SSL3_RECORD)); Loading Loading @@ -226,8 +226,8 @@ dtls1_buffer_record(SSL *s, record_pqueue *queue, unsigned char *priority) return -1; } rdata->packet = s->packet; rdata->packet_length = s->packet_length; rdata->packet = s->rlayer.packet; rdata->packet_length = s->rlayer.packet_length; memcpy(&(rdata->rbuf), &s->rlayer.rbuf, sizeof(SSL3_BUFFER)); memcpy(&(rdata->rrec), &s->rlayer.rrec, sizeof(SSL3_RECORD)); Loading @@ -243,8 +243,8 @@ dtls1_buffer_record(SSL *s, record_pqueue *queue, unsigned char *priority) } #endif s->packet = NULL; s->packet_length = 0; s->rlayer.packet = NULL; s->rlayer.packet_length = 0; memset(&s->rlayer.rbuf, 0, sizeof(SSL3_BUFFER)); memset(&s->rlayer.rrec, 0, sizeof(SSL3_RECORD)); Loading
ssl/record/rec_layer.h +10 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,11 @@ typedef struct record_layer_st { SSL3_RECORD rrec; /* goes out from here */ SSL3_RECORD wrec; /* used internally to point at a raw packet */ unsigned char *packet; unsigned int packet_length; } RECORD_LAYER; Loading @@ -161,6 +166,9 @@ typedef struct record_layer_st { #define RECORD_LAYER_set_read_ahead(rl, ra) ((rl)->read_ahead = (ra)) #define RECORD_LAYER_get_read_ahead(rl) ((rl)->read_ahead) #define RECORD_LAYER_setup_comp_buffer(rl) (SSL3_RECORD_setup(&(rl)->rrec)) #define RECORD_LAYER_get_packet(rl) ((rl)->packet) #define RECORD_LAYER_get_packet_length(rl) ((rl)->packet_length) #define RECORD_LAYER_add_packet_length(rl, inc) ((rl)->packet_length += (inc)) void RECORD_LAYER_init(RECORD_LAYER *rl, SSL *s); void RECORD_LAYER_clear(RECORD_LAYER *rl); Loading Loading @@ -193,6 +201,8 @@ void dtls1_reset_seq_numbers(SSL *s, int rw); #define RECORD_LAYER_get_wbuf(rl) (&(rl)->wbuf) #define RECORD_LAYER_get_rrec(rl) (&(rl)->rrec) #define RECORD_LAYER_get_wrec(rl) (&(rl)->wrec) #define RECORD_LAYER_set_packet(rl, p) ((rl)->packet = (p)) #define RECORD_LAYER_reset_packet_length(rl) ((rl)->packet_length = 0) __owur int ssl3_read_n(SSL *s, int n, int max, int extend); __owur int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, Loading
ssl/record/s23_pkt.c +8 −7 Original line number Diff line number Diff line Loading @@ -94,19 +94,20 @@ int ssl23_read_bytes(SSL *s, int n) unsigned char *p; int j; if (s->packet_length < (unsigned int)n) { p = s->packet; if (RECORD_LAYER_get_packet_length(&s->rlayer) < (unsigned int)n) { p = RECORD_LAYER_get_packet(&s->rlayer); for (;;) { s->rwstate = SSL_READING; j = BIO_read(s->rbio, (char *)&(p[s->packet_length]), n - s->packet_length); j = BIO_read(s->rbio, (char *)&(p[RECORD_LAYER_get_packet_length(&s->rlayer)]), n - RECORD_LAYER_get_packet_length(&s->rlayer)); if (j <= 0) return (j); s->rwstate = SSL_NOTHING; s->packet_length += j; if (s->packet_length >= (unsigned int)n) return (s->packet_length); RECORD_LAYER_add_packet_length(&s->rlayer, j); if (RECORD_LAYER_get_packet_length(&s->rlayer) >= (unsigned int)n) return (RECORD_LAYER_get_packet_length(&s->rlayer)); } } return (n); Loading
ssl/record/s3_pkt.c +10 −10 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ int RECORD_LAYER_write_pending(RECORD_LAYER *rl) int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len) { rl->s->packet_length = len; rl->packet_length = len; if(len != 0) { rl->s->rstate = SSL_ST_READ_HEADER; if (!SSL3_BUFFER_is_initialised(&rl->rbuf)) Loading @@ -195,7 +195,7 @@ int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len) return 0; } rl->s->packet = SSL3_BUFFER_get_buf(&rl->rbuf); rl->packet = SSL3_BUFFER_get_buf(&rl->rbuf); SSL3_BUFFER_set_data(&rl->rbuf, buf, len); return 1; Loading Loading @@ -261,8 +261,8 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) rb->offset = align; } } s->packet = rb->buf + rb->offset; s->packet_length = 0; s->rlayer.packet = rb->buf + rb->offset; s->rlayer.packet_length = 0; /* ... now we can act as if 'extend' was set */ } Loading @@ -280,7 +280,7 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* if there is enough in the buffer from a previous read, take some */ if (left >= n) { s->packet_length += n; s->rlayer.packet_length += n; rb->left = left - n; rb->offset += n; return (n); Loading @@ -288,15 +288,15 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* else we need to read more data */ len = s->packet_length; len = s->rlayer.packet_length; pkt = rb->buf + align; /* * Move any available bytes to front of buffer: 'len' bytes already * pointed to by 'packet', 'left' extra ones at the end */ if (s->packet != pkt) { /* len > 0 */ memmove(pkt, s->packet, len + left); s->packet = pkt; if (s->rlayer.packet != pkt) { /* len > 0 */ memmove(pkt, s->rlayer.packet, len + left); s->rlayer.packet = pkt; rb->offset = len + align; } Loading Loading @@ -354,7 +354,7 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) /* done reading, now the book-keeping */ rb->offset += n; rb->left = left - n; s->packet_length += n; s->rlayer.packet_length += n; s->rwstate = SSL_NOTHING; return (n); } Loading
ssl/record/ssl3_buffer.c +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ int ssl3_setup_read_buffer(SSL *s) b->len = len; } s->packet = &(b->buf[0]); RECORD_LAYER_set_packet(&s->rlayer, &(b->buf[0])); return 1; err: Loading