|
22 | 22 | var common = require('../common');
|
23 | 23 | var assert = require('assert');
|
24 | 24 |
|
| 25 | +var SlowBuffer = require('buffer').SlowBuffer; |
25 | 26 | var Buffer = require('buffer').Buffer;
|
26 | 27 |
|
27 | 28 | var b = Buffer(1024); // safe constructor
|
@@ -745,3 +746,47 @@ assert.throws(function() {
|
745 | 746 | assert.throws(function() {
|
746 | 747 | new Buffer(0xFFFFFFFFF);
|
747 | 748 | }, TypeError);
|
| 749 | + |
| 750 | +// SlowBuffer sanity checks. |
| 751 | +assert.throws(function() { |
| 752 | + var len = 0xfffff; |
| 753 | + var sbuf = new SlowBuffer(len); |
| 754 | + var buf = new Buffer(sbuf, len, 0); |
| 755 | + SlowBuffer.makeFastBuffer(sbuf, buf, -len, len); // Should throw. |
| 756 | + for (var i = 0; i < len; ++i) buf[i] = 0x42; // Try to force segfault. |
| 757 | +}, RangeError); |
| 758 | + |
| 759 | +assert.throws(function() { |
| 760 | + var len = 0xfffff; |
| 761 | + var sbuf = new SlowBuffer(len); |
| 762 | + var buf = new Buffer(sbuf, len, -len); // Should throw. |
| 763 | + for (var i = 0; i < len; ++i) buf[i] = 0x42; // Try to force segfault. |
| 764 | +}, RangeError); |
| 765 | + |
| 766 | +assert.throws(function() { |
| 767 | + var len = 0xfffff; |
| 768 | + var sbuf = new SlowBuffer(len); |
| 769 | + sbuf = sbuf.slice(-len); // Should throw. |
| 770 | + for (var i = 0; i < len; ++i) sbuf[i] = 0x42; // Try to force segfault. |
| 771 | +}, RangeError); |
| 772 | + |
| 773 | +assert.throws(function() { |
| 774 | + var sbuf = new SlowBuffer(1); |
| 775 | + var buf = new Buffer(sbuf, 1, 0); |
| 776 | + buf.length = 0xffffffff; |
| 777 | + buf.slice(0xffffff0, 0xffffffe); // Should throw. |
| 778 | +}, Error); |
| 779 | + |
| 780 | +assert.throws(function() { |
| 781 | + var sbuf = new SlowBuffer(8); |
| 782 | + var buf = new Buffer(sbuf, 8, 0); |
| 783 | + buf.slice(-8); // Should throw. Throws Error instead of RangeError |
| 784 | + // for the sake of v0.8 compatibility. |
| 785 | +}, Error); |
| 786 | + |
| 787 | +assert.throws(function() { |
| 788 | + var sbuf = new SlowBuffer(16); |
| 789 | + var buf = new Buffer(sbuf, 8, 8); |
| 790 | + buf.slice(-8); // Should throw. Throws Error instead of RangeError |
| 791 | + // for the sake of v0.8 compatibility. |
| 792 | +}, Error); |
0 commit comments