The Samba-Bugzilla – Attachment 18058 Details for
Bug 15452
KDC encodes INT64 claims incorrectly
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch for Samba 4.19
bug-15452-4.19.patch (text/plain), 52.36 KB, created by
Jo Sutton
on 2023-08-15 21:19:02 UTC
(
hide
)
Description:
patch for Samba 4.19
Filename:
MIME Type:
Creator:
Jo Sutton
Created:
2023-08-15 21:19:02 UTC
Size:
52.36 KB
patch
obsolete
>From d5bf9994ede3c3b2025d918b2231e48a37a3503b Mon Sep 17 00:00:00 2001 >From: Joseph Sutton <josephsutton@catalyst.net.nz> >Date: Tue, 15 Aug 2023 12:20:17 +1200 >Subject: [PATCH 1/6] tests/krb5: Remove unused import > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15452 > >Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> >(cherry picked from commit 2c915e743d53d5e35fa31fa3965d9c9b086351ec) >--- > python/samba/tests/krb5/claims_in_pac.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/python/samba/tests/krb5/claims_in_pac.py b/python/samba/tests/krb5/claims_in_pac.py >index 82cd7b7e694..2cbb38adb90 100755 >--- a/python/samba/tests/krb5/claims_in_pac.py >+++ b/python/samba/tests/krb5/claims_in_pac.py >@@ -24,7 +24,7 @@ sys.path.insert(0, 'bin/python') > os.environ['PYTHONUNBUFFERED'] = '1' > > from samba.dcerpc import krb5pac, claims >-from samba.ndr import ndr_pack, ndr_unpack, ndr_print >+from samba.ndr import ndr_pack, ndr_unpack > from samba.tests import TestCase > > class PacClaimsTests(TestCase): >-- >2.39.1 > > >From de37bf7d01550e1de54fa266e726708fe8747819 Mon Sep 17 00:00:00 2001 >From: Joseph Sutton <josephsutton@catalyst.net.nz> >Date: Tue, 15 Aug 2023 12:20:50 +1200 >Subject: [PATCH 2/6] tests/krb5: Shorten long lines > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15452 > >Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> >(cherry picked from commit 0cce616843395215305428b8672ffa315dbdd858) >--- > python/samba/tests/krb5/claims_in_pac.py | 93 +++++++++++++++++++++++- > 1 file changed, 91 insertions(+), 2 deletions(-) > >diff --git a/python/samba/tests/krb5/claims_in_pac.py b/python/samba/tests/krb5/claims_in_pac.py >index 2cbb38adb90..76e3943e924 100755 >--- a/python/samba/tests/krb5/claims_in_pac.py >+++ b/python/samba/tests/krb5/claims_in_pac.py >@@ -29,8 +29,97 @@ from samba.tests import TestCase > > class PacClaimsTests(TestCase): > >- pac_data_uncompressed = bytes.fromhex("08000000000000000100000000020000880000000000000006000000100000008802000000000000070000001000000098020000000000000a00000020000000a8020000000000000c000000b8000000c8020000000000000d00000090010000800300000000000011000000080000001005000000000000120000001c000000180500000000000001100800ccccccccf001000000000000000002000000000000000000ffffffffffffff7fffffffffffffff7f6ebd4f913c60d9016e7db9bb0561d9016e3da9863d81d90116001600040002000000000008000200000000000c00020000000000100002000000000014000200000000001800020000000000ae04000001020000010000001c00020020000000000000000000000000000000000000001e002000200002000a000c00240002002800020000000000000000001000000000000000000000000000000000000000000000000000000000000000020000002c0002000000000000000000000000000b000000000000000b000000370032003000660064003300630033005f0031003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010200000700000010000000000000000f000000410042004100520054004c00450054002d00440043002d00570049004e000000060000000000000005000000570049004e00320032000000040000000104000000000005150000003f1ba8749a54499be10ea459020000003000020007000000340002000700000005000000010500000000000515000000000000000000000000000000f1010000010000000101000000000012010000000000000010000000d89573aeb6f036c4ca5f5412100000008ada43082e7dfccb7587a4788097ee903c60d9011600370032003000660064003300630033005f00310030003a0018002200580003000000160080001c00980000000000370032003000660064003300630033005f00310030004000770069006e00320032002e006500780061006d0070006c0065002e0063006f006d00000000000000570049004e00320032002e004500580041004d0050004c0045002e0043004f004d00000000000000370032003000660064003300630033005f003100300000000105000000000005150000003f1ba8749a54499be10ea459ae0400000000000001100800cccccccc800100000000000000000200580100000400020000000000580100000000000000000000000000005801000001100800cccccccc480100000000000000000200010000000400020000000000000000000000000001000000010000000300000008000200030000000c000200060006000100000010000200140002000300030003000000180002002800020002000200040000002c0002000b000000000000000b000000370032003000660064003300630033005f00390000000000010000000000000001000000000000000b000000000000000b000000370032003000660064003300630033005f00370000000000030000001c000200200002002400020004000000000000000400000066006f006f0000000400000000000000040000006200610072000000040000000000000004000000620061007a0000000b000000000000000b000000370032003000660064003300630033005f003800000000000400000009000a00000000000700010000000000060001000000000000000100000000000000000002000000010000000105000000000005150000003f1ba8749a54499be10ea459ae04000000000000") >- pac_data_compressed = bytes.fromhex("080000000000000001000000f8010000880000000000000006000000100000008002000000000000070000001000000090020000000000000a0000001e000000a0020000000000000c000000b0000000c0020000000000000d0000006002000070030000000000001100000008000000d005000000000000120000001c000000d80500000000000001100800cccccccce801000000000000000002000000000000000000ffffffffffffff7fffffffffffffff7f50b330913c60d90150739abb0561d90150338a863d81d90114001400040002000000000008000200000000000c00020000000000100002000000000014000200000000001800020000000000ad04000001020000010000001c00020020000000000000000000000000000000000000001e002000200002000a000c00240002002800020000000000000000001000000000000000000000000000000000000000000000000000000000000000020000002c0002000000000000000000000000000a000000000000000a000000370032003000660064003300630033005f00360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010200000700000010000000000000000f000000410042004100520054004c00450054002d00440043002d00570049004e000000060000000000000005000000570049004e00320032000000040000000104000000000005150000003f1ba8749a54499be10ea459020000003000020007000000340002000700000005000000010500000000000515000000000000000000000000000000f10100000100000001010000000000120100000010000000ace7b599ff30aa486b52983210000000b50e9bea014545c97eca0b978097ee903c60d9011400370032003000660064003300630033005f0036000000380018002200500003000000140078001c00900000000000370032003000660064003300630033005f0036004000770069006e00320032002e006500780061006d0070006c0065002e0063006f006d00570049004e00320032002e004500580041004d0050004c0045002e0043004f004d00000000000000370032003000660064003300630033005f003600000000000105000000000005150000003f1ba8749a54499be10ea459ad0400000000000001100800cccccccc500200000000000000000200290200000400020004000000282000000000000000000000000000002902000073778788878808880700080007800800060007000700070887770780080088008870070008000808000080000000008070787787770076770867868788000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000007700080080000000870000000000000085070000000000007476800000000000750587000800000066078000000080706677880080008060878708000000008000800000000000800000000000000000000000000000000000000000000000006080080000000070000000000000000000000000000000000000000000000000fd74eaf001add6213aecf4346587eec48c323e3e1a5a32042eecf243669a581e383d2940e80e383c294463b8c0b49024f1def20df819586b086cd2ab98700923386674845663ef57e91718110c1ad4c0ac88912126d2180545e98670ea2aa002052aa54189cc318d26c46b667f18b6876262a9a4985ecdf76e5161033fd457ba020075360c837aaa3aa82749ee8152420999b553c60195be5e5c35c4330557538772972a7d527aeca1fc6b2951ca254ac83960272a930f3194892d4729eff48e48ccfb929329ff501c356c0e8ed18471ec70986c31da86a8090b4022c1db257514fdba4347532146648d4f99f9065e0d9a0d90d80f38389c39cb9ebe6d4e5e681e5a8a5418f591f1dbb7594a3f2aa3220ced1cd18cb49cffcc2ff18eef6caf443663640c566400001200000002000000010000000105000000000005150000003f1ba8749a54499be10ea459ad04000000000000") >+ pac_data_uncompressed = bytes.fromhex( >+ '08000000000000000100000000020000880000000000000006000000100000008802' >+ '000000000000070000001000000098020000000000000a00000020000000a8020000' >+ '000000000c000000b8000000c8020000000000000d00000090010000800300000000' >+ '000011000000080000001005000000000000120000001c0000001805000000000000' >+ '01100800ccccccccf001000000000000000002000000000000000000ffffffffffff' >+ 'ff7fffffffffffffff7f6ebd4f913c60d9016e7db9bb0561d9016e3da9863d81d901' >+ '16001600040002000000000008000200000000000c00020000000000100002000000' >+ '000014000200000000001800020000000000ae04000001020000010000001c000200' >+ '20000000000000000000000000000000000000001e002000200002000a000c002400' >+ '02002800020000000000000000001000000000000000000000000000000000000000' >+ '000000000000000000000000020000002c0002000000000000000000000000000b00' >+ '0000000000000b000000370032003000660064003300630033005f00310030000000' >+ '00000000000000000000000000000000000000000000000000000000000000000000' >+ '00000000000000000000000000000000000000000000000000000100000001020000' >+ '0700000010000000000000000f000000410042004100520054004c00450054002d00' >+ '440043002d00570049004e000000060000000000000005000000570049004e003200' >+ '32000000040000000104000000000005150000003f1ba8749a54499be10ea4590200' >+ '00003000020007000000340002000700000005000000010500000000000515000000' >+ '000000000000000000000000f1010000010000000101000000000012010000000000' >+ '000010000000d89573aeb6f036c4ca5f5412100000008ada43082e7dfccb7587a478' >+ '8097ee903c60d9011600370032003000660064003300630033005f00310030003a00' >+ '18002200580003000000160080001c00980000000000370032003000660064003300' >+ '630033005f00310030004000770069006e00320032002e006500780061006d007000' >+ '6c0065002e0063006f006d00000000000000570049004e00320032002e0045005800' >+ '41004d0050004c0045002e0043004f004d0000000000000037003200300066006400' >+ '3300630033005f003100300000000105000000000005150000003f1ba8749a54499b' >+ 'e10ea459ae0400000000000001100800cccccccc8001000000000000000002005801' >+ '00000400020000000000580100000000000000000000000000005801000001100800' >+ 'cccccccc480100000000000000000200010000000400020000000000000000000000' >+ '000001000000010000000300000008000200030000000c0002000600060001000000' >+ '10000200140002000300030003000000180002002800020002000200040000002c00' >+ '02000b000000000000000b000000370032003000660064003300630033005f003900' >+ '00000000010000000000000001000000000000000b000000000000000b0000003700' >+ '32003000660064003300630033005f00370000000000030000001c00020020000200' >+ '2400020004000000000000000400000066006f006f00000004000000000000000400' >+ '00006200610072000000040000000000000004000000620061007a0000000b000000' >+ '000000000b000000370032003000660064003300630033005f003800000000000400' >+ '000009000a0000000000070001000000000006000100000000000000010000000000' >+ '0000000002000000010000000105000000000005150000003f1ba8749a54499be10e' >+ 'a459ae04000000000000' >+ ) >+ >+ pac_data_compressed = bytes.fromhex( >+ '080000000000000001000000f8010000880000000000000006000000100000008002' >+ '000000000000070000001000000090020000000000000a0000001e000000a0020000' >+ '000000000c000000b0000000c0020000000000000d00000060020000700300000000' >+ '00001100000008000000d005000000000000120000001c000000d805000000000000' >+ '01100800cccccccce801000000000000000002000000000000000000ffffffffffff' >+ 'ff7fffffffffffffff7f50b330913c60d90150739abb0561d90150338a863d81d901' >+ '14001400040002000000000008000200000000000c00020000000000100002000000' >+ '000014000200000000001800020000000000ad04000001020000010000001c000200' >+ '20000000000000000000000000000000000000001e002000200002000a000c002400' >+ '02002800020000000000000000001000000000000000000000000000000000000000' >+ '000000000000000000000000020000002c0002000000000000000000000000000a00' >+ '0000000000000a000000370032003000660064003300630033005f00360000000000' >+ '00000000000000000000000000000000000000000000000000000000000000000000' >+ '00000000000000000000000000000000000000000000010000000102000007000000' >+ '10000000000000000f000000410042004100520054004c00450054002d0044004300' >+ '2d00570049004e000000060000000000000005000000570049004e00320032000000' >+ '040000000104000000000005150000003f1ba8749a54499be10ea459020000003000' >+ '02000700000034000200070000000500000001050000000000051500000000000000' >+ '0000000000000000f10100000100000001010000000000120100000010000000ace7' >+ 'b599ff30aa486b52983210000000b50e9bea014545c97eca0b978097ee903c60d901' >+ '1400370032003000660064003300630033005f003600000038001800220050000300' >+ '0000140078001c00900000000000370032003000660064003300630033005f003600' >+ '4000770069006e00320032002e006500780061006d0070006c0065002e0063006f00' >+ '6d00570049004e00320032002e004500580041004d0050004c0045002e0043004f00' >+ '4d00000000000000370032003000660064003300630033005f003600000000000105' >+ '000000000005150000003f1ba8749a54499be10ea459ad0400000000000001100800' >+ 'cccccccc500200000000000000000200290200000400020004000000282000000000' >+ '00000000000000000000290200007377878887880888070008000780080006000700' >+ '07000708877707800800880088700700080008080000800000000080707877877700' >+ '76770867868788000000000000000000000000000000000000000000000000000000' >+ '00000000000000000000000000000800000000000000000000000000000000000000' >+ '00000000000077000800800000008700000000000000850700000000000074768000' >+ '00000000750587000800000066078000000080706677880080008060878708000000' >+ '00800080000000000080000000000000000000000000000000000000000000000000' >+ '6080080000000070000000000000000000000000000000000000000000000000fd74' >+ 'eaf001add6213aecf4346587eec48c323e3e1a5a32042eecf243669a581e383d2940' >+ 'e80e383c294463b8c0b49024f1def20df819586b086cd2ab98700923386674845663' >+ 'ef57e91718110c1ad4c0ac88912126d2180545e98670ea2aa002052aa54189cc318d' >+ '26c46b667f18b6876262a9a4985ecdf76e5161033fd457ba020075360c837aaa3aa8' >+ '2749ee8152420999b553c60195be5e5c35c4330557538772972a7d527aeca1fc6b29' >+ '51ca254ac83960272a930f3194892d4729eff48e48ccfb929329ff501c356c0e8ed1' >+ '8471ec70986c31da86a8090b4022c1db257514fdba4347532146648d4f99f9065e0d' >+ '9a0d90d80f38389c39cb9ebe6d4e5e681e5a8a5418f591f1dbb7594a3f2aa3220ced' >+ '1cd18cb49cffcc2ff18eef6caf443663640c56640000120000000200000001000000' >+ '0105000000000005150000003f1ba8749a54499be10ea459ad04000000000000' >+ ) >+ > > def test_unpack_raw(self): > pac_unpacked_raw = ndr_unpack(krb5pac.PAC_DATA_RAW, self.pac_data_uncompressed) >-- >2.39.1 > > >From a0047c47c3227757164bbd5f73cd64373235e138 Mon Sep 17 00:00:00 2001 >From: Joseph Sutton <josephsutton@catalyst.net.nz> >Date: Tue, 15 Aug 2023 12:21:30 +1200 >Subject: [PATCH 3/6] tests/krb5: Add a test decoding INT64 PAC claims issued > by Windows > >Our NDR code currently handles INT64 claims incorrectly. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15452 > >Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> >(cherry picked from commit 631e26e1d63040b37f48fd890ab03f7adfc6d882) >--- > python/samba/tests/krb5/claims_in_pac.py | 74 ++++++++++++++++++++++++ > selftest/knownfail.d/claims-in-pac | 1 + > 2 files changed, 75 insertions(+) > create mode 100644 selftest/knownfail.d/claims-in-pac > >diff --git a/python/samba/tests/krb5/claims_in_pac.py b/python/samba/tests/krb5/claims_in_pac.py >index 76e3943e924..a5db7bac84e 100755 >--- a/python/samba/tests/krb5/claims_in_pac.py >+++ b/python/samba/tests/krb5/claims_in_pac.py >@@ -120,6 +120,40 @@ class PacClaimsTests(TestCase): > '0105000000000005150000003f1ba8749a54499be10ea459ad04000000000000' > ) > >+ pac_data_int64_claim = bytes.fromhex( >+ '080000000000000001000000f0010000880000000000000006000000100000007802' >+ '000000000000070000001000000088020000000000000a0000001a00000098020000' >+ '000000000c00000088000000b8020000000000000d000000d0000000400300000000' >+ '000011000000080000001004000000000000120000001c0000001804000000000000' >+ '01100800cccccccce001000000000000000002000000000000000000ffffffffffff' >+ 'ff7fffffffffffffff7f52a2a6d607cfd90152621001d1cfd901522200cc08f0d901' >+ '10001000040002000000000008000200000000000c00020000000000100002000000' >+ '0000140002000000000018000200000000004362000001020000010000001c000200' >+ '200000000000000000000000000000000000000014001600200002000e0010002400' >+ '02002800020000000000000000001000000000000000000000000000000000000000' >+ '000000000000000000000000020000002c0002000000000000000000000000000800' >+ '0000000000000800000075007300650072006e0061006d0065000000000000000000' >+ '00000000000000000000000000000000000000000000000000000000000000000000' >+ '0000000000000000000000000000000000000100000001020000070000000b000000' >+ '000000000a000000570049004e0032004b00310039002d0044004300080000000000' >+ '0000070000006500780061006d0070006c0065000000040000000104000000000005' >+ '15000000bcfb8bf5af39e9b21f9b5fcd020000003000020007000000340002000700' >+ '000005000000010500000000000515000000000000000000000000000000f1010000' >+ '010000000101000000000012010000000000000010000000147a8762afe3366b316c' >+ '936410000000e05a433ae9271bcc603d933480353ad607cfd9011000750073006500' >+ '72006e0061006d006500000000000000280018001600400003000000100058001c00' >+ '68000000000075007300650072006e0061006d00650040006500780061006d007000' >+ '6c0065002e0063006f006d004500580041004d0050004c0045002e0043004f004d00' >+ '000075007300650072006e0061006d006500010500000000000515000000bcfb8bf5' >+ 'af39e9b21f9b5fcd436200000000000001100800ccccccccc0000000000000000000' >+ '02009800000004000200000000009800000000000000000000000000000098000000' >+ '01100800cccccccc8800000000000000000002000100000004000200000000000000' >+ '00000000000001000000010000000100000008000200010000000c00020001000100' >+ '05000000100002000800000000000000080000006100200063006c00610069006d00' >+ '0000050000000000000003000000000000002a0000000000000019fcffffffffffff' >+ 'e803000000000000204e000000000000000000000200000001000000010500000000' >+ '000515000000bcfb8bf5af39e9b21f9b5fcd4362000000000000' >+ ) > > def test_unpack_raw(self): > pac_unpacked_raw = ndr_unpack(krb5pac.PAC_DATA_RAW, self.pac_data_uncompressed) >@@ -411,6 +445,46 @@ class PacClaimsTests(TestCase): > client_claims_bytes2 = ndr_pack(client_claims2) > self.assertEqual(client_claims_bytes1, client_claims_bytes2) > >+ def test_pac_int64_claims(self): >+ """Test that we can parse a PAC containing INT64 claims.""" >+ >+ # Decode the PAC. >+ pac = ndr_unpack(krb5pac.PAC_DATA, self.pac_data_int64_claim) >+ >+ # Get the PAC buffer which contains the client claims. >+ self.assertEqual(8, pac.num_buffers) >+ client_claims_buf = pac.buffers[5] >+ self.assertEqual(krb5pac.PAC_TYPE_CLIENT_CLAIMS_INFO, >+ client_claims_buf.type) >+ >+ # Ensure that we can decode the client claims. >+ client_claims_data = client_claims_buf.info.remaining >+ client_claims = ndr_unpack(claims.CLAIMS_SET_METADATA_NDR, >+ client_claims_data) >+ >+ claims_set = client_claims.claims.metadata.claims_set.claims.claims >+ >+ # We should find a single claims array, ⦠>+ self.assertEqual(1, claims_set.claims_array_count) >+ claims_array = claims_set.claims_arrays[0] >+ self.assertEqual(claims.CLAIMS_SOURCE_TYPE_AD, >+ claims_array.claims_source_type) >+ >+ # â¦containing our INT64 claim. >+ self.assertEqual(1, claims_array.claims_count) >+ claim_entry = claims_array.claim_entries[0] >+ self.assertEqual('a claim', claim_entry.id) >+ self.assertEqual(claims.CLAIM_TYPE_INT64, claim_entry.type) >+ >+ # Ensure that the values have been decoded correctly. >+ self.assertEqual([3, 42, -999, 1000, 20000], claim_entry.values.values) >+ >+ # Re-encode the claims buffer and ensure that the result is identical >+ # to the original encoded claims produced by Windows. >+ client_claims_packed = ndr_pack(client_claims) >+ self.assertEqual(client_claims_data, client_claims_packed) >+ >+ > if __name__ == '__main__': > import unittest > unittest.main() >diff --git a/selftest/knownfail.d/claims-in-pac b/selftest/knownfail.d/claims-in-pac >new file mode 100644 >index 00000000000..4fc9abc1176 >--- /dev/null >+++ b/selftest/knownfail.d/claims-in-pac >@@ -0,0 +1 @@ >+^samba\.tests\.krb5\.claims_in_pac\.samba\.tests\.krb5\.claims_in_pac\.PacClaimsTests\.test_pac_int64_claims\(none\)$ >-- >2.39.1 > > >From 278cdb645a9a4f37e4afe90a35bbd2fafa2aaba5 Mon Sep 17 00:00:00 2001 >From: Joseph Sutton <josephsutton@catalyst.net.nz> >Date: Tue, 15 Aug 2023 12:29:03 +1200 >Subject: [PATCH 4/6] =?UTF-8?q?librpc:ndr:=20Add=20=E2=80=98int64=E2=80=99?= > =?UTF-8?q?=20type?= >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >This type behaves like a signed variant of âhyperâ. Unlike the existing >âdlongâ type, which has four byte alignment, âint64â is aligned to eight >bytes. > >Bump the NDR version to 3.0.1. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15452 > >Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> >(cherry picked from commit 402bb17693472a9c30f33a0bdf5f5f78df4066cc) >--- > librpc/ABI/ndr-3.0.1.sigs | 272 +++++++++++++++++++++++++++ > librpc/ndr/libndr.h | 1 + > librpc/ndr/ndr_basic.c | 43 +++++ > librpc/wscript_build | 2 +- > pidl/lib/Parse/Pidl/NDR.pm | 1 + > pidl/lib/Parse/Pidl/Typelist.pm | 1 + > pidl/lib/Parse/Pidl/Wireshark/NDR.pm | 1 + > pidl/tests/ndr.pl | 3 +- > pidl/tests/typelist.pl | 3 +- > 9 files changed, 324 insertions(+), 3 deletions(-) > create mode 100644 librpc/ABI/ndr-3.0.1.sigs > >diff --git a/librpc/ABI/ndr-3.0.1.sigs b/librpc/ABI/ndr-3.0.1.sigs >new file mode 100644 >index 00000000000..54aab1d56d4 >--- /dev/null >+++ b/librpc/ABI/ndr-3.0.1.sigs >@@ -0,0 +1,272 @@ >+GUID_all_zero: bool (const struct GUID *) >+GUID_buf_string: char *(const struct GUID *, struct GUID_txt_buf *) >+GUID_compare: int (const struct GUID *, const struct GUID *) >+GUID_equal: bool (const struct GUID *, const struct GUID *) >+GUID_from_data_blob: NTSTATUS (const DATA_BLOB *, struct GUID *) >+GUID_from_ndr_blob: NTSTATUS (const DATA_BLOB *, struct GUID *) >+GUID_from_string: NTSTATUS (const char *, struct GUID *) >+GUID_hexstring: char *(TALLOC_CTX *, const struct GUID *) >+GUID_random: struct GUID (void) >+GUID_string: char *(TALLOC_CTX *, const struct GUID *) >+GUID_string2: char *(TALLOC_CTX *, const struct GUID *) >+GUID_to_ndr_blob: NTSTATUS (const struct GUID *, TALLOC_CTX *, DATA_BLOB *) >+GUID_to_ndr_buf: NTSTATUS (const struct GUID *, struct GUID_ndr_buf *) >+GUID_zero: struct GUID (void) >+_ndr_pull_error: enum ndr_err_code (struct ndr_pull *, enum ndr_err_code, const char *, const char *, const char *, ...) >+_ndr_push_error: enum ndr_err_code (struct ndr_push *, enum ndr_err_code, const char *, const char *, const char *, ...) >+ndr_align_size: size_t (uint32_t, size_t) >+ndr_charset_length: uint32_t (const void *, charset_t) >+ndr_check_array_size: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t) >+ndr_check_padding: void (struct ndr_pull *, size_t) >+ndr_check_pipe_chunk_trailer: enum ndr_err_code (struct ndr_pull *, int, uint32_t) >+ndr_check_steal_array_length: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t) >+ndr_check_steal_array_size: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t) >+ndr_check_string_terminator: enum ndr_err_code (struct ndr_pull *, uint32_t, uint32_t) >+ndr_get_array_length: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t *) >+ndr_get_array_size: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t *) >+ndr_map_error2errno: int (enum ndr_err_code) >+ndr_map_error2ntstatus: NTSTATUS (enum ndr_err_code) >+ndr_map_error2string: const char *(enum ndr_err_code) >+ndr_policy_handle_empty: bool (const struct policy_handle *) >+ndr_policy_handle_equal: bool (const struct policy_handle *, const struct policy_handle *) >+ndr_print_DATA_BLOB: void (struct ndr_print *, const char *, DATA_BLOB) >+ndr_print_GUID: void (struct ndr_print *, const char *, const struct GUID *) >+ndr_print_HRESULT: void (struct ndr_print *, const char *, HRESULT) >+ndr_print_KRB5_EDATA_NTSTATUS: void (struct ndr_print *, const char *, const struct KRB5_EDATA_NTSTATUS *) >+ndr_print_NTSTATUS: void (struct ndr_print *, const char *, NTSTATUS) >+ndr_print_NTTIME: void (struct ndr_print *, const char *, NTTIME) >+ndr_print_NTTIME_1sec: void (struct ndr_print *, const char *, NTTIME) >+ndr_print_NTTIME_hyper: void (struct ndr_print *, const char *, NTTIME) >+ndr_print_WERROR: void (struct ndr_print *, const char *, WERROR) >+ndr_print_array_uint8: void (struct ndr_print *, const char *, const uint8_t *, uint32_t) >+ndr_print_bad_level: void (struct ndr_print *, const char *, uint16_t) >+ndr_print_bitmap_flag: void (struct ndr_print *, size_t, const char *, uint32_t, uint32_t) >+ndr_print_bool: void (struct ndr_print *, const char *, const bool) >+ndr_print_debug: bool (int, ndr_print_fn_t, const char *, void *, const char *, const char *) >+ndr_print_debug_helper: void (struct ndr_print *, const char *, ...) >+ndr_print_debugc: void (int, ndr_print_fn_t, const char *, void *) >+ndr_print_debugc_helper: void (struct ndr_print *, const char *, ...) >+ndr_print_dlong: void (struct ndr_print *, const char *, int64_t) >+ndr_print_double: void (struct ndr_print *, const char *, double) >+ndr_print_enum: void (struct ndr_print *, const char *, const char *, const char *, uint32_t) >+ndr_print_function_debug: void (ndr_print_function_t, const char *, int, void *) >+ndr_print_function_string: char *(TALLOC_CTX *, ndr_print_function_t, const char *, int, void *) >+ndr_print_gid_t: void (struct ndr_print *, const char *, gid_t) >+ndr_print_hyper: void (struct ndr_print *, const char *, uint64_t) >+ndr_print_int16: void (struct ndr_print *, const char *, int16_t) >+ndr_print_int32: void (struct ndr_print *, const char *, int32_t) >+ndr_print_int3264: void (struct ndr_print *, const char *, int32_t) >+ndr_print_int64: void (struct ndr_print *, const char *, int64_t) >+ndr_print_int8: void (struct ndr_print *, const char *, int8_t) >+ndr_print_ipv4address: void (struct ndr_print *, const char *, const char *) >+ndr_print_ipv6address: void (struct ndr_print *, const char *, const char *) >+ndr_print_ndr_syntax_id: void (struct ndr_print *, const char *, const struct ndr_syntax_id *) >+ndr_print_netr_SamDatabaseID: void (struct ndr_print *, const char *, enum netr_SamDatabaseID) >+ndr_print_netr_SchannelType: void (struct ndr_print *, const char *, enum netr_SchannelType) >+ndr_print_null: void (struct ndr_print *) >+ndr_print_pointer: void (struct ndr_print *, const char *, void *) >+ndr_print_policy_handle: void (struct ndr_print *, const char *, const struct policy_handle *) >+ndr_print_printf_helper: void (struct ndr_print *, const char *, ...) >+ndr_print_ptr: void (struct ndr_print *, const char *, const void *) >+ndr_print_set_switch_value: enum ndr_err_code (struct ndr_print *, const void *, uint32_t) >+ndr_print_sockaddr_storage: void (struct ndr_print *, const char *, const struct sockaddr_storage *) >+ndr_print_steal_switch_value: uint32_t (struct ndr_print *, const void *) >+ndr_print_string: void (struct ndr_print *, const char *, const char *) >+ndr_print_string_array: void (struct ndr_print *, const char *, const char **) >+ndr_print_string_helper: void (struct ndr_print *, const char *, ...) >+ndr_print_struct: void (struct ndr_print *, const char *, const char *) >+ndr_print_struct_string: char *(TALLOC_CTX *, ndr_print_fn_t, const char *, void *) >+ndr_print_svcctl_ServerType: void (struct ndr_print *, const char *, uint32_t) >+ndr_print_time_t: void (struct ndr_print *, const char *, time_t) >+ndr_print_timespec: void (struct ndr_print *, const char *, const struct timespec *) >+ndr_print_timeval: void (struct ndr_print *, const char *, const struct timeval *) >+ndr_print_udlong: void (struct ndr_print *, const char *, uint64_t) >+ndr_print_udlongr: void (struct ndr_print *, const char *, uint64_t) >+ndr_print_uid_t: void (struct ndr_print *, const char *, uid_t) >+ndr_print_uint16: void (struct ndr_print *, const char *, uint16_t) >+ndr_print_uint32: void (struct ndr_print *, const char *, uint32_t) >+ndr_print_uint3264: void (struct ndr_print *, const char *, uint32_t) >+ndr_print_uint8: void (struct ndr_print *, const char *, uint8_t) >+ndr_print_union: void (struct ndr_print *, const char *, int, const char *) >+ndr_print_union_debug: void (ndr_print_fn_t, const char *, uint32_t, void *) >+ndr_print_union_string: char *(TALLOC_CTX *, ndr_print_fn_t, const char *, uint32_t, void *) >+ndr_print_winreg_Data: void (struct ndr_print *, const char *, const union winreg_Data *) >+ndr_print_winreg_Data_GPO: void (struct ndr_print *, const char *, const union winreg_Data_GPO *) >+ndr_print_winreg_Type: void (struct ndr_print *, const char *, enum winreg_Type) >+ndr_pull_DATA_BLOB: enum ndr_err_code (struct ndr_pull *, int, DATA_BLOB *) >+ndr_pull_GUID: enum ndr_err_code (struct ndr_pull *, int, struct GUID *) >+ndr_pull_HRESULT: enum ndr_err_code (struct ndr_pull *, int, HRESULT *) >+ndr_pull_KRB5_EDATA_NTSTATUS: enum ndr_err_code (struct ndr_pull *, int, struct KRB5_EDATA_NTSTATUS *) >+ndr_pull_NTSTATUS: enum ndr_err_code (struct ndr_pull *, int, NTSTATUS *) >+ndr_pull_NTTIME: enum ndr_err_code (struct ndr_pull *, int, NTTIME *) >+ndr_pull_NTTIME_1sec: enum ndr_err_code (struct ndr_pull *, int, NTTIME *) >+ndr_pull_NTTIME_hyper: enum ndr_err_code (struct ndr_pull *, int, NTTIME *) >+ndr_pull_WERROR: enum ndr_err_code (struct ndr_pull *, int, WERROR *) >+ndr_pull_advance: enum ndr_err_code (struct ndr_pull *, uint32_t) >+ndr_pull_align: enum ndr_err_code (struct ndr_pull *, size_t) >+ndr_pull_append: enum ndr_err_code (struct ndr_pull *, DATA_BLOB *) >+ndr_pull_array_length: enum ndr_err_code (struct ndr_pull *, const void *) >+ndr_pull_array_size: enum ndr_err_code (struct ndr_pull *, const void *) >+ndr_pull_array_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *, uint32_t) >+ndr_pull_bytes: enum ndr_err_code (struct ndr_pull *, uint8_t *, uint32_t) >+ndr_pull_charset: enum ndr_err_code (struct ndr_pull *, int, const char **, uint32_t, uint8_t, charset_t) >+ndr_pull_charset_to_null: enum ndr_err_code (struct ndr_pull *, int, const char **, uint32_t, uint8_t, charset_t) >+ndr_pull_dlong: enum ndr_err_code (struct ndr_pull *, int, int64_t *) >+ndr_pull_double: enum ndr_err_code (struct ndr_pull *, int, double *) >+ndr_pull_enum_uint16: enum ndr_err_code (struct ndr_pull *, int, uint16_t *) >+ndr_pull_enum_uint1632: enum ndr_err_code (struct ndr_pull *, int, uint16_t *) >+ndr_pull_enum_uint32: enum ndr_err_code (struct ndr_pull *, int, uint32_t *) >+ndr_pull_enum_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *) >+ndr_pull_generic_ptr: enum ndr_err_code (struct ndr_pull *, uint32_t *) >+ndr_pull_get_relative_base_offset: uint32_t (struct ndr_pull *) >+ndr_pull_gid_t: enum ndr_err_code (struct ndr_pull *, int, gid_t *) >+ndr_pull_hyper: enum ndr_err_code (struct ndr_pull *, int, uint64_t *) >+ndr_pull_init_blob: struct ndr_pull *(const DATA_BLOB *, TALLOC_CTX *) >+ndr_pull_int16: enum ndr_err_code (struct ndr_pull *, int, int16_t *) >+ndr_pull_int32: enum ndr_err_code (struct ndr_pull *, int, int32_t *) >+ndr_pull_int64: enum ndr_err_code (struct ndr_pull *, int, int64_t *) >+ndr_pull_int8: enum ndr_err_code (struct ndr_pull *, int, int8_t *) >+ndr_pull_ipv4address: enum ndr_err_code (struct ndr_pull *, int, const char **) >+ndr_pull_ipv6address: enum ndr_err_code (struct ndr_pull *, int, const char **) >+ndr_pull_ndr_syntax_id: enum ndr_err_code (struct ndr_pull *, int, struct ndr_syntax_id *) >+ndr_pull_netr_SamDatabaseID: enum ndr_err_code (struct ndr_pull *, int, enum netr_SamDatabaseID *) >+ndr_pull_netr_SchannelType: enum ndr_err_code (struct ndr_pull *, int, enum netr_SchannelType *) >+ndr_pull_pointer: enum ndr_err_code (struct ndr_pull *, int, void **) >+ndr_pull_policy_handle: enum ndr_err_code (struct ndr_pull *, int, struct policy_handle *) >+ndr_pull_pop: enum ndr_err_code (struct ndr_pull *) >+ndr_pull_ref_ptr: enum ndr_err_code (struct ndr_pull *, uint32_t *) >+ndr_pull_relative_ptr1: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t) >+ndr_pull_relative_ptr2: enum ndr_err_code (struct ndr_pull *, const void *) >+ndr_pull_relative_ptr_short: enum ndr_err_code (struct ndr_pull *, uint16_t *) >+ndr_pull_restore_relative_base_offset: void (struct ndr_pull *, uint32_t) >+ndr_pull_set_switch_value: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t) >+ndr_pull_setup_relative_base_offset1: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t) >+ndr_pull_setup_relative_base_offset2: enum ndr_err_code (struct ndr_pull *, const void *) >+ndr_pull_steal_switch_value: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t *) >+ndr_pull_string: enum ndr_err_code (struct ndr_pull *, int, const char **) >+ndr_pull_string_array: enum ndr_err_code (struct ndr_pull *, int, const char ***) >+ndr_pull_struct_blob: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, ndr_pull_flags_fn_t) >+ndr_pull_struct_blob_all: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, ndr_pull_flags_fn_t) >+ndr_pull_struct_blob_all_noalloc: enum ndr_err_code (const DATA_BLOB *, void *, ndr_pull_flags_fn_t) >+ndr_pull_subcontext_end: enum ndr_err_code (struct ndr_pull *, struct ndr_pull *, size_t, ssize_t) >+ndr_pull_subcontext_start: enum ndr_err_code (struct ndr_pull *, struct ndr_pull **, size_t, ssize_t) >+ndr_pull_svcctl_ServerType: enum ndr_err_code (struct ndr_pull *, int, uint32_t *) >+ndr_pull_time_t: enum ndr_err_code (struct ndr_pull *, int, time_t *) >+ndr_pull_timespec: enum ndr_err_code (struct ndr_pull *, int, struct timespec *) >+ndr_pull_timeval: enum ndr_err_code (struct ndr_pull *, int, struct timeval *) >+ndr_pull_trailer_align: enum ndr_err_code (struct ndr_pull *, size_t) >+ndr_pull_udlong: enum ndr_err_code (struct ndr_pull *, int, uint64_t *) >+ndr_pull_udlongr: enum ndr_err_code (struct ndr_pull *, int, uint64_t *) >+ndr_pull_uid_t: enum ndr_err_code (struct ndr_pull *, int, uid_t *) >+ndr_pull_uint16: enum ndr_err_code (struct ndr_pull *, int, uint16_t *) >+ndr_pull_uint1632: enum ndr_err_code (struct ndr_pull *, int, uint16_t *) >+ndr_pull_uint32: enum ndr_err_code (struct ndr_pull *, int, uint32_t *) >+ndr_pull_uint3264: enum ndr_err_code (struct ndr_pull *, int, uint32_t *) >+ndr_pull_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *) >+ndr_pull_union_align: enum ndr_err_code (struct ndr_pull *, size_t) >+ndr_pull_union_blob: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, uint32_t, ndr_pull_flags_fn_t) >+ndr_pull_union_blob_all: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, uint32_t, ndr_pull_flags_fn_t) >+ndr_pull_winreg_Data: enum ndr_err_code (struct ndr_pull *, int, union winreg_Data *) >+ndr_pull_winreg_Data_GPO: enum ndr_err_code (struct ndr_pull *, int, union winreg_Data_GPO *) >+ndr_pull_winreg_Type: enum ndr_err_code (struct ndr_pull *, int, enum winreg_Type *) >+ndr_push_DATA_BLOB: enum ndr_err_code (struct ndr_push *, int, DATA_BLOB) >+ndr_push_GUID: enum ndr_err_code (struct ndr_push *, int, const struct GUID *) >+ndr_push_HRESULT: enum ndr_err_code (struct ndr_push *, int, HRESULT) >+ndr_push_KRB5_EDATA_NTSTATUS: enum ndr_err_code (struct ndr_push *, int, const struct KRB5_EDATA_NTSTATUS *) >+ndr_push_NTSTATUS: enum ndr_err_code (struct ndr_push *, int, NTSTATUS) >+ndr_push_NTTIME: enum ndr_err_code (struct ndr_push *, int, NTTIME) >+ndr_push_NTTIME_1sec: enum ndr_err_code (struct ndr_push *, int, NTTIME) >+ndr_push_NTTIME_hyper: enum ndr_err_code (struct ndr_push *, int, NTTIME) >+ndr_push_WERROR: enum ndr_err_code (struct ndr_push *, int, WERROR) >+ndr_push_align: enum ndr_err_code (struct ndr_push *, size_t) >+ndr_push_array_uint8: enum ndr_err_code (struct ndr_push *, int, const uint8_t *, uint32_t) >+ndr_push_blob: DATA_BLOB (struct ndr_push *) >+ndr_push_bytes: enum ndr_err_code (struct ndr_push *, const uint8_t *, uint32_t) >+ndr_push_charset: enum ndr_err_code (struct ndr_push *, int, const char *, uint32_t, uint8_t, charset_t) >+ndr_push_charset_to_null: enum ndr_err_code (struct ndr_push *, int, const char *, uint32_t, uint8_t, charset_t) >+ndr_push_dlong: enum ndr_err_code (struct ndr_push *, int, int64_t) >+ndr_push_double: enum ndr_err_code (struct ndr_push *, int, double) >+ndr_push_enum_uint16: enum ndr_err_code (struct ndr_push *, int, uint16_t) >+ndr_push_enum_uint1632: enum ndr_err_code (struct ndr_push *, int, uint16_t) >+ndr_push_enum_uint32: enum ndr_err_code (struct ndr_push *, int, uint32_t) >+ndr_push_enum_uint8: enum ndr_err_code (struct ndr_push *, int, uint8_t) >+ndr_push_expand: enum ndr_err_code (struct ndr_push *, uint32_t) >+ndr_push_full_ptr: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_get_relative_base_offset: uint32_t (struct ndr_push *) >+ndr_push_gid_t: enum ndr_err_code (struct ndr_push *, int, gid_t) >+ndr_push_hyper: enum ndr_err_code (struct ndr_push *, int, uint64_t) >+ndr_push_init_ctx: struct ndr_push *(TALLOC_CTX *) >+ndr_push_int16: enum ndr_err_code (struct ndr_push *, int, int16_t) >+ndr_push_int32: enum ndr_err_code (struct ndr_push *, int, int32_t) >+ndr_push_int64: enum ndr_err_code (struct ndr_push *, int, int64_t) >+ndr_push_int8: enum ndr_err_code (struct ndr_push *, int, int8_t) >+ndr_push_ipv4address: enum ndr_err_code (struct ndr_push *, int, const char *) >+ndr_push_ipv6address: enum ndr_err_code (struct ndr_push *, int, const char *) >+ndr_push_ndr_syntax_id: enum ndr_err_code (struct ndr_push *, int, const struct ndr_syntax_id *) >+ndr_push_netr_SamDatabaseID: enum ndr_err_code (struct ndr_push *, int, enum netr_SamDatabaseID) >+ndr_push_netr_SchannelType: enum ndr_err_code (struct ndr_push *, int, enum netr_SchannelType) >+ndr_push_pipe_chunk_trailer: enum ndr_err_code (struct ndr_push *, int, uint32_t) >+ndr_push_pointer: enum ndr_err_code (struct ndr_push *, int, void *) >+ndr_push_policy_handle: enum ndr_err_code (struct ndr_push *, int, const struct policy_handle *) >+ndr_push_ref_ptr: enum ndr_err_code (struct ndr_push *) >+ndr_push_relative_ptr1: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_relative_ptr2_end: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_relative_ptr2_start: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_restore_relative_base_offset: void (struct ndr_push *, uint32_t) >+ndr_push_set_switch_value: enum ndr_err_code (struct ndr_push *, const void *, uint32_t) >+ndr_push_setup_relative_base_offset1: enum ndr_err_code (struct ndr_push *, const void *, uint32_t) >+ndr_push_setup_relative_base_offset2: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_short_relative_ptr1: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_short_relative_ptr2: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_steal_switch_value: enum ndr_err_code (struct ndr_push *, const void *, uint32_t *) >+ndr_push_string: enum ndr_err_code (struct ndr_push *, int, const char *) >+ndr_push_string_array: enum ndr_err_code (struct ndr_push *, int, const char **) >+ndr_push_struct_blob: enum ndr_err_code (DATA_BLOB *, TALLOC_CTX *, const void *, ndr_push_flags_fn_t) >+ndr_push_struct_into_fixed_blob: enum ndr_err_code (DATA_BLOB *, const void *, ndr_push_flags_fn_t) >+ndr_push_subcontext_end: enum ndr_err_code (struct ndr_push *, struct ndr_push *, size_t, ssize_t) >+ndr_push_subcontext_start: enum ndr_err_code (struct ndr_push *, struct ndr_push **, size_t, ssize_t) >+ndr_push_svcctl_ServerType: enum ndr_err_code (struct ndr_push *, int, uint32_t) >+ndr_push_time_t: enum ndr_err_code (struct ndr_push *, int, time_t) >+ndr_push_timespec: enum ndr_err_code (struct ndr_push *, int, const struct timespec *) >+ndr_push_timeval: enum ndr_err_code (struct ndr_push *, int, const struct timeval *) >+ndr_push_trailer_align: enum ndr_err_code (struct ndr_push *, size_t) >+ndr_push_udlong: enum ndr_err_code (struct ndr_push *, int, uint64_t) >+ndr_push_udlongr: enum ndr_err_code (struct ndr_push *, int, uint64_t) >+ndr_push_uid_t: enum ndr_err_code (struct ndr_push *, int, uid_t) >+ndr_push_uint16: enum ndr_err_code (struct ndr_push *, int, uint16_t) >+ndr_push_uint1632: enum ndr_err_code (struct ndr_push *, int, uint16_t) >+ndr_push_uint32: enum ndr_err_code (struct ndr_push *, int, uint32_t) >+ndr_push_uint3264: enum ndr_err_code (struct ndr_push *, int, uint32_t) >+ndr_push_uint8: enum ndr_err_code (struct ndr_push *, int, uint8_t) >+ndr_push_union_align: enum ndr_err_code (struct ndr_push *, size_t) >+ndr_push_union_blob: enum ndr_err_code (DATA_BLOB *, TALLOC_CTX *, void *, uint32_t, ndr_push_flags_fn_t) >+ndr_push_unique_ptr: enum ndr_err_code (struct ndr_push *, const void *) >+ndr_push_winreg_Data: enum ndr_err_code (struct ndr_push *, int, const union winreg_Data *) >+ndr_push_winreg_Data_GPO: enum ndr_err_code (struct ndr_push *, int, const union winreg_Data_GPO *) >+ndr_push_winreg_Type: enum ndr_err_code (struct ndr_push *, int, enum winreg_Type) >+ndr_push_zero: enum ndr_err_code (struct ndr_push *, uint32_t) >+ndr_set_flags: void (uint32_t *, uint32_t) >+ndr_size_DATA_BLOB: uint32_t (int, const DATA_BLOB *, int) >+ndr_size_GUID: size_t (const struct GUID *, int) >+ndr_size_string: uint32_t (int, const char * const *, int) >+ndr_size_string_array: size_t (const char **, uint32_t, int) >+ndr_size_struct: size_t (const void *, int, ndr_push_flags_fn_t) >+ndr_size_union: size_t (const void *, int, uint32_t, ndr_push_flags_fn_t) >+ndr_size_winreg_Data_GPO: size_t (const union winreg_Data_GPO *, uint32_t, int) >+ndr_steal_array_length: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t *) >+ndr_steal_array_size: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t *) >+ndr_string_array_size: size_t (struct ndr_push *, const char *) >+ndr_string_length: uint32_t (const void *, uint32_t) >+ndr_syntax_id_buf_string: char *(const struct ndr_syntax_id *, struct ndr_syntax_id_buf *) >+ndr_syntax_id_equal: bool (const struct ndr_syntax_id *, const struct ndr_syntax_id *) >+ndr_syntax_id_from_string: bool (const char *, struct ndr_syntax_id *) >+ndr_syntax_id_null: uuid = {time_low = 0, time_mid = 0, time_hi_and_version = 0, clock_seq = "\000", node = "\000\000\000\000\000"}, if_version = 0 >+ndr_syntax_id_to_string: char *(TALLOC_CTX *, const struct ndr_syntax_id *) >+ndr_token_max_list_size: size_t (void) >+ndr_token_peek: enum ndr_err_code (struct ndr_token_list *, const void *, uint32_t *) >+ndr_token_retrieve: enum ndr_err_code (struct ndr_token_list *, const void *, uint32_t *) >+ndr_token_retrieve_cmp_fn: enum ndr_err_code (struct ndr_token_list *, const void *, uint32_t *, comparison_fn_t, bool) >+ndr_token_store: enum ndr_err_code (TALLOC_CTX *, struct ndr_token_list *, const void *, uint32_t) >+ndr_transfer_syntax_ndr: uuid = {time_low = 2324192516, time_mid = 7403, time_hi_and_version = 4553, clock_seq = "\237\350", node = "\b\000+\020H`"}, if_version = 2 >+ndr_transfer_syntax_ndr64: uuid = {time_low = 1903232307, time_mid = 48826, time_hi_and_version = 18743, clock_seq = "\203\031", node = "\265\333\357\234\314\066"}, if_version = 1 >+ndr_zero_memory: void (void *, size_t) >diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h >index 556d17f68c7..32a34a08a2b 100644 >--- a/librpc/ndr/libndr.h >+++ b/librpc/ndr/libndr.h >@@ -750,6 +750,7 @@ NDR_SCALAR_PROTO(udlong, uint64_t) > NDR_SCALAR_PROTO(udlongr, uint64_t) > NDR_SCALAR_PROTO(dlong, int64_t) > NDR_SCALAR_PROTO(hyper, uint64_t) >+NDR_SCALAR_PROTO(int64, int64_t) > NDR_SCALAR_PROTO(pointer, void *) > NDR_SCALAR_PROTO(time_t, time_t) > NDR_SCALAR_PROTO(uid_t, uid_t) >diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c >index 39aa3690cbe..ecd66a8fa39 100644 >--- a/librpc/ndr/ndr_basic.c >+++ b/librpc/ndr/ndr_basic.c >@@ -36,6 +36,9 @@ > #define NDR_PULL_I32(ndr, ofs) \ > (int32_t)(NDR_BE(ndr) ? PULL_BE_U32(ndr->data,ofs) : PULL_LE_U32(ndr->data,ofs)) > >+#define NDR_PULL_I64(ndr, ofs) \ >+ (NDR_BE(ndr) ? PULL_BE_I64((ndr)->data, (ofs)) : PULL_LE_I64((ndr)->data, (ofs))) >+ > #define NDR_PUSH_U16(ndr, ofs, v) \ > do { \ > if (NDR_BE(ndr)) { \ >@@ -63,6 +66,15 @@ > } \ > } while (0) > >+#define NDR_PUSH_I64(ndr, ofs, v) \ >+ do { \ >+ if (NDR_BE(ndr)) { \ >+ PUSH_BE_I64((ndr)->data, (ofs), (v)); \ >+ } else { \ >+ PUSH_LE_I64((ndr)->data, (ofs), (v)); \ >+ } \ >+ } while (0) >+ > static void ndr_dump_data(struct ndr_print *ndr, const uint8_t *buf, int len); > > /* >@@ -306,6 +318,19 @@ _PUBLIC_ enum ndr_err_code ndr_pull_hyper(struct ndr_pull *ndr, int ndr_flags, u > return ndr_pull_udlong(ndr, ndr_flags, v); > } > >+/* >+ parse an int64 >+*/ >+_PUBLIC_ enum ndr_err_code ndr_pull_int64(struct ndr_pull *ndr, int ndr_flags, int64_t *v) >+{ >+ NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); >+ NDR_PULL_ALIGN(ndr, 8); >+ NDR_PULL_NEED_BYTES(ndr, 8); >+ *v = NDR_PULL_I64(ndr, ndr->offset); >+ ndr->offset += 8; >+ return NDR_ERR_SUCCESS; >+} >+ > /* > parse a pointer > */ >@@ -643,6 +668,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_hyper(struct ndr_push *ndr, int ndr_flags, u > return ndr_push_udlong(ndr, NDR_SCALARS, v); > } > >+/* >+ push an int64 >+*/ >+_PUBLIC_ enum ndr_err_code ndr_push_int64(struct ndr_push *ndr, int ndr_flags, int64_t v) >+{ >+ NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); >+ NDR_PUSH_ALIGN(ndr, 8); >+ NDR_PUSH_NEED_BYTES(ndr, 8); >+ NDR_PUSH_I64(ndr, ndr->offset, v); >+ ndr->offset += 8; >+ return NDR_ERR_SUCCESS; >+} >+ > /* > push a double > */ >@@ -1210,6 +1248,11 @@ _PUBLIC_ void ndr_print_hyper(struct ndr_print *ndr, const char *name, uint64_t > ndr_print_dlong(ndr, name, v); > } > >+_PUBLIC_ void ndr_print_int64(struct ndr_print *ndr, const char *name, int64_t v) >+{ >+ ndr_print_dlong(ndr, name, v); >+} >+ > _PUBLIC_ void ndr_print_pointer(struct ndr_print *ndr, const char *name, void *v) > { > ndr->print(ndr, "%-25s: %p", name, v); >diff --git a/librpc/wscript_build b/librpc/wscript_build >index 713df25229e..3cbb5ff78e6 100644 >--- a/librpc/wscript_build >+++ b/librpc/wscript_build >@@ -628,7 +628,7 @@ bld.SAMBA_LIBRARY('ndr', > public_deps='samba-errors talloc samba-util util_str_hex', > public_headers='gen_ndr/misc.h gen_ndr/ndr_misc.h ndr/libndr.h:ndr.h', > header_path= [('*gen_ndr*', 'gen_ndr')], >- vnum='3.0.0', >+ vnum='3.0.1', > abi_directory='ABI', > abi_match='!ndr_table_* ndr_* GUID_* _ndr_pull_error* _ndr_push_error*', > ) >diff --git a/pidl/lib/Parse/Pidl/NDR.pm b/pidl/lib/Parse/Pidl/NDR.pm >index d17d0b404ed..7a91dc0d84e 100644 >--- a/pidl/lib/Parse/Pidl/NDR.pm >+++ b/pidl/lib/Parse/Pidl/NDR.pm >@@ -58,6 +58,7 @@ my $scalar_alignment = { > 'int3264' => 5, > 'uint3264' => 5, > 'hyper' => 8, >+ 'int64' => 8, > 'double' => 8, > 'pointer' => 8, > 'dlong' => 4, >diff --git a/pidl/lib/Parse/Pidl/Typelist.pm b/pidl/lib/Parse/Pidl/Typelist.pm >index 2b850ffee4b..c0e07b97986 100644 >--- a/pidl/lib/Parse/Pidl/Typelist.pm >+++ b/pidl/lib/Parse/Pidl/Typelist.pm >@@ -46,6 +46,7 @@ my %scalars = ( > "int3264" => "int32_t", > "uint3264" => "uint32_t", > "hyper" => "uint64_t", >+ "int64" => "int64_t", > "dlong" => "int64_t", > "udlong" => "uint64_t", > "udlongr" => "uint64_t", >diff --git a/pidl/lib/Parse/Pidl/Wireshark/NDR.pm b/pidl/lib/Parse/Pidl/Wireshark/NDR.pm >index 59cbba8251a..83fe6cf2c27 100644 >--- a/pidl/lib/Parse/Pidl/Wireshark/NDR.pm >+++ b/pidl/lib/Parse/Pidl/Wireshark/NDR.pm >@@ -1080,6 +1080,7 @@ sub Initialize($$) > > $self->register_type("uint3264", "offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, \@HF\@, NULL);", "FT_UINT32", "BASE_DEC", 0, "NULL", 8); > $self->register_type("hyper", "offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, \@HF\@, NULL);", "FT_UINT64", "BASE_DEC", 0, "NULL", 8); >+ $self->register_type("int64", "offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, \@HF\@, NULL);", "FT_INT64", "BASE_DEC", 0, "NULL", 8); > $self->register_type("udlong", "offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, \@HF\@, NULL);", "FT_UINT64", "BASE_DEC", 0, "NULL", 4); > $self->register_type("bool8", "offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, \@HF\@, \@PARAM\@);","FT_INT8", "BASE_DEC", 0, "NULL", 1); > $self->register_type("char", "offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, \@HF\@, \@PARAM\@);","FT_INT8", "BASE_DEC", 0, "NULL", 1); >diff --git a/pidl/tests/ndr.pl b/pidl/tests/ndr.pl >index b6fd4899b01..8f84545290c 100755 >--- a/pidl/tests/ndr.pl >+++ b/pidl/tests/ndr.pl >@@ -4,7 +4,7 @@ > use strict; > use warnings; > >-use Test::More tests => 47; >+use Test::More tests => 48; > use FindBin qw($RealBin); > use lib "$RealBin"; > use Util; >@@ -480,6 +480,7 @@ $ne = ParseElement($e, undef, 0); > is($ne->{REPRESENTATION_TYPE}, "uint8"); > > is(align_type("hyper"), 8); >+is(align_type("int64"), 8); > is(align_type("double"), 8); > is(align_type("uint32"), 4); > is(align_type("uint16"), 2); >diff --git a/pidl/tests/typelist.pl b/pidl/tests/typelist.pl >index 681c0eacfda..5fc3ca25e06 100755 >--- a/pidl/tests/typelist.pl >+++ b/pidl/tests/typelist.pl >@@ -4,7 +4,7 @@ > use strict; > use warnings; > >-use Test::More tests => 56; >+use Test::More tests => 57; > use FindBin qw($RealBin); > use lib "$RealBin"; > use Util; >@@ -21,6 +21,7 @@ is("int32", expandAlias("int32")); > is("uint32_t", mapScalarType("uint32")); > is("void", mapScalarType("void")); > is("uint64_t", mapScalarType("hyper")); >+is("int64_t", mapScalarType("int64")); > is("double", mapScalarType("double")); > > my $x = { TYPE => "ENUM", NAME => "foo", EXTRADATA => 1 }; >-- >2.39.1 > > >From 2ffeb7a34a9654b74fcf40c12b6853ff5927c54d Mon Sep 17 00:00:00 2001 >From: Joseph Sutton <josephsutton@catalyst.net.nz> >Date: Tue, 15 Aug 2023 12:31:54 +1200 >Subject: [PATCH 5/6] =?UTF-8?q?claims.idl:=20Use=20=E2=80=98int64=E2=80=99?= > =?UTF-8?q?=20instead=20of=20=E2=80=98dlong=E2=80=99=20for=20INT64=20claim?= > =?UTF-8?q?s?= >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >This field is supposed to be aligned to eight bytes, but the âdlongâ >type is aligned to only four bytes. This discrepancy resulted in claims >being encoded and decoded incorrectly. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15452 > >Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> >(cherry picked from commit aa1815519ce1412cdf25927b54b5178113cdd2a7) >--- > librpc/idl/claims.idl | 2 +- > selftest/knownfail.d/claims-in-pac | 1 - > 2 files changed, 1 insertion(+), 2 deletions(-) > delete mode 100644 selftest/knownfail.d/claims-in-pac > >diff --git a/librpc/idl/claims.idl b/librpc/idl/claims.idl >index 90ea15585c1..196db5785a0 100644 >--- a/librpc/idl/claims.idl >+++ b/librpc/idl/claims.idl >@@ -50,7 +50,7 @@ interface claims > > typedef struct { > [range(1, 10*1024*1024)] uint32 value_count; >- [size_is(value_count)] dlong *values; >+ [size_is(value_count)] int64 *values; > } CLAIM_INT64; > > typedef struct { >diff --git a/selftest/knownfail.d/claims-in-pac b/selftest/knownfail.d/claims-in-pac >deleted file mode 100644 >index 4fc9abc1176..00000000000 >--- a/selftest/knownfail.d/claims-in-pac >+++ /dev/null >@@ -1 +0,0 @@ >-^samba\.tests\.krb5\.claims_in_pac\.samba\.tests\.krb5\.claims_in_pac\.PacClaimsTests\.test_pac_int64_claims\(none\)$ >-- >2.39.1 > > >From 1a2e5079d1bae9e676e718834e619d7a6c581cd0 Mon Sep 17 00:00:00 2001 >From: Joseph Sutton <josephsutton@catalyst.net.nz> >Date: Tue, 15 Aug 2023 12:36:05 +1200 >Subject: [PATCH 6/6] tests/krb5: Remove incorrect comments > >Now that the INT64 claim IDL definition has been corrected, these tests >should pass against Windows. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15452 > >Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> > >Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> >Autobuild-Date(master): Tue Aug 15 19:41:50 UTC 2023 on atb-devel-224 > >(cherry picked from commit 37fdd79cc0b83b44cb4d4c457fbb8e7410655b24) >--- > python/samba/tests/krb5/claims_tests.py | 4 ---- > 1 file changed, 4 deletions(-) > >diff --git a/python/samba/tests/krb5/claims_tests.py b/python/samba/tests/krb5/claims_tests.py >index d19255b7a54..8df4595079d 100755 >--- a/python/samba/tests/krb5/claims_tests.py >+++ b/python/samba/tests/krb5/claims_tests.py >@@ -1002,8 +1002,6 @@ class ClaimsTests(KDCBaseTest): > 'class': 'user', > }, > { >- # This test fails on Windows, which for an integer syntax claim >- # issues corrupt data shifted four bytes to the right. > 'name': 'integer syntax', > 'claims': [ > { >@@ -1021,8 +1019,6 @@ class ClaimsTests(KDCBaseTest): > 'class': 'user', > }, > { >- # This test fails on Windows, which for an integer syntax claim >- # issues corrupt data that cannot be NDR unpacked. > 'name': 'integer syntax, duplicate claim', > 'claims': [ > { >-- >2.39.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
abartlet
:
review+
Actions:
View
Attachments on
bug 15452
: 18058