* this LH pad, we only add minimal padding
*/
unsigned int pre_length = data_size + hash_size + *pad;
+ unsigned int length, new_pad;
- *pad = (uint8_t) (blocksize - (pre_length % blocksize)) + *pad;
+ new_pad = (uint8_t) (blocksize - (pre_length % blocksize)) + *pad;
+
+ if (new_pad > 255)
+ new_pad -= blocksize;
+ *pad = new_pad;
- unsigned int length = data_size + hash_size + *pad;
+ length = data_size + hash_size + *pad;
if (_gnutls_version_has_explicit_iv
(session->security_parameters.version))
*/
static int
compressed_to_ciphertext (gnutls_session_t session,
- uint8_t * cipher_data, int cipher_size,
- gnutls_datum_t *compressed,
- size_t target_size,
- content_type_t type,
- record_parameters_st * params)
+ uint8_t * cipher_data, int cipher_size,
+ gnutls_datum_t *compressed,
+ size_t target_size,
+ content_type_t type,
+ record_parameters_st * params)
{
uint8_t * tag_ptr = NULL;
uint8_t pad = target_size - compressed->size;
static int
compressed_to_ciphertext_new (gnutls_session_t session,
- uint8_t * cipher_data, int cipher_size,
- gnutls_datum_t *compressed,
- size_t target_size,
- content_type_t type,
- record_parameters_st * params)
+ uint8_t * cipher_data, int cipher_size,
+ gnutls_datum_t *compressed,
+ size_t target_size,
+ content_type_t type,
+ record_parameters_st * params)
{
uint8_t * tag_ptr = NULL;
uint16_t pad = target_size - compressed->size;
ssize_t max_frag)
{
int ret;
+ ssize_t max_pad;
+ unsigned int fixed_pad;
record_parameters_st *record_params;
ret = _gnutls_epoch_get (session, EPOCH_WRITE_CURRENT, &record_params);
return gnutls_assert_val (GNUTLS_E_INVALID_REQUEST);
}
- ssize_t max_pad;
- unsigned int fixed_pad;
-
if (session->security_parameters.new_record_padding != 0)
{
max_pad = MAX_USER_SEND_SIZE (session);
ret = _gnutls_send_tlen_int (session, GNUTLS_APPLICATION_DATA, -1,
EPOCH_WRITE_CURRENT,
&(((char *) data)[sent]),
- next_fragment_length, MBUFFER_FLUSH,
- cur_range.high);
+ next_fragment_length,
+ cur_range.high,
+ MBUFFER_FLUSH);
if (ret < 0)
{
return ret; /* already gnutls_assert_val'd */
_gnutls_send_tlen_int (gnutls_session_t session, content_type_t type,
gnutls_handshake_description_t htype,
unsigned int epoch_rel, const void *_data,
- size_t data_size, unsigned int mflags, size_t target_length)
+ size_t data_size, size_t target_length, unsigned int mflags)
{
mbuffer_st *bufel;
ssize_t cipher_size;
ssize_t _gnutls_send_tlen_int (gnutls_session_t session, content_type_t type,
gnutls_handshake_description_t htype,
unsigned int epoch_rel, const void *data,
- size_t sizeofdata, unsigned int mflags,
- size_t targetlength);
+ size_t sizeofdata,
+ size_t targetlength,
+ unsigned int mflags);
inline static ssize_t
_gnutls_send_int (gnutls_session_t session, content_type_t type,
unsigned int epoch_rel, const void *_data,
size_t data_size, unsigned int mflags)
{
- return _gnutls_send_tlen_int(session,type,htype,epoch_rel,_data,data_size,mflags,data_size);
+ return _gnutls_send_tlen_int(session,type,htype,epoch_rel,_data,data_size,data_size,mflags);
}
ssize_t _gnutls_recv_int (gnutls_session_t session, content_type_t type,