Make sure aep_close_connection() is declared and has a prototype that's
[openssl.git] / crypto / stack / stack.c
index 2eb531fd0d4f287e016af363ad45127d60c684ef..2496f28a8c01b0faaf36d8355495ce249aa2855c 100644 (file)
@@ -106,12 +106,14 @@ STACK *sk_dup(STACK *sk)
        ret->comp=sk->comp;
        return(ret);
 err:
+       if(ret)
+               sk_free(ret);
        return(NULL);
        }
 
 STACK *sk_new_null(void)
        {
-       return sk_new((int (*)(const char * const *, const char * const *))NULL);
+       return sk_new((int (*)(const char * const *, const char * const *))0);
        }
 
 STACK *sk_new(int (*c)(const char * const *, const char * const *))
@@ -120,9 +122,9 @@ STACK *sk_new(int (*c)(const char * const *, const char * const *))
        int i;
 
        if ((ret=(STACK *)OPENSSL_malloc(sizeof(STACK))) == NULL)
-               goto err0;
+               goto err;
        if ((ret->data=(char **)OPENSSL_malloc(sizeof(char *)*MIN_NODES)) == NULL)
-               goto err1;
+               goto err;
        for (i=0; i<MIN_NODES; i++)
                ret->data[i]=NULL;
        ret->comp=c;
@@ -130,9 +132,9 @@ STACK *sk_new(int (*c)(const char * const *, const char * const *))
        ret->num=0;
        ret->sorted=0;
        return(ret);
-err1:
-       OPENSSL_free(ret);
-err0:
+err:
+       if(ret)
+               OPENSSL_free(ret);
        return(NULL);
        }
 
@@ -316,7 +318,7 @@ char *sk_set(STACK *st, int i, char *value)
 
 void sk_sort(STACK *st)
        {
-       if (!st->sorted)
+       if (st && !st->sorted)
                {
                int (*comp_func)(const void *,const void *);