remm        2005/07/13 04:05:20

  Modified:    http11/src/java/org/apache/coyote/http11
                        Http11AprProcessor.java
  Log:
  - Fix array length if no client certs.
  
  Revision  Changes    Path
  1.24      +22 -25    
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
  
  Index: Http11AprProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Http11AprProcessor.java   12 Jul 2005 17:01:42 -0000      1.23
  +++ Http11AprProcessor.java   13 Jul 2005 11:05:19 -0000      1.24
  @@ -1085,22 +1085,20 @@
                           request.setAttribute
                               ("javax.servlet.request.cipher_suite", sslO);
                       int certLength = SSLSocket.getInfoI(socket, 
SSL.SSL_INFO_CLIENT_CERT_CHAIN);
  -                    X509Certificate[] certs = new 
X509Certificate[certLength];
  -                    for (int i = 0; i < certLength; i++) {
  -                        byte[] data = SSLSocket.getInfoB(socket, 
SSL.SSL_INFO_CLIENT_CERT_CHAIN + i);
  -                        CertificateFactory cf =
  -                            CertificateFactory.getInstance("X.509");
  -                        ByteArrayInputStream stream = new 
ByteArrayInputStream(data);
  -                        certs[i] = (X509Certificate) 
cf.generateCertificate(stream);
  -                    }
  +                    X509Certificate[] certs = null;
                       if (certLength > 0) {
  -                        sslO = certs;
  -                    } else {
  -                        sslO = null;
  +                        certs = new X509Certificate[certLength];
  +                        for (int i = 0; i < certLength; i++) {
  +                            byte[] data = SSLSocket.getInfoB(socket, 
SSL.SSL_INFO_CLIENT_CERT_CHAIN + i);
  +                            CertificateFactory cf =
  +                                CertificateFactory.getInstance("X.509");
  +                            ByteArrayInputStream stream = new 
ByteArrayInputStream(data);
  +                            certs[i] = (X509Certificate) 
cf.generateCertificate(stream);
  +                        }
                       }
  -                    if (sslO != null)
  +                    if (certs != null)
                           request.setAttribute
  -                            ("javax.servlet.request.X509Certificate", sslO);
  +                            ("javax.servlet.request.X509Certificate", certs);
                       sslO = new Integer(SSLSocket.getInfoI(socket, 
SSL.SSL_INFO_CIPHER_USEKEYSIZE));
                       if (sslO != null)
                           request.setAttribute
  @@ -1130,21 +1128,20 @@
                       // FIXME: Verify this is the right thing to do
                       SSLSocket.renegotiate(socket);
                       int certLength = SSLSocket.getInfoI(socket, 
SSL.SSL_INFO_CLIENT_CERT_CHAIN);
  -                    X509Certificate[] certs = new 
X509Certificate[certLength];
  -                    for (int i = 0; i < certLength; i++) {
  -                        byte[] data = SSLSocket.getInfoB(socket, 
SSL.SSL_INFO_CLIENT_CERT_CHAIN + i);
  -                        CertificateFactory cf =
  -                            CertificateFactory.getInstance("X.509");
  -                        ByteArrayInputStream stream = new 
ByteArrayInputStream(data);
  -                        certs[i] = (X509Certificate) 
cf.generateCertificate(stream);
  -                    }
  -                    Object sslO = null;
  +                    X509Certificate[] certs = null;
                       if (certLength > 0) {
  -                        sslO = certs;
  +                        certs = new X509Certificate[certLength];
  +                        for (int i = 0; i < certLength; i++) {
  +                            byte[] data = SSLSocket.getInfoB(socket, 
SSL.SSL_INFO_CLIENT_CERT_CHAIN + i);
  +                            CertificateFactory cf =
  +                                CertificateFactory.getInstance("X.509");
  +                            ByteArrayInputStream stream = new 
ByteArrayInputStream(data);
  +                            certs[i] = (X509Certificate) 
cf.generateCertificate(stream);
  +                        }
                       }
  -                    if (sslO != null)
  +                    if (certs != null)
                           request.setAttribute
  -                            ("javax.servlet.request.X509Certificate", sslO);
  +                            ("javax.servlet.request.X509Certificate", certs);
                   } catch (Exception e) {
                       log.warn("Exception getting SSL Cert", e);
                   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to