Add sanity check for arguments

This commit is contained in:
junderw 2019-10-01 14:54:57 +09:00
parent 41bf2cd03d
commit 7ef3fe4996
No known key found for this signature in database
GPG key ID: B256185D3A971908
3 changed files with 46 additions and 1 deletions

View file

@ -143,6 +143,17 @@ class Psbt {
return this; return this;
} }
addInput(inputData) { addInput(inputData) {
if (
arguments.length > 1 ||
!inputData ||
inputData.hash === undefined ||
inputData.index === undefined
) {
throw new Error(
`Invalid arguments for Psbt.addInput. ` +
`Requires single object with at least [hash] and [index]`,
);
}
checkInputsForPartialSig(this.data.inputs, 'addInput'); checkInputsForPartialSig(this.data.inputs, 'addInput');
const c = this.__CACHE; const c = this.__CACHE;
this.data.addInput(inputData); this.data.addInput(inputData);
@ -163,6 +174,17 @@ class Psbt {
return this; return this;
} }
addOutput(outputData) { addOutput(outputData) {
if (
arguments.length > 1 ||
!outputData ||
outputData.value === undefined ||
(outputData.address === undefined && outputData.script === undefined)
) {
throw new Error(
`Invalid arguments for Psbt.addOutput. ` +
`Requires single object with at least [script or address] and [value]`,
);
}
checkInputsForPartialSig(this.data.inputs, 'addOutput'); checkInputsForPartialSig(this.data.inputs, 'addOutput');
const { address } = outputData; const { address } = outputData;
if (typeof address === 'string') { if (typeof address === 'string') {

View file

@ -311,7 +311,7 @@
"inputData": { "inputData": {
"hash": 42 "hash": 42
}, },
"exception": "Error adding input." "exception": "Invalid arguments for Psbt\\.addInput\\. Requires single object with at least \\[hash\\] and \\[index\\]"
}, },
{ {
"description": "should be equal", "description": "should be equal",

View file

@ -182,6 +182,17 @@ export class Psbt {
} }
addInput(inputData: PsbtInputExtended): this { addInput(inputData: PsbtInputExtended): this {
if (
arguments.length > 1 ||
!inputData ||
inputData.hash === undefined ||
inputData.index === undefined
) {
throw new Error(
`Invalid arguments for Psbt.addInput. ` +
`Requires single object with at least [hash] and [index]`,
);
}
checkInputsForPartialSig(this.data.inputs, 'addInput'); checkInputsForPartialSig(this.data.inputs, 'addInput');
const c = this.__CACHE; const c = this.__CACHE;
this.data.addInput(inputData); this.data.addInput(inputData);
@ -205,6 +216,18 @@ export class Psbt {
} }
addOutput(outputData: PsbtOutputExtended): this { addOutput(outputData: PsbtOutputExtended): this {
if (
arguments.length > 1 ||
!outputData ||
outputData.value === undefined ||
((outputData as any).address === undefined &&
(outputData as any).script === undefined)
) {
throw new Error(
`Invalid arguments for Psbt.addOutput. ` +
`Requires single object with at least [script or address] and [value]`,
);
}
checkInputsForPartialSig(this.data.inputs, 'addOutput'); checkInputsForPartialSig(this.data.inputs, 'addOutput');
const { address } = outputData as any; const { address } = outputData as any;
if (typeof address === 'string') { if (typeof address === 'string') {