]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix memory leak in PAC checksum verification
authorArjun <pkillarjun@protonmail.com>
Thu, 10 Oct 2024 19:25:59 +0000 (00:55 +0530)
committerGreg Hudson <ghudson@mit.edu>
Mon, 14 Oct 2024 16:21:08 +0000 (12:21 -0400)
If the server checksum length is invalid, do proper cleanup in
verify_pac_checksums() before returning.

[ghudson@mit.edu: edited commit message]

ticket: 9143 (new)
tags: pullup
target_version: 1.21-next

src/lib/krb5/krb/pac.c

index 5d1fdf1ba0da3b1d57f9e1cbe4d57cd2191338d5..77adcd2726a00e899dce9f55152bb895a9ef6890 100644 (file)
@@ -557,9 +557,11 @@ verify_pac_checksums(krb5_context context, const krb5_pac pac,
         ret = k5_pac_locate_buffer(context, pac, KRB5_PAC_SERVER_CHECKSUM,
                                    &server_checksum);
         if (ret)
-            return ret;
-        if (server_checksum.length < PAC_SIGNATURE_DATA_LENGTH)
-            return KRB5_BAD_MSIZE;
+            goto cleanup;
+        if (server_checksum.length < PAC_SIGNATURE_DATA_LENGTH) {
+            ret = KRB5_BAD_MSIZE;
+            goto cleanup;
+        }
         server_checksum.data += PAC_SIGNATURE_DATA_LENGTH;
         server_checksum.length -= PAC_SIGNATURE_DATA_LENGTH;