Sorry, I don't know exactly which version these changes were made in.
I am upgrading from version `d' to version `g'.

I have the following differences in s3_clnt.c.  The problems are that
the cryptlib.h header is in the crypto directory.  Should I put this
on the include path when building the SSL library or would it make
more sense to use the "openssl" copy.  Ie, change,

    `#include "cryptlib.h"' 
to 

    `#include <openssl/cryptlib.h>'

The other thing is that the sizeof operation produces an "unsigned
int" and the variables they are being compared to are ints.  So I
changed this,

+       if (i > sizeof s->session->session_id)

to 

+       if (i > (int)sizeof s->session->session_id)

I am compiling the libraries with GCC "2.7.9-970819 egcs-971225
tornado 2.0" and have all warnings and treat them as errors (-Wall
-Werror).  Are the *nix version compiling with warnings?  Perhaps the
cast should have been on `i', now that I think about it as the
structure size is invariant (and less than MAX_INT).

There are a few other things, but porting between versions is pretty
easy.

Thanks,
Bill Pringlemeir.

*** c:/TEMP/s3_clnt.c.~1.2~     Wed Aug 14 17:09:00 2002
--- c:/TEMP/s3_clnt.c   Wed Aug 14 17:09:00 2002
***************
*** 117,122 ****
--- 117,123 ----
  #include "ssl_locl.h"
+ #include "cryptlib.h"
  
  static SSL_METHOD *ssl3_get_client_method(int ver);
***************
*** 545,550 ****
--- 546,556 ----
                if (i != 0)
                        {
+                       if (i > (int)sizeof s->session->session_id)
+                               {
+                               SSLerr(SSL_F_SSL3_CLIENT_HELLO, SSL_R_INTERNAL_ERROR);
+                               goto err;
+                               }
                        memcpy(p,s->session->session_id,i);
                        p+=i;
                        }
***************
*** 625,630 ****
--- 631,644 ----
  
        /* get the session-id */
        j= *(p++);
+ 
+        if(j > sizeof s->session->session_id)
+                {
+                al=SSL_AD_ILLEGAL_PARAMETER;
+                SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,
+                       SSL_R_SSL3_SESSION_ID_TOO_LONG);
+                goto f_err;
+                }
  
        if ((j != 0) && (j != SSL3_SESSION_ID_SIZE))
                {

-- 
It is reasoning and faith that bind truth .  - Rod Ryker...

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to