Is this the correct list to post bug reports to?

There is a bug in cryptlib.c when using app locks.  It is in both 0.9.6c and 0.9.7 
beta 3.  In
0.9.7 beta3 CRYPTO_NUM_LOCKS is 31.  When requesting an app lock this code gets called:

int CRYPTO_get_new_lockid(char *name)
        {
        char *str;
        int i;

...

        i=sk_push(app_locks,str);
        if (!i)
                OPENSSL_free(str);
        else
                i+=CRYPTO_NUM_LOCKS; /* gap of one :-) */
        return(i);
        }

which returns 32 for the new app lock.  Note that, as the comment says, there is a gap 
of one;
there is no lock numbered 31.  Now when you try to access the name of that new lock, 
32, this code
is called:

const char *CRYPTO_get_lock_name(int type)
        {
        if (type < 0)
                return("dynamic");
        else if (type < CRYPTO_NUM_LOCKS)
                return(lock_names[type]);
        else if (type-CRYPTO_NUM_LOCKS >= sk_num(app_locks))
                return("ERROR");
        else
                return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS));
        }

However since type-CRYPTO_NUM_LOCKS is 1 and that is >= the number of app locks, 1, 
you get
"ERROR" instead of the lock's name.

This can be fixed by not having the gap, or by compensating for the gap.  I don't know 
what the
original intention was in having the gap so I'm not sure what the best way to fix it 
is.

    Tim


__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to