* to passive eavesdropers.
*/
if ( gnutls_auth_get_type( state) != state->gnutls_key->auth_info_type) {
- state->gnutls_key->auth_info = gnutls_realloc(
+ state->gnutls_key->auth_info = gnutls_realloc_fast(
state->gnutls_key->auth_info, size);
if (state->gnutls_key->auth_info == NULL) {
gnutls_assert();
/* this does not fail */
state->gnutls_internals.application_data_buffer.data =
- gnutls_realloc(state->gnutls_internals.application_data_buffer.data,
+ gnutls_realloc_fast(state->gnutls_internals.application_data_buffer.data,
state->gnutls_internals.application_data_buffer.size);
break;
/* does not fail */
state->gnutls_internals.handshake_data_buffer.data =
- gnutls_realloc(state->gnutls_internals.handshake_data_buffer.data,
+ gnutls_realloc_fast(state->gnutls_internals.handshake_data_buffer.data,
state->gnutls_internals.handshake_data_buffer.size);
break;
default:
*/
alloc_size = recvdata+state->gnutls_internals.record_recv_buffer.size;
- state->gnutls_internals.record_recv_buffer.data = gnutls_realloc(
+ state->gnutls_internals.record_recv_buffer.data = gnutls_realloc_fast(
state->gnutls_internals.record_recv_buffer.data, alloc_size);
- if ( state->gnutls_internals.record_recv_buffer.data==NULL && alloc_size > 0) {
+ if ( state->gnutls_internals.record_recv_buffer.data==NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
}
}
- buffer->data = gnutls_realloc( buffer->data, data_size);
+ buffer->data = gnutls_realloc_fast( buffer->data, data_size);
buffer->size = data_size;
- if (buffer->data == NULL && data_size > 0) {
+ if (buffer->data == NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
}
if (dsize > 0 && (i==GNUTLS_E_INTERRUPTED || i==GNUTLS_E_AGAIN)) {
gnutls_assert();
- state->gnutls_internals.handshake_recv_buffer.data = gnutls_realloc(
+ state->gnutls_internals.handshake_recv_buffer.data = gnutls_realloc_fast(
state->gnutls_internals.handshake_recv_buffer.data, dsize);
- if (state->gnutls_internals.handshake_recv_buffer.data==NULL && dsize > 0) {
+ if (state->gnutls_internals.handshake_recv_buffer.data==NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
}
int (*_gnutls_is_secure_memory)(const void*);
void* (*gnutls_realloc)(void*, size_t);
+#define gnutls_realloc_fast(x, y) (y==0?x:realloc(x, y))
+
svoid* gnutls_secure_calloc( size_t nmemb, size_t size);
void* gnutls_calloc( size_t nmemb, size_t size);