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

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

krb5 commit [krb5-1.13]: Avoid infinite loop on duplicate keysalts

daemon@ATHENA.MIT.EDU (Tom Yu)
Tue Dec 16 14:27:20 2014

Date: Tue, 16 Dec 2014 14:25:54 -0500
From: Tom Yu <tlyu@mit.edu>
Message-Id: <201412161925.sBGJPseS020672@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/d1a1b7c83ac568cbfec230bbdb3a9506ea27d1ca
commit d1a1b7c83ac568cbfec230bbdb3a9506ea27d1ca
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.
    
    (cherry picked from commit c828e7cb137de3559f026dcc552a52162d9ca5cd)
    
    ticket: 8038
    version_fixed: 1.13.1
    status: resolved

 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