]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
claims.idl: Be more lenient in our expectations for the compression of claims
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Thu, 24 Aug 2023 23:04:32 +0000 (11:04 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 14 Sep 2023 21:35:29 +0000 (21:35 +0000)
384 bytes is not a strict threshold below which claims are never to be
compressed. Windows has been known to compress claims a mere 368 bytes
in size.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
librpc/idl/claims.idl
librpc/ndr/ndr_claims.c
python/samba/tests/krb5/raw_testcase.py

index 27a46c6b64912f295ae1ed9c872ce256230f3d51..618a620ef87f23280b350517611745c2162e9a2f 100644 (file)
@@ -27,7 +27,8 @@ interface claims
 #define wchar_t uint16
 #define CLAIM_ID [string, charset(UTF16)] wchar_t *
 
-       const int CLAIM_MINIMUM_BYTES_TO_COMPRESS = 384;
+       const int CLAIM_LOWER_COMPRESSION_THRESHOLD = 368;
+       const int CLAIM_UPPER_COMPRESSION_THRESHOLD = 384;
 
        typedef enum {
                CLAIM_TYPE_INT64 = 1,
index c144d8985fae220eeb8725d0dd84592bb06d0ca4..e087679b9677e9613f3be3732d3605a807766e0b 100644 (file)
@@ -26,7 +26,7 @@ enum ndr_compression_alg ndr_claims_compression_alg(enum CLAIMS_COMPRESSION_FORM
 
 enum CLAIMS_COMPRESSION_FORMAT ndr_claims_actual_wire_compression_alg(enum CLAIMS_COMPRESSION_FORMAT specified_compression,
                                                                      size_t uncompressed_claims_size) {
-       if (uncompressed_claims_size < CLAIM_MINIMUM_BYTES_TO_COMPRESS) {
+       if (uncompressed_claims_size < CLAIM_UPPER_COMPRESSION_THRESHOLD) {
                return CLAIMS_COMPRESSION_FORMAT_NONE;
        }
 
index 536803e7a1fb3507cbb1549a27a49ff837d8f62d..a8267f6701936cae7bd76a314735b4344598f4e3 100644 (file)
@@ -4585,13 +4585,15 @@ class RawKerberosTest(TestCase):
                 uncompressed_size = client_claims.uncompressed_claims_set_size
                 compression_format = client_claims.compression_format
 
-                if uncompressed_size < claims.CLAIM_MINIMUM_BYTES_TO_COMPRESS:
+                if uncompressed_size < (
+                        claims.CLAIM_LOWER_COMPRESSION_THRESHOLD):
                     self.assertEqual(claims.CLAIMS_COMPRESSION_FORMAT_NONE,
                                      compression_format,
                                      f'{claims_type} unexpectedly '
                                      f'compressed ({uncompressed_size} '
                                      f'bytes uncompressed)')
-                else:
+                elif uncompressed_size >= (
+                        claims.CLAIM_UPPER_COMPRESSION_THRESHOLD):
                     self.assertEqual(
                         claims.CLAIMS_COMPRESSION_FORMAT_XPRESS_HUFF,
                         compression_format,