summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2002-05-23 19:30:29 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2002-05-23 19:30:29 +0000
commit1c4e2e36b7b19afc8bf4396abd1cd088b4b0f046 (patch)
tree2ed98f083303448feaf52aa2141d5b4b876d00c2
parent42708e3281eb70d9e46226db66b259d9f644f7ae (diff)
downloadgnutls_0_4_3.tar.gz
reintroduced realloc_fast() which prevents some malloc(0) situations.gnutls_0_4_3
-rw-r--r--lib/gnutls_auth.c2
-rw-r--r--lib/gnutls_buffers.c16
-rw-r--r--lib/gnutls_mem.h2
-rw-r--r--lib/gnutls_priority.c2
4 files changed, 12 insertions, 10 deletions
diff --git a/lib/gnutls_auth.c b/lib/gnutls_auth.c
index c6d4830c14..6aed393e89 100644
--- a/lib/gnutls_auth.c
+++ b/lib/gnutls_auth.c
@@ -270,7 +270,7 @@ int _gnutls_auth_info_set( GNUTLS_STATE state, CredType type, int size, int allo
* 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();
diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c
index 8ffc26f8cb..bcdec363ce 100644
--- a/lib/gnutls_buffers.c
+++ b/lib/gnutls_buffers.c
@@ -162,7 +162,7 @@ int _gnutls_record_buffer_get(ContentType type, GNUTLS_STATE state, char *data,
/* 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;
@@ -183,7 +183,7 @@ int _gnutls_record_buffer_get(ContentType type, GNUTLS_STATE state, char *data,
/* 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:
@@ -369,9 +369,9 @@ ssize_t _gnutls_io_read_buffered( GNUTLS_STATE state, opaque **iptr, size_t size
*/
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;
}
@@ -484,10 +484,10 @@ static int _gnutls_buffer_insert( gnutls_datum * buffer, const opaque* _data, in
}
- 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;
}
@@ -844,9 +844,9 @@ ssize_t _gnutls_handshake_io_recv_int( GNUTLS_STATE state, ContentType type, Han
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;
}
diff --git a/lib/gnutls_mem.h b/lib/gnutls_mem.h
index aa0ab8e89a..d9cbeb3358 100644
--- a/lib/gnutls_mem.h
+++ b/lib/gnutls_mem.h
@@ -25,6 +25,8 @@ void (*gnutls_free)(void*);
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);
diff --git a/lib/gnutls_priority.c b/lib/gnutls_priority.c
index fc9b402ccd..246ad9be6b 100644
--- a/lib/gnutls_priority.c
+++ b/lib/gnutls_priority.c
@@ -203,10 +203,10 @@ int num=0, i;
* types that were not specified.
**/
int gnutls_cert_type_set_priority( GNUTLS_STATE state, GNUTLS_LIST list) {
+#ifdef HAVE_LIBOPENCDK
GNUTLS_LIST _list = list;
int num=0, i;
-#ifdef HAVE_LIBOPENCDK
while( *_list != 0) {
num++;