]> granicus.if.org Git - openssl/commitdiff
Merge in recent changes from 0.9.6-stable.
authorRichard Levitte <levitte@openssl.org>
Thu, 14 Feb 2002 14:15:45 +0000 (14:15 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 14 Feb 2002 14:15:45 +0000 (14:15 +0000)
CHANGES
Configure
Makefile.org
README
TABLE
config
crypto/asn1/a_bitstr.c
crypto/rsa/rsa_oaep.c
ssl/ssl_lib.c
ssl/ssl_sess.c

diff --git a/CHANGES b/CHANGES
index 19d8f7cc61ee98b3ec452641b19b42a2d69f9ee6..ce9e361353ae90842e702736ccc328657a673b5f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,25 @@
 
  Changes between 0.9.6c and 0.9.6d  [XX xxx XXXX]
 
+  *) Add information about CygWin 1.3 and on, and preserve proper
+     configuration for the versions before that.
+     [Corinna Vinschen <vinschen@redhat.com> and Richard Levitte]
+
+  *) Make removal from session cache (SSL_CTX_remove_session()) more robust:
+     check whether we deal with a copy of a session and do not delete from
+     the cache in this case. Problem reported by "Izhar Shoshani Levi"
+     <izhar@checkpoint.com>.
+     [Lutz Jaenicke]
+
+  *) Do not store session data into the internal session cache, if it
+     is never intended to be looked up (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP
+     flag is set). Proposed by Aslam <aslam@funk.com>.
+     [Lutz Jaenicke]
+
+  *) Have ASN1_BIT_STRING_set_bit() really clear a bit when the requested
+     value is 0.
+     [Richard Levitte]
+
   *) Fix a crashbug and a logic bug in hwcrhk_load_pubkey()
      [Toomas Kiisk <vix@cyber.ee> via Richard Levitte]
 
