Skip to content

Commit 2bd5265

Browse files
committed
Add 'buffer' to the string whitelist
1 parent 5cdc26b commit 2bd5265

File tree

16 files changed

+70
-101
lines changed

16 files changed

+70
-101
lines changed

midl-to-scapy/scapy_obj.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,10 @@ def to_string(self, context, toplevel=False, _in_array=False):
561561
and (
562562
self.subtype.scapy_field in IMPLICIT_STRINGS
563563
or (
564-
any(x in self.name.lower() for x in ["str", "data"])
564+
any(
565+
x in self.name.lower()
566+
for x in ["str", "data", "buffer"]
567+
)
565568
and self.subtype.scapy_field
566569
in (IMPLICIT_STRINGS + WCHAR_TYPES)
567570
)

scapy-rpc/msrpcs/ms_drsr.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
NDRConfPacketListField,
2525
NDRConfStrLenField,
2626
NDRConfStrLenFieldUtf16,
27-
NDRConfVarFieldListField,
2827
NDRConfVarStrLenField,
2928
NDRConfVarStrLenFieldUtf16,
3029
NDRConfVarStrNullField,
@@ -2162,10 +2161,9 @@ class RPC_UNICODE_STRING(NDRPacket):
21622161
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
21632162
),
21642163
NDRFullEmbPointerField(
2165-
NDRConfVarFieldListField(
2164+
NDRConfVarStrLenFieldUtf16(
21662165
"Buffer",
2167-
[],
2168-
NDRShortField("", 0),
2166+
"",
21692167
size_is=lambda pkt: (pkt.MaximumLength // 2),
21702168
length_is=lambda pkt: (pkt.Length // 2),
21712169
)

scapy-rpc/msrpcs/ms_even.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
NDRConfFieldListField,
2222
NDRConfPacketListField,
2323
NDRConfStrLenField,
24-
NDRConfVarFieldListField,
24+
NDRConfVarStrLenField,
25+
NDRConfVarStrLenFieldUtf16,
2526
NDRContextHandle,
2627
NDRFullEmbPointerField,
2728
NDRFullPointerField,
@@ -41,10 +42,9 @@ class PRPC_UNICODE_STRING(NDRPacket):
4142
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
4243
),
4344
NDRFullEmbPointerField(
44-
NDRConfVarFieldListField(
45+
NDRConfVarStrLenFieldUtf16(
4546
"Buffer",
46-
[],
47-
NDRShortField("", 0),
47+
"",
4848
size_is=lambda pkt: (pkt.MaximumLength // 2),
4949
length_is=lambda pkt: (pkt.Length // 2),
5050
)

scapy-rpc/msrpcs/ms_imsa.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,8 @@ class GetDataPaths_Request(NDRPacket):
304304

305305
class GetDataPaths_Response(NDRPacket):
306306
fields_desc = [
307-
NDRConfFieldListField(
308-
"pszBuffer",
309-
[],
310-
NDRShortField("", 0),
311-
size_is=lambda pkt: pkt.dwMDBufferSize,
307+
NDRConfStrLenFieldUtf16(
308+
"pszBuffer", "", size_is=lambda pkt: pkt.dwMDBufferSize
312309
),
313310
NDRIntField("pdwMDRequiredBufferSize", 0),
314311
NDRIntField("status", 0),
@@ -775,23 +772,17 @@ class GetChildPaths_Request(NDRPacket):
775772
NDRIntField("hMDHandle", 0),
776773
NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pszMDPath", "")),
777774
NDRIntField("cchMDBufferSize", None, size_of="pszBuffer"),
778-
NDRConfFieldListField(
779-
"pszBuffer",
780-
[],
781-
NDRShortField("", 0),
782-
size_is=lambda pkt: pkt.cchMDBufferSize,
775+
NDRConfStrLenFieldUtf16(
776+
"pszBuffer", "", size_is=lambda pkt: pkt.cchMDBufferSize
783777
),
784778
NDRFullPointerField(NDRIntField("pcchMDRequiredBufferSize", 0)),
785779
]
786780

787781

788782
class GetChildPaths_Response(NDRPacket):
789783
fields_desc = [
790-
NDRConfFieldListField(
791-
"pszBuffer",
792-
[],
793-
NDRShortField("", 0),
794-
size_is=lambda pkt: pkt.cchMDBufferSize,
784+
NDRConfStrLenFieldUtf16(
785+
"pszBuffer", "", size_is=lambda pkt: pkt.cchMDBufferSize
795786
),
796787
NDRFullPointerField(NDRIntField("pcchMDRequiredBufferSize", 0)),
797788
NDRIntField("status", 0),

scapy-rpc/msrpcs/ms_lsad.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
NDRConfFieldListField,
2323
NDRConfPacketListField,
2424
NDRConfStrLenField,
25-
NDRConfVarFieldListField,
2625
NDRConfVarStrLenField,
26+
NDRConfVarStrLenFieldUtf16,
2727
NDRConfVarStrNullField,
2828
NDRConfVarStrNullFieldUtf16,
2929
NDRContextHandle,
@@ -60,10 +60,9 @@ class RPC_UNICODE_STRING(NDRPacket):
6060
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
6161
),
6262
NDRFullEmbPointerField(
63-
NDRConfVarFieldListField(
63+
NDRConfVarStrLenFieldUtf16(
6464
"Buffer",
65-
[],
66-
NDRShortField("", 0),
65+
"",
6766
size_is=lambda pkt: (pkt.MaximumLength // 2),
6867
length_is=lambda pkt: (pkt.Length // 2),
6968
)
@@ -1070,10 +1069,9 @@ class PRPC_UNICODE_STRING(NDRPacket):
10701069
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
10711070
),
10721071
NDRFullEmbPointerField(
1073-
NDRConfVarFieldListField(
1072+
NDRConfVarStrLenFieldUtf16(
10741073
"Buffer",
1075-
[],
1076-
NDRShortField("", 0),
1074+
"",
10771075
size_is=lambda pkt: (pkt.MaximumLength // 2),
10781076
length_is=lambda pkt: (pkt.Length // 2),
10791077
)

scapy-rpc/msrpcs/ms_lsat.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
NDRConfFieldListField,
2323
NDRConfPacketListField,
2424
NDRConfStrLenField,
25-
NDRConfVarFieldListField,
2625
NDRConfVarStrLenField,
26+
NDRConfVarStrLenFieldUtf16,
2727
NDRConfVarStrNullField,
2828
NDRConfVarStrNullFieldUtf16,
2929
NDRContextHandle,
@@ -185,10 +185,9 @@ class PRPC_UNICODE_STRING(NDRPacket):
185185
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
186186
),
187187
NDRFullEmbPointerField(
188-
NDRConfVarFieldListField(
188+
NDRConfVarStrLenFieldUtf16(
189189
"Buffer",
190-
[],
191-
NDRShortField("", 0),
190+
"",
192191
size_is=lambda pkt: (pkt.MaximumLength // 2),
193192
length_is=lambda pkt: (pkt.Length // 2),
194193
)
@@ -248,10 +247,9 @@ class RPC_UNICODE_STRING(NDRPacket):
248247
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
249248
),
250249
NDRFullEmbPointerField(
251-
NDRConfVarFieldListField(
250+
NDRConfVarStrLenFieldUtf16(
252251
"Buffer",
253-
[],
254-
NDRShortField("", 0),
252+
"",
255253
size_is=lambda pkt: (pkt.MaximumLength // 2),
256254
length_is=lambda pkt: (pkt.Length // 2),
257255
)

scapy-rpc/msrpcs/ms_pac.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
NDRConfFieldListField,
2222
NDRConfPacketListField,
2323
NDRConfStrLenField,
24-
NDRConfVarFieldListField,
24+
NDRConfVarStrLenField,
25+
NDRConfVarStrLenFieldUtf16,
2526
NDRFieldListField,
2627
NDRFullEmbPointerField,
2728
NDRInt3264EnumField,
@@ -182,10 +183,9 @@ class RPC_UNICODE_STRING(NDRPacket):
182183
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
183184
),
184185
NDRFullEmbPointerField(
185-
NDRConfVarFieldListField(
186+
NDRConfVarStrLenFieldUtf16(
186187
"Buffer",
187-
[],
188-
NDRShortField("", 0),
188+
"",
189189
size_is=lambda pkt: (pkt.MaximumLength // 2),
190190
length_is=lambda pkt: (pkt.Length // 2),
191191
)
@@ -443,10 +443,9 @@ class PRPC_UNICODE_STRING(NDRPacket):
443443
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
444444
),
445445
NDRFullEmbPointerField(
446-
NDRConfVarFieldListField(
446+
NDRConfVarStrLenFieldUtf16(
447447
"Buffer",
448-
[],
449-
NDRShortField("", 0),
448+
"",
450449
size_is=lambda pkt: (pkt.MaximumLength // 2),
451450
length_is=lambda pkt: (pkt.Length // 2),
452451
)

scapy-rpc/msrpcs/ms_rrp.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
DceRpcOp,
2020
NDRByteField,
2121
NDRConfStrLenField,
22-
NDRConfVarFieldListField,
2322
NDRConfVarPacketListField,
2423
NDRConfVarStrLenField,
24+
NDRConfVarStrLenFieldUtf16,
2525
NDRContextHandle,
2626
NDRFullEmbPointerField,
2727
NDRFullPointerField,
@@ -121,10 +121,9 @@ class RPC_UNICODE_STRING(NDRPacket):
121121
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
122122
),
123123
NDRFullEmbPointerField(
124-
NDRConfVarFieldListField(
124+
NDRConfVarStrLenFieldUtf16(
125125
"Buffer",
126-
[],
127-
NDRShortField("", 0),
126+
"",
128127
size_is=lambda pkt: (pkt.MaximumLength // 2),
129128
length_is=lambda pkt: (pkt.Length // 2),
130129
)
@@ -220,10 +219,9 @@ class PRPC_UNICODE_STRING(NDRPacket):
220219
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
221220
),
222221
NDRFullEmbPointerField(
223-
NDRConfVarFieldListField(
222+
NDRConfVarStrLenFieldUtf16(
224223
"Buffer",
225-
[],
226-
NDRShortField("", 0),
224+
"",
227225
size_is=lambda pkt: (pkt.MaximumLength // 2),
228226
length_is=lambda pkt: (pkt.Length // 2),
229227
)

scapy-rpc/msrpcs/ms_rsp_initshutdown.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
NDRPacket,
1919
DceRpcOp,
2020
NDRByteField,
21-
NDRConfVarFieldListField,
21+
NDRConfVarStrLenField,
22+
NDRConfVarStrLenFieldUtf16,
2223
NDRFullEmbPointerField,
2324
NDRFullPointerField,
2425
NDRIntField,
@@ -36,10 +37,9 @@ class PREG_UNICODE_STRING(NDRPacket):
3637
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
3738
),
3839
NDRFullEmbPointerField(
39-
NDRConfVarFieldListField(
40+
NDRConfVarStrLenFieldUtf16(
4041
"Buffer",
41-
[],
42-
NDRShortField("", 0),
42+
"",
4343
size_is=lambda pkt: (pkt.MaximumLength // 2),
4444
length_is=lambda pkt: (pkt.Length // 2),
4545
)

scapy-rpc/msrpcs/ms_rsp_windowsshutdown.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
from scapy.layers.dcerpc import (
1818
NDRPacket,
1919
DceRpcOp,
20-
NDRConfVarFieldListField,
20+
NDRConfVarStrLenField,
21+
NDRConfVarStrLenFieldUtf16,
2122
NDRFullEmbPointerField,
2223
NDRFullPointerField,
2324
NDRIntField,
@@ -35,10 +36,9 @@ class PREG_UNICODE_STRING(NDRPacket):
3536
"MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2)
3637
),
3738
NDRFullEmbPointerField(
38-
NDRConfVarFieldListField(
39+
NDRConfVarStrLenFieldUtf16(
3940
"Buffer",
40-
[],
41-
NDRShortField("", 0),
41+
"",
4242
size_is=lambda pkt: (pkt.MaximumLength // 2),
4343
length_is=lambda pkt: (pkt.Length // 2),
4444
)

0 commit comments

Comments
 (0)