mirror of
https://github.com/lovell/sharp.git
synced 2026-02-04 13:46:19 +01:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b91875d3d9 | ||
|
|
a0568ec0c3 | ||
|
|
48e3ea5e29 | ||
|
|
93b29057e4 |
@@ -4,11 +4,23 @@
|
||||
|
||||
Requires libvips v8.12.2
|
||||
|
||||
### v0.30.6 - 30th May 2022
|
||||
|
||||
* Allow values for `limitInputPixels` larger than 32-bit.
|
||||
[#3238](https://github.com/lovell/sharp/issues/3238)
|
||||
|
||||
* Ensure brew-installed `vips` can be detected (regression in 0.30.5).
|
||||
[#3239](https://github.com/lovell/sharp/issues/3239)
|
||||
|
||||
### v0.30.5 - 23rd May 2022
|
||||
|
||||
* Install: pass `PKG_CONFIG_PATH` via env rather than substitution.
|
||||
[@dwisiswant0](https://github.com/dwisiswant0)
|
||||
|
||||
* Add support for `--libc` flag to improve cross-platform installation.
|
||||
[#3160](https://github.com/lovell/sharp/pull/3160)
|
||||
[@joonamo](https://github.com/joonamo)
|
||||
|
||||
* Allow installation of prebuilt libvips binaries from filesystem.
|
||||
[#3196](https://github.com/lovell/sharp/pull/3196)
|
||||
[@ankurparihar](https://github.com/ankurparihar)
|
||||
|
||||
@@ -245,3 +245,6 @@ GitHub: https://github.com/Brodan
|
||||
|
||||
Name: Ankur Parihar
|
||||
GitHub: https://github.com/ankurparihar
|
||||
|
||||
Name: Joona Heinikoski
|
||||
GitHub: https://github.com/joonamo
|
||||
|
||||
@@ -86,10 +86,10 @@ function _createInputDescriptor (input, inputOptions, containerOptions) {
|
||||
inputDescriptor.limitInputPixels = inputOptions.limitInputPixels
|
||||
? Math.pow(0x3FFF, 2)
|
||||
: 0;
|
||||
} else if (is.integer(inputOptions.limitInputPixels) && inputOptions.limitInputPixels >= 0) {
|
||||
} else if (is.integer(inputOptions.limitInputPixels) && is.inRange(inputOptions.limitInputPixels, 0, Number.MAX_SAFE_INTEGER)) {
|
||||
inputDescriptor.limitInputPixels = inputOptions.limitInputPixels;
|
||||
} else {
|
||||
throw is.invalidParameterError('limitInputPixels', 'integer >= 0', inputOptions.limitInputPixels);
|
||||
throw is.invalidParameterError('limitInputPixels', 'positive integer', inputOptions.limitInputPixels);
|
||||
}
|
||||
}
|
||||
// unlimited
|
||||
|
||||
@@ -68,6 +68,7 @@ const globalLibvipsVersion = function () {
|
||||
const globalLibvipsVersion = spawnSync('pkg-config --modversion vips-cpp', {
|
||||
...spawnSyncOptions,
|
||||
env: {
|
||||
...env,
|
||||
PKG_CONFIG_PATH: pkgConfigPath()
|
||||
}
|
||||
}).stdout;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "sharp",
|
||||
"description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",
|
||||
"version": "0.30.5",
|
||||
"version": "0.30.6",
|
||||
"author": "Lovell Fuller <npm@lovell.info>",
|
||||
"homepage": "https://github.com/lovell/sharp",
|
||||
"contributors": [
|
||||
|
||||
@@ -48,6 +48,9 @@ namespace sharp {
|
||||
int32_t AttrAsInt32(Napi::Object obj, unsigned int const attr) {
|
||||
return obj.Get(attr).As<Napi::Number>().Int32Value();
|
||||
}
|
||||
int64_t AttrAsInt64(Napi::Object obj, std::string attr) {
|
||||
return obj.Get(attr).As<Napi::Number>().Int64Value();
|
||||
}
|
||||
double AttrAsDouble(Napi::Object obj, std::string attr) {
|
||||
return obj.Get(attr).As<Napi::Number>().DoubleValue();
|
||||
}
|
||||
@@ -131,7 +134,7 @@ namespace sharp {
|
||||
}
|
||||
}
|
||||
// Limit input images to a given number of pixels, where pixels = width * height
|
||||
descriptor->limitInputPixels = AttrAsUint32(input, "limitInputPixels");
|
||||
descriptor->limitInputPixels = static_cast<uint64_t>(AttrAsInt64(input, "limitInputPixels"));
|
||||
// Allow switch from random to sequential access
|
||||
descriptor->access = AttrAsBool(input, "sequentialRead") ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_RANDOM;
|
||||
// Remove safety features and allow unlimited SVG/PNG input
|
||||
@@ -439,7 +442,7 @@ namespace sharp {
|
||||
}
|
||||
// Limit input images to a given number of pixels, where pixels = width * height
|
||||
if (descriptor->limitInputPixels > 0 &&
|
||||
static_cast<uint64_t>(image.width() * image.height()) > static_cast<uint64_t>(descriptor->limitInputPixels)) {
|
||||
static_cast<uint64_t>(image.width() * image.height()) > descriptor->limitInputPixels) {
|
||||
throw vips::VError("Input image exceeds pixel limit");
|
||||
}
|
||||
return std::make_tuple(image, imageType);
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace sharp {
|
||||
std::string file;
|
||||
char *buffer;
|
||||
VipsFailOn failOn;
|
||||
int limitInputPixels;
|
||||
uint64_t limitInputPixels;
|
||||
bool unlimited;
|
||||
VipsAccess access;
|
||||
size_t bufferLength;
|
||||
|
||||
@@ -706,6 +706,12 @@ describe('Input/output', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('Invalid fails - integer overflow', () => {
|
||||
assert.throws(() => {
|
||||
sharp({ limitInputPixels: Number.MAX_SAFE_INTEGER + 1 });
|
||||
});
|
||||
});
|
||||
|
||||
it('Invalid fails - string', () => {
|
||||
assert.throws(() => {
|
||||
sharp({ limitInputPixels: 'fail' });
|
||||
|
||||
Reference in New Issue
Block a user