index 467a9290486ae387d67c30163aed8c180fdc8ca5..7b9a8241c2ae22f385526e8fafda9fe185360ca3 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -477,8 +477,9 @@ my %table=(
 # and its library files in util/pl/*)
 "Mingw32", "gcc:-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
 
-# CygWin32
-"CygWin32", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
+# Cygwin
+"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
+"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -m486 -Wall::::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32:cygwin-shared:::.dll",
 
 # Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
 "ultrix-cc","cc:-std1 -O -Olimit 1000 -DL_ENDIAN::(unknown)::::::",
@@ -744,13 +745,17 @@ if ($target eq "LIST") {
        exit 0;
 }
 
+if ($target =~ m/^CygWin32(-.*)$/) {
+       $target = "Cygwin".$1;
+}
+
 print "Configuring for $target\n";
 
 &usage if (!defined($table{$target}));
 
 my $IsWindows=scalar grep /^$target$/,@WinTargets;
 
-$exe_ext=".exe" if ($target eq "CygWin32");
+$exe_ext=".exe" if ($target eq "Cygwin");
 $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
 $prefix=$openssldir if $prefix eq "";
 
index 307fc9e2d1352307ce6af21152be1f1e8269294d..d8a44ecf0fd0d9d872611283847654345b06e5aa 100644 (file)
@@ -236,19 +236,22 @@ clean-shared:
                        done; \
                fi; \
                ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
+               if [ "$(PLATFORM)" = "Cygwin" ]; then \
+                       ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \
+               fi; \
        done
 
 link-shared:
-       @for i in $(SHLIBDIRS); do \
-               prev=lib$$i$(SHLIB_EXT); \
-               if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
-                       tmp="$(SHARED_LIBS_LINK_EXTS)"; \
+       @if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
+               tmp="$(SHARED_LIBS_LINK_EXTS)"; \
+               for i in $(SHLIBDIRS); do \
+                       prev=lib$$i$(SHLIB_EXT); \
                        for j in $${tmp:-x}; do \
                                ( set -x; ln -f -s $$prev lib$$i$$j ); \
                                prev=lib$$i$$j; \
                        done; \
-               fi; \
-       done
+               done; \
+       fi
 
 build-shared: clean-shared do_$(SHLIB_TARGET) link-shared
 
@@ -282,6 +285,15 @@ do_darwin-shared:
        echo "" ; \
        done
 
+do_cygwin-shared:
+       libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+       ( set -x; ${CC}  -shared -o cyg$$i.dll \
+               -Wl,--whole-archive lib$$i.a \
+               -Wl,--out-implib,lib$$i.dll.a \
+               -Wl,--no-whole-archive $$libs ) || exit 1; \
+       libs="$$libs -l$$i"; \
+       done
+
 # This assumes that GNU utilities are *not* used
 do_alpha-osf1-shared:
        if ${DETECT_GNU_LD}; then \
@@ -638,10 +650,18 @@ install: all install_docs
                tmp="$(SHARED_LIBS)"; \
                for i in $${tmp:-x}; \
                do \
-                       if [ -f "$$i" ]; then \
+                       if [ -f "$$i" -o -f "$$i.a" ]; then \
                        (       echo installing $$i; \
-                               cp -f $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
-                               chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
+                               if [ "$(PLATFORM)" != "Cygwin" ]; then \
+                                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
+                                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
+                               else \
+                                       c=`echo $$i | sed 's/^lib/cyg/'`; \
+                                       cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
+                                       chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
+                                       cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
+                                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
+                               fi ); \
                        fi \
                done; \
                (       here="`pwd`"; \
diff --git a/README b/README
index fca2287f22d0562693211dc10a9e2297c3aff430..702b6257d1adfc95b5ca3fc03de61b7169b6e8e9 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 
  OpenSSL 0.9.6d-dev [engine] XX xxx XXXX
 
- Copyright (c) 1998-2001 The OpenSSL Project
+ Copyright (c) 1998-2002 The OpenSSL Project
  Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
  All rights reserved.
 
diff --git a/TABLE b/TABLE
index a78f4a3d3923c5e5911922a93b510efaf637db0d..ab8a49a1a5dd748eb94fe038c332a2485f174c70 100644 (file)
--- a/TABLE
+++ b/TABLE
@@ -69,9 +69,9 @@ $shared_ldflag =
 $shared_extension = 
 $ranlib       = 
 
-*** CygWin32
+*** Cygwin
 $cc           = gcc
-$cflags       = -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall
+$cflags       = -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -m486 -Wall
 $unistd       = 
 $thread_cflag = 
 $lflags       = 
@@ -86,6 +86,29 @@ $rc4_obj      =
 $rmd160_obj   = 
 $rc5_obj      = 
 $dso_scheme   = win32
+$shared_target= cygwin-shared
+$shared_cflag = 
+$shared_ldflag = 
+$shared_extension = .dll
+$ranlib       = 
+
+*** Cygwin-pre1.3
+$cc           = gcc
+$cflags       = -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -m486 -Wall
+$unistd       = 
+$thread_cflag = (unknown)
+$lflags       = 
+$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
+$bn_obj       = 
+$des_obj      = 
+$bf_obj       = 
+$md5_obj      = 
+$sha1_obj     = 
+$cast_obj     = 
+$rc4_obj      = 
+$rmd160_obj   = 
+$rc5_obj      = 
+$dso_scheme   = win32
 $shared_target= 
 $shared_cflag = 
 $shared_ldflag = 
@@ -1060,9 +1083,9 @@ $ranlib       =
 
 *** darwin-ppc-cc
 $cc           = cc
-$cflags       = -O3 -DB_ENDIAN
+$cflags       = -O3 -D_DARWIN -DB_ENDIAN
 $unistd       = 
-$thread_cflag = (unknown)
+$thread_cflag = -D_REENTRANT
 $lflags       = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $bn_obj       = 
@@ -1075,9 +1098,9 @@ $rc4_obj      =
 $rmd160_obj   = 
 $rc5_obj      = 
 $dso_scheme   = 
-$shared_target= 
-$shared_cflag = 
-$shared_ldflag = 
+$shared_target= darwin-shared
+$shared_cflag = -fPIC
+$shared_ldflag = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
 $shared_extension = 
 $ranlib       = 
 
@@ -1236,9 +1259,9 @@ $rc4_obj      = asm/rx86-elf.o
 $rmd160_obj   = asm/rm86-elf.o
 $rc5_obj      = asm/r586-elf.o
 $dso_scheme   = dlfcn
-$shared_target= 
-$shared_cflag = 
-$shared_ldflag = 
+$shared_target= linux-shared
+$shared_cflag = -fPIC
+$shared_ldflag = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 $shared_extension = 
 $ranlib       = 
 
@@ -2369,6 +2392,29 @@ $shared_ldflag =
 $shared_extension = 
 $ranlib       = 
 
+*** linux-s390x
+$cc           = gcc
+$cflags       = -DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall
+$unistd       = 
+$thread_cflag = -D_REENTRANT
+$lflags       = 
+$bn_ops       = SIXTY_FOUR_BIT_LONG
+$bn_obj       = 
+$des_obj      = 
+$bf_obj       = 
+$md5_obj      = 
+$sha1_obj     = 
+$cast_obj     = 
+$rc4_obj      = 
+$rmd160_obj   = 
+$rc5_obj      = 
+$dso_scheme   = 
+$shared_target= linux-shared
+$shared_cflag = -fPIC
+$shared_ldflag = 
+$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
+$ranlib       = 
+
 *** linux-sparcv7
 $cc           = gcc
 $cflags       = -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
@@ -2647,10 +2693,10 @@ $ranlib       =
 
 *** sco5-cc
 $cc           = cc
-$cflags       = 
+$cflags       = -belf
 $unistd       = 
 $thread_cflag = (unknown)
-$lflags       = -lsocket
+$lflags       = -lsocket -lresolv
 $bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $bn_obj       = 
 $des_obj      = 
@@ -2691,6 +2737,29 @@ $shared_ldflag =
 $shared_extension = 
 $ranlib       = 
 
+*** sco5-cc-shared
+$cc           = cc
+$cflags       = -belf
+$unistd       = 
+$thread_cflag = 
+$lflags       = -lsocket -lresolv -lnsl
+$bn_ops       = MD2_CHAR RC4_INDEX DES_PTR DES_RISC1 DES_UNROLL
+$bn_obj       = 
+$des_obj      = 
+$bf_obj       = 
+$md5_obj      = 
+$sha1_obj     = 
+$cast_obj     = 
+$rc4_obj      = 
+$rmd160_obj   = 
+$rc5_obj      = 
+$dso_scheme   = dlfcn
+$shared_target= svr3-shared
+$shared_cflag = -Kpic
+$shared_ldflag = 
+$shared_extension = 
+$ranlib       = 
+
 *** sco5-gcc
 $cc           = gcc
 $cflags       = -O3 -fomit-frame-pointer
@@ -2714,6 +2783,29 @@ $shared_ldflag =
 $shared_extension = 
 $ranlib       = 
 
+*** sco5-gcc-shared
+$cc           = gcc
+$cflags       = -O3 -DFILIO_H -fomit-frame-pointer
+$unistd       = 
+$thread_cflag = 
+$lflags       = -lsocket -lresolv -lnsl
+$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
+$bn_obj       = asm/bn86-elf.o asm/co86-elf.o
+$des_obj      = asm/dx86-elf.o asm/yx86-elf.o
+$bf_obj       = asm/bx86-elf.o
+$md5_obj      = asm/mx86-elf.o
+$sha1_obj     = asm/sx86-elf.o
+$cast_obj     = asm/cx86-elf.o
+$rc4_obj      = asm/rx86-elf.o
+$rmd160_obj   = asm/rm86-elf.o
+$rc5_obj      = asm/r586-elf.o
+$dso_scheme   = dlfcn
+$shared_target= svr3-shared
+$shared_cflag = -fPIC
+$shared_ldflag = 
+$shared_extension = 
+$ranlib       = 
+
 *** solaris-sparc-sc3
 $cc           = cc
 $cflags       = -fast -O -Xa -DB_ENDIAN
diff --git a/config b/config
index 6ff1c39e272f0d1d4ba4b4df388d15222e147ff1..8d61cfac5559e79087ee4323512a8708b6ba53f5 100755 (executable)
--- a/config
+++ b/config
@@ -299,7 +299,15 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
        ;;
 
     CYGWIN*)
-       echo "${MACHINE}-whatever-cygwin32"; exit 0
+       case "$RELEASE" in
+           [bB]*|1.0|1.[12].*)
+               echo "${MACHINE}-whatever-cygwin_pre1.3"
+               ;;
+           *)
+               echo "${MACHINE}-whatever-cygwin"
+               ;;
+       esac
+       exit 0
        ;;
 
 esac
