MCPcopy Create free account
hub / github.com/bhideki/darksword / buffer

Method buffer

payloads/rce_worker.js:92–157  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

90 }
91 }
92 buffer() {
93 if (this.__buffer) return this.__buffer;
94 let bufferSize = 0;
95 for (const arg of this.argList) {
96 const alignment = Encoder.argumentAlignment(arg);
97 const remainder = bufferSize % alignment;
98 if (remainder) {
99 bufferSize += alignment - remainder;
100 }
101 bufferSize += Encoder.argumentSize(arg);
102 }
103 const buffer = new ArrayBuffer(bufferSize);
104 const view = new DataView(buffer);
105 let bufferOffset = 0;
106 for (const arg of this.argList) {
107 const alignment = Encoder.argumentAlignment(arg);
108 const remainder = bufferOffset % alignment;
109 if (remainder) {
110 bufferOffset += alignment - remainder;
111 }
112 switch (arg.type) {
113 case 'float':
114 view.setFloat32(bufferOffset, arg.value, true);
115 break;
116 case 'uint64_t':
117 view.setBigUint64(bufferOffset, arg.value, true);
118 break;
119 case 'int64_t':
120 view.setBigInt64(bufferOffset, arg.value, true);
121 break;
122 case 'uint32_t':
123 view.setUint32(bufferOffset, arg.value, true);
124 break;
125 case 'int32_t':
126 view.setInt32(bufferOffset, arg.value, true);
127 break;
128 case 'uint16_t':
129 view.setUint16(bufferOffset, arg.value, true);
130 break;
131 case 'int16_t':
132 view.setInt16(bufferOffset, arg.value, true);
133 break;
134 case 'uint8_t':
135 view.setUint8(bufferOffset, arg.value);
136 break;
137 case 'int8_t':
138 view.setInt8(bufferOffset, arg.value);
139 break;
140 case 'bool':
141 view.setInt8(bufferOffset, !!arg.value);
142 break;
143 case 'bytes':
144 const buffer_u8 = new Uint8Array(buffer);
145 if (typeof arg.value == 'string') {
146 for (let i = 0; i < arg.value.length; ++i) buffer_u8[bufferOffset + i] = arg.value.charCodeAt(i);
147 } else {
148 for (let i = 0; i < arg.value.byteLength; ++i) buffer_u8[bufferOffset + i] = arg.value[i];
149 }

Callers 2

sendMessageMethod · 0.45
sendMessageMethod · 0.45

Calls 3

ASSERT_NOT_REACHEDFunction · 0.85
argumentAlignmentMethod · 0.45
argumentSizeMethod · 0.45

Tested by

no test coverage detected