ModernUO/Projects/Server/PropertyList
Kamron Batman c94084b48f fix(opl): cap per-property length + chunk OplTextBlock to avoid legacy 2D-client crash
The legacy 2D (EA) client copies each OPL property's argument into a fixed ~512-char
(1024-byte) buffer; a single property that exceeds it overruns the heap and crashes the
client. OplTextBlock previously emitted one entry regardless of length.

- ObjectPropertyList.MaxArgumentLength (504 chars, under the ~510 ceiling).
- ClampArgument backstop in both InternalAdd paths (span + interpolation): truncates an
  oversized argument and logs the offending entity/cliloc.
- AddChunked(ReadOnlySpan<char>): splits newline-joined text across multiple cycling
  passthrough properties, breaking only at '\n', so none exceeds the cap.
- OplTextBlock.Dispose emits via AddChunked; AddChunked added to IPropertyList.
2026-06-26 00:45:51 -07:00
..
IObjectPropertyListEntity.cs fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
IPropertyList.cs fix(opl): cap per-property length + chunk OplTextBlock to avoid legacy 2D-client crash 2026-06-26 00:45:51 -07:00
ObjectPropertyList.cs fix(opl): cap per-property length + chunk OplTextBlock to avoid legacy 2D-client crash 2026-06-26 00:45:51 -07:00
OplTextBlock.cs fix(opl): cap per-property length + chunk OplTextBlock to avoid legacy 2D-client crash 2026-06-26 00:45:51 -07:00