@@ -581,8 +589,8 @@ EOF
   # *-aix) OUT="aix-$CC" ;;
   # *-dgux) OUT="dgux" ;;
   mips-sony-newsos4) OUT="newsos4-gcc" ;;
-  *-*-cygwin32) OUT="CygWin32"
-               options="$options no-threads no-asm" ;;
+  *-*-cygwin_pre1.3) OUT="Cygwin-pre1.3" ;;
+  *-*-cygwin) OUT="Cygwin" ;;
   *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
 esac
 
index 7013a407ad68385d0f82c27ec6d4aed864f5d4ea..cdedb29e4f50e27f5448c7676f58060ecae450d7 100644 (file)
@@ -224,6 +224,7 @@ int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value)
        w=n/8;
        v=1<<(7-(n&0x07));
        iv= ~v;
+       if (!value) v=0;
 
        a->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07); /* clear, set on write */
 
index 4f0bbab3860420177afd49b56cb57bbeae2b7eb0..742b3a1c9428473061677904c34c93ebd1890d43 100644 (file)
@@ -178,8 +178,10 @@ int MGF1(unsigned char *mask, long len, unsigned char *seed, long seedlen)
 
        for (i = 0; outlen < len; i++)
                {
-               cnt[0] = (i >> 24) & 255, cnt[1] = (i >> 16) & 255,
-                       cnt[2] = (i >> 8) & 255, cnt[3] = i & 255;
+               cnt[0] = (unsigned char)((i >> 24) & 255);
+               cnt[1] = (unsigned char)((i >> 16) & 255);
+               cnt[2] = (unsigned char)((i >> 8)) & 255;
+               cnt[3] = (unsigned char)(i & 255);
                SHA1_Init(&c);
                SHA1_Update(&c, seed, seedlen);
                SHA1_Update(&c, cnt, 4);
index 2006a5a1eba258339610561ce62ab2a6623f95c0..24cec2afe51c1c1aceaa354d6de90acd3d6176bb 100644 (file)
@@ -1472,9 +1472,10 @@ void ssl_update_cache(SSL *s,int mode)
         * and it would be rather hard to do anyway :-) */
        if (s->session->session_id_length == 0) return;
 
