|
23 | 23 | NDRConfPacketListField, |
24 | 24 | NDRConfStrLenField, |
25 | 25 | NDRConfVarStrLenField, |
| 26 | + NDRConfVarStrLenFieldUtf16, |
26 | 27 | NDRConfVarStrNullField, |
27 | 28 | NDRConfVarStrNullFieldUtf16, |
28 | 29 | NDRFieldListField, |
@@ -131,9 +132,18 @@ class NETLOGON_LOGON_INFO_CLASS(IntEnum): |
131 | 132 | class UNICODE_STRING(NDRPacket): |
132 | 133 | ALIGNMENT = (4, 8) |
133 | 134 | fields_desc = [ |
134 | | - NDRShortField("Length", 0), |
135 | | - NDRShortField("MaximumLength", 0), |
136 | | - NDRFullEmbPointerField(NDRShortField("Buffer", 0)), |
| 135 | + NDRShortField("Length", None, size_of="Buffer", adjust=lambda _, x: (x * 2)), |
| 136 | + NDRShortField( |
| 137 | + "MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2) |
| 138 | + ), |
| 139 | + NDRFullEmbPointerField( |
| 140 | + NDRConfVarStrLenFieldUtf16( |
| 141 | + "Buffer", |
| 142 | + "", |
| 143 | + size_is=lambda pkt: (pkt.MaximumLength // 2), |
| 144 | + length_is=lambda pkt: (pkt.Length // 2), |
| 145 | + ) |
| 146 | + ), |
137 | 147 | ] |
138 | 148 |
|
139 | 149 |
|
@@ -1455,9 +1465,18 @@ class PNETLOGON_DELTA_POLICY(NDRPacket): |
1455 | 1465 | class PUNICODE_STRING(NDRPacket): |
1456 | 1466 | ALIGNMENT = (4, 8) |
1457 | 1467 | fields_desc = [ |
1458 | | - NDRShortField("Length", 0), |
1459 | | - NDRShortField("MaximumLength", 0), |
1460 | | - NDRFullEmbPointerField(NDRShortField("Buffer", 0)), |
| 1468 | + NDRShortField("Length", None, size_of="Buffer", adjust=lambda _, x: (x * 2)), |
| 1469 | + NDRShortField( |
| 1470 | + "MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2) |
| 1471 | + ), |
| 1472 | + NDRFullEmbPointerField( |
| 1473 | + NDRConfVarStrLenFieldUtf16( |
| 1474 | + "Buffer", |
| 1475 | + "", |
| 1476 | + size_is=lambda pkt: (pkt.MaximumLength // 2), |
| 1477 | + length_is=lambda pkt: (pkt.Length // 2), |
| 1478 | + ) |
| 1479 | + ), |
1461 | 1480 | ] |
1462 | 1481 |
|
1463 | 1482 |
|
|
0 commit comments