Guard against InitImage failure #150

Protects against truncated image headers
This commit is contained in:
Lovell Fuller
2015-01-20 10:38:44 +00:00
parent 35c53f78c8
commit c93f79daa7
7 changed files with 52 additions and 3 deletions

View File

@@ -62,6 +62,10 @@ class MetadataWorker : public NanAsyncWorker {
imageType = DetermineImageType(baton->bufferIn, baton->bufferInLength);
if (imageType != ImageType::UNKNOWN) {
image = InitImage(imageType, baton->bufferIn, baton->bufferInLength, VIPS_ACCESS_RANDOM);
if (image == NULL) {
(baton->err).append("Input buffer has corrupt header");
imageType = ImageType::UNKNOWN;
}
} else {
(baton->err).append("Input buffer contains unsupported image format");
}
@@ -70,8 +74,12 @@ class MetadataWorker : public NanAsyncWorker {
imageType = DetermineImageType(baton->fileIn.c_str());
if (imageType != ImageType::UNKNOWN) {
image = InitImage(imageType, baton->fileIn.c_str(), VIPS_ACCESS_RANDOM);
if (image == NULL) {
(baton->err).append("Input file has corrupt header");
imageType = ImageType::UNKNOWN;
}
} else {
(baton->err).append("File is of an unsupported image format");
(baton->err).append("Input file is of an unsupported image format");
}
}
if (image != NULL && imageType != ImageType::UNKNOWN) {

View File

@@ -153,6 +153,10 @@ class ResizeWorker : public NanAsyncWorker {
inputImageType = DetermineImageType(baton->bufferIn, baton->bufferInLength);
if (inputImageType != ImageType::UNKNOWN) {
image = InitImage(inputImageType, baton->bufferIn, baton->bufferInLength, baton->accessMethod);
if (image == NULL) {
(baton->err).append("Input buffer has corrupt header");
inputImageType = ImageType::UNKNOWN;
}
} else {
(baton->err).append("Input buffer contains unsupported image format");
}
@@ -161,8 +165,12 @@ class ResizeWorker : public NanAsyncWorker {
inputImageType = DetermineImageType(baton->fileIn.c_str());
if (inputImageType != ImageType::UNKNOWN) {
image = InitImage(inputImageType, baton->fileIn.c_str(), baton->accessMethod);
if (image == NULL) {
(baton->err).append("Input file has corrupt header");
inputImageType = ImageType::UNKNOWN;
}
} else {
(baton->err).append("File is of an unsupported image format");
(baton->err).append("Input file is of an unsupported image format");
}
}
if (inputImageType == ImageType::UNKNOWN) {