-       if ((s->ctx->session_cache_mode & mode)
-               && (!s->hit)
-               && SSL_CTX_add_session(s->ctx,s->session)
+       i=s->ctx->session_cache_mode;
+       if ((i & mode) && (!s->hit)
+               && ((i & SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)
+                   || SSL_CTX_add_session(s->ctx,s->session))
                && (s->ctx->new_session_cb != NULL))
                {
                CRYPTO_add(&s->session->references,1,CRYPTO_LOCK_SSL_SESSION);
@@ -1483,7 +1484,6 @@ void ssl_update_cache(SSL *s,int mode)
                }
 
        /* auto flush every 255 connections */
-       i=s->ctx->session_cache_mode;
        if ((!(i & SSL_SESS_CACHE_NO_AUTO_CLEAR)) &&
                ((i & mode) == mode))
                {
index 7064262def86cd38857b8a7e2d185435ddf9d5f3..8476f41707e18eed7138735994f024999938d750 100644 (file)
@@ -423,10 +423,10 @@ static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *c, int lck)
        if ((c != NULL) && (c->session_id_length != 0))
                {
                if(lck) CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
-               r=(SSL_SESSION *)lh_delete(ctx->sessions,c);
-               if (r != NULL)
+               if ((r = (SSL_SESSION *)lh_retrieve(ctx->sessions,c)) == c)
                        {
                        ret=1;
+                       r=(SSL_SESSION *)lh_delete(ctx->sessions,c);
                        SSL_SESSION_list_remove(ctx,c);
                        }