await loadConfig()
})
-async function respond (res: http.ServerResponse, data: Buffer[]): Promise<void> {
+async function respond (res: http.ServerResponse, dataBuffer: Buffer[]): Promise<void> {
let statusCode: number = 500
let headers: http.OutgoingHttpHeaders = { 'Content-Type': 'application/json' }
let response: string = 'request failed'
try {
- const datastring = Buffer.concat(data).toString()
+ const datastring = Buffer.concat(dataBuffer).toString()
if (Buffer.byteLength(datastring) > MAX_BODY_SIZE) {
throw new Error('Data too large.')
}
- const { action, hash, work, difficulty }: WorkGenerateRequest | WorkValidateRequest = JSON.parse(datastring)
+ const data: WorkGenerateRequest | WorkValidateRequest = JSON.parse(datastring)
+ if (Object.getPrototypeOf(data) !== Object.prototype) {
+ throw new Error('Data corrupted.')
+ }
+ const { action, hash, work, difficulty } = data
if (action !== 'work_generate' && action !== 'work_validate') {
throw new Error('Action must be work_generate or work_validate.')
}