]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Use iterator for CRL (Issue #5532)
authorMichael R Sweet <michael.r.sweet@gmail.com>
Mon, 25 Feb 2019 20:08:40 +0000 (15:08 -0500)
committerMichael R Sweet <michael.r.sweet@gmail.com>
Mon, 25 Feb 2019 20:08:40 +0000 (15:08 -0500)
CHANGES.md
cups/tls-gnutls.c

index e814b41652846a1ff18ce3ae248e4d7a6630dd5f..d5c7dcd3fc006ce20031e33e2c54fcc523b0cc6f 100644 (file)
@@ -31,7 +31,7 @@ Changes in CUPS v2.3b8
 - Added a USB quirks rule for Xerox printers (Issue #5523)
 - The scheduler's self-signed certificate did not include all of the alternate
   names for the server when using GNU TLS (Issue #5525)
-- Fixed a compiler warning with newer versions of GCC (Issue #5533)
+- Fixed compiler warnings with newer versions of GCC (Issue #5532, Issue #5533)
 - Localization updates (Issue #5461, Issues #5471, Issue #5481, Issue #5486,
   Issue #5489, Issue #5491, Issue #5492, Issue #5493, Issue #5494, Issue #5495,
   Issue #5497, Issue #5499, Issue #5500, Issue #5501, Issue #5504)
index 4adf4db0b5cb577d6fb84cf0c00114b8e42a64af..0784d58f3b44f6849606c3c493c0d5c1e3bee176 100644 (file)
@@ -398,8 +398,8 @@ httpCredentialsAreValidForName(
 
     if (result)
     {
-      int              i,              /* Looping var */
-                       count;          /* Number of revoked certificates */
+      gnutls_x509_crl_iter_t iter = NULL;
+                                       /* Iterator */
       unsigned char    cserial[1024],  /* Certificate serial number */
                        rserial[1024];  /* Revoked serial number */
       size_t           cserial_size,   /* Size of cert serial number */
@@ -407,22 +407,24 @@ httpCredentialsAreValidForName(
 
       _cupsMutexLock(&tls_mutex);
 
-      count = gnutls_x509_crl_get_crt_count(tls_crl);
-
-      if (count > 0)
+      if (gnutls_x509_crl_get_crt_count(tls_crl) > 0)
       {
         cserial_size = sizeof(cserial);
         gnutls_x509_crt_get_serial(cert, cserial, &cserial_size);
 
-        for (i = 0; i < count; i ++)
-       {
-         rserial_size = sizeof(rserial);
-          if (!gnutls_x509_crl_get_crt_serial(tls_crl, (unsigned)i, rserial, &rserial_size, NULL) && cserial_size == rserial_size && !memcmp(cserial, rserial, rserial_size))
+       rserial_size = sizeof(rserial);
+
+        while (!gnutls_x509_crl_iter_crt_serial(tls_crl, &iter, rserial, &rserial_size, NULL))
+        {
+          if (cserial_size == rserial_size && !memcmp(cserial, rserial, rserial_size))
          {
            result = 0;
            break;
          }
+
+         rserial_size = sizeof(rserial);
        }
+       gnutls_x509_crl_iter_deinit(iter);
       }
 
       _cupsMutexUnlock(&tls_mutex);