]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Go over all OpenSSL return values and make sure we compare them
authorMagnus Hagander <magnus@hagander.net>
Wed, 28 Jan 2009 15:06:51 +0000 (15:06 +0000)
committerMagnus Hagander <magnus@hagander.net>
Wed, 28 Jan 2009 15:06:51 +0000 (15:06 +0000)
to the documented API value. The previous code got it right as
it's implemented, but accepted too much/too little compared to
the API documentation.

Per comment from Zdenek Kotala.

src/backend/libpq/be-secure.c
src/interfaces/libpq/fe-secure.c

index 09019c3f0ff201ba58ee80075bca2ccf25ab38d7..541ab91f39a36b759e982a941e0a32e603712636 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.56.4.3 2007/05/18 01:20:40 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.56.4.4 2009/01/28 15:06:50 mha Exp $
  *
  *       Since the server static private key ($DataDir/server.key)
  *       will normally be stored unencrypted so that the database
@@ -715,7 +715,7 @@ initialize_SSL(void)
                 * Load and verify certificate and private key
                 */
                snprintf(fnbuf, sizeof(fnbuf), "%s/server.crt", DataDir);
-               if (!SSL_CTX_use_certificate_file(SSL_context, fnbuf, SSL_FILETYPE_PEM))
+               if (SSL_CTX_use_certificate_file(SSL_context, fnbuf, SSL_FILETYPE_PEM) != 1)
                        ereport(FATAL,
                                        (errcode(ERRCODE_CONFIG_FILE_ERROR),
                          errmsg("could not load server certificate file \"%s\": %s",
@@ -746,12 +746,12 @@ initialize_SSL(void)
                                         errdetail("File must be owned by the database user and must have no permissions for \"group\" or \"other\".")));
 #endif
 
-               if (!SSL_CTX_use_PrivateKey_file(SSL_context, fnbuf, SSL_FILETYPE_PEM))
+               if (SSL_CTX_use_PrivateKey_file(SSL_context, fnbuf, SSL_FILETYPE_PEM) != 1)
                        ereport(FATAL,
                                        (errmsg("could not load private key file \"%s\": %s",
                                                        fnbuf, SSLerrmessage())));
 
-               if (!SSL_CTX_check_private_key(SSL_context))
+               if (SSL_CTX_check_private_key(SSL_context) != 1)
                        ereport(FATAL,
                                        (errmsg("check of private key failed: %s",
                                                        SSLerrmessage())));
@@ -769,7 +769,7 @@ initialize_SSL(void)
         * Require and check client certificates only if we have a root.crt file.
         */
        snprintf(fnbuf, sizeof(fnbuf), "%s/root.crt", DataDir);
-       if (!SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL))
+       if (SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL) != 1)
        {
                /* Not fatal - we do not require client certificates */
                ereport(LOG,
index c681dccf5c099841bfb59ae1f97c0fa5a69c1260..0ca7de14c98a9cb51e168e82b9c5dbe8b356d951 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-secure.c,v 1.67 2005/01/10 00:37:12 tgl Exp $
+ *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-secure.c,v 1.67.4.1 2009/01/28 15:06:51 mha Exp $
  *
  * NOTES
  *       [ Most of these notes are wrong/obsolete, but perhaps not all ]
@@ -856,7 +856,7 @@ client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
        fclose(fp);
 
        /* verify that the cert and key go together */
-       if (!X509_check_private_key(*x509, *pkey))
+       if (X509_check_private_key(*x509, *pkey) != 1)
        {
                char       *err = SSLerrmessage();
 
@@ -978,7 +978,7 @@ initialize_SSL(PGconn *conn)
                snprintf(fnbuf, sizeof(fnbuf), "%s/%s", homedir, ROOTCERTFILE);
                if (stat(fnbuf, &buf) == 0)
                {
-                       if (!SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL))
+                       if (SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL) != 1)
                        {
                                char       *err = SSLerrmessage();