diff options
Diffstat (limited to 'src/daemon/https/tls/gnutls_buffers.c')
-rw-r--r-- | src/daemon/https/tls/gnutls_buffers.c | 97 |
1 files changed, 51 insertions, 46 deletions
diff --git a/src/daemon/https/tls/gnutls_buffers.c b/src/daemon/https/tls/gnutls_buffers.c index 0a0f367b..8c6bb750 100644 --- a/src/daemon/https/tls/gnutls_buffers.c +++ b/src/daemon/https/tls/gnutls_buffers.c | |||
@@ -137,19 +137,19 @@ MHD_gnutls_record_buffer_put (content_type_t type, | |||
137 | case GNUTLS_APPLICATION_DATA: | 137 | case GNUTLS_APPLICATION_DATA: |
138 | buf = &session->internals.application_data_buffer; | 138 | buf = &session->internals.application_data_buffer; |
139 | MHD__gnutls_buffers_log ("BUF[REC]: Inserted %d bytes of Data(%d)\n", | 139 | MHD__gnutls_buffers_log ("BUF[REC]: Inserted %d bytes of Data(%d)\n", |
140 | length, type); | 140 | length, type); |
141 | break; | 141 | break; |
142 | 142 | ||
143 | case GNUTLS_HANDSHAKE: | 143 | case GNUTLS_HANDSHAKE: |
144 | buf = &session->internals.handshake_data_buffer; | 144 | buf = &session->internals.handshake_data_buffer; |
145 | MHD__gnutls_buffers_log ("BUF[HSK]: Inserted %d bytes of Data(%d)\n", | 145 | MHD__gnutls_buffers_log ("BUF[HSK]: Inserted %d bytes of Data(%d)\n", |
146 | length, type); | 146 | length, type); |
147 | break; | 147 | break; |
148 | 148 | ||
149 | case GNUTLS_INNER_APPLICATION: | 149 | case GNUTLS_INNER_APPLICATION: |
150 | buf = &session->internals.ia_data_buffer; | 150 | buf = &session->internals.ia_data_buffer; |
151 | MHD__gnutls_buffers_log ("BUF[IA]: Inserted %d bytes of Data(%d)\n", length, | 151 | MHD__gnutls_buffers_log ("BUF[IA]: Inserted %d bytes of Data(%d)\n", |
152 | type); | 152 | length, type); |
153 | break; | 153 | break; |
154 | 154 | ||
155 | default: | 155 | default: |
@@ -223,7 +223,7 @@ MHD_gtls_record_buffer_get (content_type_t type, MHD_gtls_session_t session, | |||
223 | } | 223 | } |
224 | 224 | ||
225 | MHD__gnutls_buffers_log ("BUFFER[REC][AD]: Read %d bytes of Data(%d)\n", | 225 | MHD__gnutls_buffers_log ("BUFFER[REC][AD]: Read %d bytes of Data(%d)\n", |
226 | length, type); | 226 | length, type); |
227 | 227 | ||
228 | session->internals.application_data_buffer.length -= length; | 228 | session->internals.application_data_buffer.length -= length; |
229 | memcpy (data, session->internals.application_data_buffer.data, length); | 229 | memcpy (data, session->internals.application_data_buffer.data, length); |
@@ -246,7 +246,7 @@ MHD_gtls_record_buffer_get (content_type_t type, MHD_gtls_session_t session, | |||
246 | } | 246 | } |
247 | 247 | ||
248 | MHD__gnutls_buffers_log ("BUF[REC][HD]: Read %d bytes of Data(%d)\n", | 248 | MHD__gnutls_buffers_log ("BUF[REC][HD]: Read %d bytes of Data(%d)\n", |
249 | length, type); | 249 | length, type); |
250 | 250 | ||
251 | session->internals.handshake_data_buffer.length -= length; | 251 | session->internals.handshake_data_buffer.length -= length; |
252 | memcpy (data, session->internals.handshake_data_buffer.data, length); | 252 | memcpy (data, session->internals.handshake_data_buffer.data, length); |
@@ -263,7 +263,7 @@ MHD_gtls_record_buffer_get (content_type_t type, MHD_gtls_session_t session, | |||
263 | length = session->internals.ia_data_buffer.length; | 263 | length = session->internals.ia_data_buffer.length; |
264 | 264 | ||
265 | MHD__gnutls_buffers_log ("BUF[REC][IA]: Read %d bytes of Data(%d)\n", | 265 | MHD__gnutls_buffers_log ("BUF[REC][IA]: Read %d bytes of Data(%d)\n", |
266 | length, type); | 266 | length, type); |
267 | 267 | ||
268 | session->internals.ia_data_buffer.length -= length; | 268 | session->internals.ia_data_buffer.length -= length; |
269 | memcpy (data, session->internals.ia_data_buffer.data, length); | 269 | memcpy (data, session->internals.ia_data_buffer.data, length); |
@@ -290,7 +290,7 @@ MHD_gtls_record_buffer_get (content_type_t type, MHD_gtls_session_t session, | |||
290 | */ | 290 | */ |
291 | static ssize_t | 291 | static ssize_t |
292 | MHD__gnutls_read (MHD_gtls_session_t session, void *iptr, | 292 | MHD__gnutls_read (MHD_gtls_session_t session, void *iptr, |
293 | size_t sizeOfPtr, int flags) | 293 | size_t sizeOfPtr, int flags) |
294 | { | 294 | { |
295 | size_t left; | 295 | size_t left; |
296 | ssize_t i = 0; | 296 | ssize_t i = 0; |
@@ -333,16 +333,17 @@ MHD__gnutls_read (MHD_gtls_session_t session, void *iptr, | |||
333 | } | 333 | } |
334 | else | 334 | else |
335 | i = session->internals.MHD__gnutls_pull_func (fd, | 335 | i = session->internals.MHD__gnutls_pull_func (fd, |
336 | &ptr[sizeOfPtr - left], | 336 | &ptr[sizeOfPtr - left], |
337 | left); | 337 | left); |
338 | 338 | ||
339 | if (i < 0) | 339 | if (i < 0) |
340 | { | 340 | { |
341 | int err = session->internals.errnum ? session->internals.errnum | 341 | int err = session->internals.errnum ? session->internals.errnum |
342 | : errno; | 342 | : errno; |
343 | 343 | ||
344 | MHD__gnutls_read_log ("READ: %d returned from %d, errno=%d gerrno=%d\n", | 344 | MHD__gnutls_read_log |
345 | i, fd, errno, session->internals.errnum); | 345 | ("READ: %d returned from %d, errno=%d gerrno=%d\n", i, fd, errno, |
346 | session->internals.errnum); | ||
346 | 347 | ||
347 | if (err == EAGAIN || err == EINTR) | 348 | if (err == EAGAIN || err == EINTR) |
348 | { | 349 | { |
@@ -350,7 +351,7 @@ MHD__gnutls_read (MHD_gtls_session_t session, void *iptr, | |||
350 | { | 351 | { |
351 | 352 | ||
352 | MHD__gnutls_read_log ("READ: returning %d bytes from %d\n", | 353 | MHD__gnutls_read_log ("READ: returning %d bytes from %d\n", |
353 | sizeOfPtr - left, fd); | 354 | sizeOfPtr - left, fd); |
354 | 355 | ||
355 | goto finish; | 356 | goto finish; |
356 | } | 357 | } |
@@ -386,8 +387,8 @@ finish: | |||
386 | char line[128]; | 387 | char line[128]; |
387 | char tmp[16]; | 388 | char tmp[16]; |
388 | 389 | ||
389 | MHD__gnutls_read_log ("READ: read %d bytes from %d\n", (sizeOfPtr - left), | 390 | MHD__gnutls_read_log ("READ: read %d bytes from %d\n", |
390 | fd); | 391 | (sizeOfPtr - left), fd); |
391 | 392 | ||
392 | for (x = 0; x < ((sizeOfPtr - left) / 16) + 1; x++) | 393 | for (x = 0; x < ((sizeOfPtr - left) / 16) + 1; x++) |
393 | { | 394 | { |
@@ -486,7 +487,7 @@ MHD_gtls_io_read_buffered (MHD_gtls_session_t session, opaque ** iptr, | |||
486 | 487 | ||
487 | if (sizeOfPtr > MAX_RECV_SIZE || sizeOfPtr == 0) | 488 | if (sizeOfPtr > MAX_RECV_SIZE || sizeOfPtr == 0) |
488 | { | 489 | { |
489 | MHD_gnutls_assert (); /* internal error */ | 490 | MHD_gnutls_assert (); /* internal error */ |
490 | return GNUTLS_E_INVALID_REQUEST; | 491 | return GNUTLS_E_INVALID_REQUEST; |
491 | } | 492 | } |
492 | 493 | ||
@@ -536,7 +537,7 @@ MHD_gtls_io_read_buffered (MHD_gtls_session_t session, opaque ** iptr, | |||
536 | if ((session->internals.record_recv_buffer.length + recvdata) | 537 | if ((session->internals.record_recv_buffer.length + recvdata) |
537 | > MAX_RECV_SIZE) | 538 | > MAX_RECV_SIZE) |
538 | { | 539 | { |
539 | MHD_gnutls_assert (); /* internal error */ | 540 | MHD_gnutls_assert (); /* internal error */ |
540 | return GNUTLS_E_INVALID_REQUEST; | 541 | return GNUTLS_E_INVALID_REQUEST; |
541 | } | 542 | } |
542 | 543 | ||
@@ -559,7 +560,8 @@ MHD_gtls_io_read_buffered (MHD_gtls_session_t session, opaque ** iptr, | |||
559 | /* READ DATA - but leave RCVLOWAT bytes in the kernel buffer. */ | 560 | /* READ DATA - but leave RCVLOWAT bytes in the kernel buffer. */ |
560 | if (recvdata - recvlowat > 0) | 561 | if (recvdata - recvlowat > 0) |
561 | { | 562 | { |
562 | ret = MHD__gnutls_read (session, &buf[buf_pos], recvdata - recvlowat, 0); | 563 | ret = |
564 | MHD__gnutls_read (session, &buf[buf_pos], recvdata - recvlowat, 0); | ||
563 | 565 | ||
564 | /* return immediately if we got an interrupt or eagain | 566 | /* return immediately if we got an interrupt or eagain |
565 | * error. | 567 | * error. |
@@ -574,8 +576,9 @@ MHD_gtls_io_read_buffered (MHD_gtls_session_t session, opaque ** iptr, | |||
574 | */ | 576 | */ |
575 | if (ret > 0) | 577 | if (ret > 0) |
576 | { | 578 | { |
577 | MHD__gnutls_read_log ("RB: Have %d bytes into buffer. Adding %d bytes.\n", | 579 | MHD__gnutls_read_log |
578 | session->internals.record_recv_buffer.length, ret); | 580 | ("RB: Have %d bytes into buffer. Adding %d bytes.\n", |
581 | session->internals.record_recv_buffer.length, ret); | ||
579 | MHD__gnutls_read_log ("RB: Requested %d bytes\n", sizeOfPtr); | 582 | MHD__gnutls_read_log ("RB: Requested %d bytes\n", sizeOfPtr); |
580 | session->internals.record_recv_buffer.length += ret; | 583 | session->internals.record_recv_buffer.length += ret; |
581 | } | 584 | } |
@@ -598,7 +601,8 @@ MHD_gtls_io_read_buffered (MHD_gtls_session_t session, opaque ** iptr, | |||
598 | 601 | ||
599 | if (ret2 > 0) | 602 | if (ret2 > 0) |
600 | { | 603 | { |
601 | MHD__gnutls_read_log ("RB-PEEK: Read %d bytes in PEEK MODE.\n", ret2); | 604 | MHD__gnutls_read_log ("RB-PEEK: Read %d bytes in PEEK MODE.\n", |
605 | ret2); | ||
602 | MHD__gnutls_read_log | 606 | MHD__gnutls_read_log |
603 | ("RB-PEEK: Have %d bytes into buffer. Adding %d bytes.\nRB: Requested %d bytes\n", | 607 | ("RB-PEEK: Have %d bytes into buffer. Adding %d bytes.\nRB: Requested %d bytes\n", |
604 | session->internals.record_recv_buffer.length, ret2, sizeOfPtr); | 608 | session->internals.record_recv_buffer.length, ret2, sizeOfPtr); |
@@ -652,7 +656,7 @@ MHD_gtls_io_read_buffered (MHD_gtls_session_t session, opaque ** iptr, | |||
652 | 656 | ||
653 | inline static int | 657 | inline static int |
654 | MHD__gnutls_buffer_insert (MHD_gtls_buffer * buffer, | 658 | MHD__gnutls_buffer_insert (MHD_gtls_buffer * buffer, |
655 | const opaque * _data, size_t data_size) | 659 | const opaque * _data, size_t data_size) |
656 | { | 660 | { |
657 | 661 | ||
658 | if ((MEMSUB (_data, buffer->data) >= 0) | 662 | if ((MEMSUB (_data, buffer->data) >= 0) |
@@ -691,7 +695,7 @@ MHD__gnutls_buffer_insert (MHD_gtls_buffer * buffer, | |||
691 | 695 | ||
692 | inline static int | 696 | inline static int |
693 | MHD__gnutls_buffer_get (MHD_gtls_buffer * buffer, | 697 | MHD__gnutls_buffer_get (MHD_gtls_buffer * buffer, |
694 | const opaque ** ptr, size_t * ptr_size) | 698 | const opaque ** ptr, size_t * ptr_size) |
695 | { | 699 | { |
696 | *ptr_size = buffer->length; | 700 | *ptr_size = buffer->length; |
697 | *ptr = buffer->data; | 701 | *ptr = buffer->data; |
@@ -742,7 +746,8 @@ MHD_gtls_io_write_buffered (MHD_gtls_session_t session, | |||
742 | if (iptr == NULL) | 746 | if (iptr == NULL) |
743 | { | 747 | { |
744 | /* checking is handled above */ | 748 | /* checking is handled above */ |
745 | ret = MHD__gnutls_buffer_get (&session->internals.record_send_buffer, &ptr, | 749 | ret = |
750 | MHD__gnutls_buffer_get (&session->internals.record_send_buffer, &ptr, | ||
746 | &n); | 751 | &n); |
747 | if (ret < 0) | 752 | if (ret < 0) |
748 | { | 753 | { |
@@ -750,8 +755,8 @@ MHD_gtls_io_write_buffered (MHD_gtls_session_t session, | |||
750 | return ret; | 755 | return ret; |
751 | } | 756 | } |
752 | 757 | ||
753 | MHD__gnutls_write_log ("WRITE: Restoring old write. (%d bytes to send)\n", | 758 | MHD__gnutls_write_log |
754 | n); | 759 | ("WRITE: Restoring old write. (%d bytes to send)\n", n); |
755 | } | 760 | } |
756 | 761 | ||
757 | MHD__gnutls_write_log ("WRITE: Will write %d bytes to %d.\n", n, fd); | 762 | MHD__gnutls_write_log ("WRITE: Will write %d bytes to %d.\n", n, fd); |
@@ -789,7 +794,8 @@ MHD_gtls_io_write_buffered (MHD_gtls_session_t session, | |||
789 | #endif | 794 | #endif |
790 | } | 795 | } |
791 | else | 796 | else |
792 | i = session->internals.MHD__gnutls_push_func (fd, &ptr[n - left], left); | 797 | i = |
798 | session->internals.MHD__gnutls_push_func (fd, &ptr[n - left], left); | ||
793 | 799 | ||
794 | if (i == -1) | 800 | if (i == -1) |
795 | { | 801 | { |
@@ -801,8 +807,9 @@ MHD_gtls_io_write_buffered (MHD_gtls_session_t session, | |||
801 | session->internals.record_send_buffer_prev_size += n - left; | 807 | session->internals.record_send_buffer_prev_size += n - left; |
802 | 808 | ||
803 | retval = | 809 | retval = |
804 | MHD__gnutls_buffer_insert (&session->internals.record_send_buffer, | 810 | MHD__gnutls_buffer_insert (&session->internals. |
805 | &ptr[n - left], left); | 811 | record_send_buffer, &ptr[n - left], |
812 | left); | ||
806 | if (retval < 0) | 813 | if (retval < 0) |
807 | { | 814 | { |
808 | MHD_gnutls_assert (); | 815 | MHD_gnutls_assert (); |
@@ -881,7 +888,7 @@ MHD_gtls_io_write_flush (MHD_gtls_session_t session) | |||
881 | 888 | ||
882 | ret = MHD_gtls_io_write_buffered (session, NULL, 0); | 889 | ret = MHD_gtls_io_write_buffered (session, NULL, 0); |
883 | MHD__gnutls_write_log ("WRITE FLUSH: %d [buffer: %d]\n", ret, | 890 | MHD__gnutls_write_log ("WRITE FLUSH: %d [buffer: %d]\n", ret, |
884 | session->internals.record_send_buffer.length); | 891 | session->internals.record_send_buffer.length); |
885 | 892 | ||
886 | return ret; | 893 | return ret; |
887 | } | 894 | } |
@@ -935,7 +942,7 @@ MHD_gtls_handshake_io_send_int (MHD_gtls_session_t session, | |||
935 | */ | 942 | */ |
936 | MHD_gnutls_assert (); | 943 | MHD_gnutls_assert (); |
937 | ret = MHD__gnutls_buffer_get (&session->internals.handshake_send_buffer, | 944 | ret = MHD__gnutls_buffer_get (&session->internals.handshake_send_buffer, |
938 | &ptr, &n); | 945 | &ptr, &n); |
939 | if (ret < 0) | 946 | if (ret < 0) |
940 | { | 947 | { |
941 | MHD_gnutls_assert (); | 948 | MHD_gnutls_assert (); |
@@ -957,7 +964,7 @@ MHD_gtls_handshake_io_send_int (MHD_gtls_session_t session, | |||
957 | size_t sum = 0, x, j; | 964 | size_t sum = 0, x, j; |
958 | 965 | ||
959 | MHD__gnutls_write_log ("HWRITE: will write %d bytes to %d.\n", n, | 966 | MHD__gnutls_write_log ("HWRITE: will write %d bytes to %d.\n", n, |
960 | MHD_gnutls_transport_get_ptr (session)); | 967 | MHD_gnutls_transport_get_ptr (session)); |
961 | for (x = 0; x < ((n) / 16) + 1; x++) | 968 | for (x = 0; x < ((n) / 16) + 1; x++) |
962 | { | 969 | { |
963 | if (sum > n) | 970 | if (sum > n) |
@@ -968,7 +975,8 @@ MHD_gtls_handshake_io_send_int (MHD_gtls_session_t session, | |||
968 | { | 975 | { |
969 | if (sum < n) | 976 | if (sum < n) |
970 | { | 977 | { |
971 | MHD__gnutls_write_log ("%.2x ", ((unsigned char *) ptr)[sum++]); | 978 | MHD__gnutls_write_log ("%.2x ", |
979 | ((unsigned char *) ptr)[sum++]); | ||
972 | } | 980 | } |
973 | else | 981 | else |
974 | break; | 982 | break; |
@@ -1009,9 +1017,9 @@ MHD_gtls_handshake_io_send_int (MHD_gtls_session_t session, | |||
1009 | MHD_gnutls_assert (); | 1017 | MHD_gnutls_assert (); |
1010 | 1018 | ||
1011 | retval = | 1019 | retval = |
1012 | MHD__gnutls_buffer_insert (&session->internals. | 1020 | MHD__gnutls_buffer_insert (&session-> |
1013 | handshake_send_buffer, &ptr[n - left], | 1021 | internals.handshake_send_buffer, |
1014 | left); | 1022 | &ptr[n - left], left); |
1015 | if (retval < 0) | 1023 | if (retval < 0) |
1016 | { | 1024 | { |
1017 | MHD_gnutls_assert (); | 1025 | MHD_gnutls_assert (); |
@@ -1112,8 +1120,9 @@ MHD_gtls_handshake_io_recv_int (MHD_gtls_session_t session, | |||
1112 | 1120 | ||
1113 | session->internals.handshake_recv_buffer.data | 1121 | session->internals.handshake_recv_buffer.data |
1114 | = | 1122 | = |
1115 | MHD_gtls_realloc_fast (session->internals. | 1123 | MHD_gtls_realloc_fast (session-> |
1116 | handshake_recv_buffer.data, dsize); | 1124 | internals.handshake_recv_buffer.data, |
1125 | dsize); | ||
1117 | if (session->internals.handshake_recv_buffer.data == NULL) | 1126 | if (session->internals.handshake_recv_buffer.data == NULL) |
1118 | { | 1127 | { |
1119 | MHD_gnutls_assert (); | 1128 | MHD_gnutls_assert (); |
@@ -1164,13 +1173,9 @@ MHD_gtls_handshake_buffer_put (MHD_gtls_session_t session, opaque * data, | |||
1164 | 1173 | ||
1165 | if ((session->internals.max_handshake_data_buffer_size > 0) && ((length | 1174 | if ((session->internals.max_handshake_data_buffer_size > 0) && ((length |
1166 | + | 1175 | + |
1167 | session-> | 1176 | session->internals.handshake_hash_buffer.length) |
1168 | internals. | 1177 | > |
1169 | handshake_hash_buffer. | 1178 | session->internals.max_handshake_data_buffer_size)) |
1170 | length) > | ||
1171 | session-> | ||
1172 | internals. | ||
1173 | max_handshake_data_buffer_size)) | ||
1174 | { | 1179 | { |
1175 | MHD_gnutls_assert (); | 1180 | MHD_gnutls_assert (); |
1176 | return GNUTLS_E_MEMORY_ERROR; | 1181 | return GNUTLS_E_MEMORY_ERROR; |
@@ -1224,7 +1229,7 @@ MHD_gtls_handshake_buffer_get_ptr (MHD_gtls_session_t session, | |||
1224 | *length = session->internals.handshake_hash_buffer.length; | 1229 | *length = session->internals.handshake_hash_buffer.length; |
1225 | 1230 | ||
1226 | MHD__gnutls_buffers_log ("BUF[HSK]: Peeked %d bytes of Data\n", | 1231 | MHD__gnutls_buffers_log ("BUF[HSK]: Peeked %d bytes of Data\n", |
1227 | session->internals.handshake_hash_buffer.length); | 1232 | session->internals.handshake_hash_buffer.length); |
1228 | 1233 | ||
1229 | if (data_ptr != NULL) | 1234 | if (data_ptr != NULL) |
1230 | *data_ptr = session->internals.handshake_hash_buffer.data; | 1235 | *data_ptr = session->internals.handshake_hash_buffer.data; |