[28648] in CVS-changelog-for-Kerberos-V5

home help back first fref pref prev next nref lref last post

krb5 commit: Avoid infinite loop on duplicate keysalts

daemon@ATHENA.MIT.EDU (Benjamin Kaduk)
Fri Nov 21 16:09:57 2014

Date: Fri, 21 Nov 2014 16:09:52 -0500
From: Benjamin Kaduk <kaduk@mit.edu>
Message-Id: <201411212109.sALL9q5X007866@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu

https://github.com/krb5/krb5/commit/c828e7cb137de3559f026dcc552a52162d9ca5cd
commit c828e7cb137de3559f026dcc552a52162d9ca5cd
Author: Ben Kaduk <kaduk@mit.edu>
Date:   Thu Nov 20 15:44:04 2014 -0500

    Avoid infinite loop on duplicate keysalts
    
    When duplicate suppression was requested, we would enter an
    infinite loop upon encountering a duplicate entry, a bug
    introduced in commit 0918990bf1d8560d74473fc0e41d08d433da1a15
    and thus present in release 1.13.
    
    Rework the conditional to avoid the loop, at the expense of
    additional indentation for some of the code.
    
    Ticket: 8038
    tags: pullup
    target_version: 1.13.1

 src/lib/kadm5/str_conv.c |   21 ++++++++++-----------
 1 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/lib/kadm5/str_conv.c b/src/lib/kadm5/str_conv.c
index 216b580..c28a1e9 100644
--- a/src/lib/kadm5/str_conv.c
+++ b/src/lib/kadm5/str_conv.c
@@ -300,18 +300,17 @@ krb5_string_to_keysalts(const char *string, const char *tupleseps,
             goto cleanup;
 
         /* Ignore duplicate keysalts if caller asks. */
-        if (!dups && krb5_keysalt_is_present(ksalts, nksalts, etype, stype))
-            continue;
-
-        ksalts_new = realloc(ksalts, (nksalts + 1) * sizeof(*ksalts));
-        if (ksalts_new == NULL) {
-            ret = ENOMEM;
-            goto cleanup;
+        if (dups || !krb5_keysalt_is_present(ksalts, nksalts, etype, stype)) {
+            ksalts_new = realloc(ksalts, (nksalts + 1) * sizeof(*ksalts));
+            if (ksalts_new == NULL) {
+                ret = ENOMEM;
+                goto cleanup;
+            }
+            ksalts = ksalts_new;
+            ksalts[nksalts].ks_enctype = etype;
+            ksalts[nksalts].ks_salttype = stype;
+            nksalts++;
         }
-        ksalts = ksalts_new;
-        ksalts[nksalts].ks_enctype = etype;
-        ksalts[nksalts].ks_salttype = stype;
-        nksalts++;
         ksp = strtok_r(NULL, tseps, &tlasts);
     }
     *ksaltp = ksalts;
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5

home help back first fref pref prev next nref lref last post