pixl-server-storage 3.0.9 → 3.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -248,6 +248,13 @@ module.exports = Class.create({
248
248
  return callback( err, null );
249
249
  }
250
250
 
251
+ // validate byte range, now that we have the head info
252
+ if ((start < 0) || (start >= buf.length) || (end < start) || (end >= buf.length)) {
253
+ download.destroy();
254
+ callback( new Error("Invalid byte range (" + start + '-' + end + ") for key: " + key + " (len: " + buf.length + ")"), null );
255
+ return;
256
+ }
257
+
251
258
  var range = buf.slice(start, end + 1);
252
259
  var stream = new BufferStream(range);
253
260
  callback(null, stream, { mod: 1, len: buf.length });
@@ -479,6 +479,13 @@ module.exports = Class.create({
479
479
  return callback( err, null );
480
480
  }
481
481
 
482
+ // validate byte range, now that we have the head info
483
+ if ((start < 0) || (start >= stats.size) || (end < start) || (end >= stats.size)) {
484
+ download.destroy();
485
+ callback( new Error("Invalid byte range (" + start + '-' + end + ") for key: " + key + " (len: " + stats.size + ")"), null );
486
+ return;
487
+ }
488
+
482
489
  // create read stream
483
490
  var inp = fs.createReadStream( file, { start, end } );
484
491
 
package/engines/Redis.js CHANGED
@@ -252,6 +252,13 @@ module.exports = Class.create({
252
252
  return callback( err, null );
253
253
  }
254
254
 
255
+ // validate byte range, now that we have the head info
256
+ if ((start < 0) || (start >= buf.length) || (end < start) || (end >= buf.length)) {
257
+ download.destroy();
258
+ callback( new Error("Invalid byte range (" + start + '-' + end + ") for key: " + key + " (len: " + buf.length + ")"), null );
259
+ return;
260
+ }
261
+
255
262
  var range = buf.slice(start, end + 1);
256
263
  var stream = new BufferStream(range);
257
264
  callback(null, stream, { mod: 1, len: buf.length });
@@ -269,6 +269,13 @@ module.exports = Class.create({
269
269
  return callback( err, null );
270
270
  }
271
271
 
272
+ // validate byte range, now that we have the head info
273
+ if ((start < 0) || (start >= buf.length) || (end < start) || (end >= buf.length)) {
274
+ download.destroy();
275
+ callback( new Error("Invalid byte range (" + start + '-' + end + ") for key: " + key + " (len: " + buf.length + ")"), null );
276
+ return;
277
+ }
278
+
272
279
  var range = buf.slice(start, end + 1);
273
280
  var stream = new BufferStream(range);
274
281
  callback(null, stream, { mod: 1, len: buf.length });
package/engines/S3.js CHANGED
@@ -365,6 +365,13 @@ module.exports = Class.create({
365
365
  return;
366
366
  }
367
367
 
368
+ // validate byte range, now that we have the head info
369
+ if ((start < 0) || (start >= data.ContentLength) || (end < start) || (end >= data.ContentLength)) {
370
+ download.destroy();
371
+ callback( new Error("Invalid byte range (" + start + '-' + end + ") for key: " + key + " (len: " + data.ContentLength + ")"), null );
372
+ return;
373
+ }
374
+
368
375
  proceed = true;
369
376
  callback( null, download, {
370
377
  mod: Math.floor((new Date(data.LastModified)).getTime() / 1000),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixl-server-storage",
3
- "version": "3.0.9",
3
+ "version": "3.0.10",
4
4
  "description": "A key/value/list storage component for the pixl-server framework.",
5
5
  "author": "Joseph Huckaby <jhuckaby@gmail.com>",
6
6
  "homepage": "https://github.com/jhuckaby/pixl-server-storage",