aboutsummaryrefslogtreecommitdiff
path: root/src/daemon/https/tls/gnutls_buffers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon/https/tls/gnutls_buffers.c')
-rw-r--r--src/daemon/https/tls/gnutls_buffers.c97
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 */
291static ssize_t 291static ssize_t
292MHD__gnutls_read (MHD_gtls_session_t session, void *iptr, 292MHD__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
653inline static int 657inline static int
654MHD__gnutls_buffer_insert (MHD_gtls_buffer * buffer, 658MHD__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
692inline static int 696inline static int
693MHD__gnutls_buffer_get (MHD_gtls_buffer * buffer, 697MHD__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;