Skip to content

Commit 8857221

Browse files
authored
[image_picker] Fix If imageToScale is nil, the app will crash (#146682) (flutter#6514)
Fix flutter/flutter#146682 Pre-launch Checklist
1 parent cb89e65 commit 8857221

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

packages/image_picker/image_picker_ios/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.8.10+1
2+
3+
* Fixes a possible crash when calling a picker method UIGraphicsImageRenderer if imageToScale is nil.
4+
15
## 0.8.10
26

37
* Adds limit parameter to `MediaOptions` and `MultiImagePickerOptions` that sets a limit to how many media or image items can be selected.

packages/image_picker/image_picker_ios/example/ios/RunnerTests/ImageUtilTests.m

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,4 +217,24 @@ - (void)testScaledImage_WideImage_ShouldNotBeScaledAboveOriginaWidthOrHeight {
217217
XCTAssertEqual(newImage.size.height, 7);
218218
}
219219

220+
- (void)testScaledImage_ImageIsNil {
221+
UIImage *image = nil;
222+
UIImage *newImage = [FLTImagePickerImageUtil scaledImage:image
223+
maxWidth:@1440
224+
maxHeight:@1440
225+
isMetadataAvailable:YES];
226+
227+
XCTAssertEqual(newImage, nil);
228+
}
229+
230+
- (void)testScaledImage_ImageMaxWidthZeroAndMaxHeightIsZero {
231+
UIImage *image = [UIImage imageWithData:ImagePickerTestImages.JPGTestData];
232+
UIImage *newImage = [FLTImagePickerImageUtil scaledImage:image
233+
maxWidth:@0
234+
maxHeight:@0
235+
isMetadataAvailable:YES];
236+
237+
XCTAssertEqual(newImage, nil);
238+
}
239+
220240
@end

packages/image_picker/image_picker_ios/ios/Classes/FLTImagePickerImageUtil.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ - (instancetype)initWithImages:(NSArray<UIImage *> *)images interval:(NSTimeInte
2929
@implementation FLTImagePickerImageUtil : NSObject
3030

3131
static UIImage *FLTImagePickerDrawScaledImage(UIImage *imageToScale, double width, double height) {
32+
if (imageToScale == nil || width == 0 || height == 0) {
33+
return nil;
34+
}
3235
UIGraphicsImageRenderer *imageRenderer =
3336
[[UIGraphicsImageRenderer alloc] initWithSize:CGSizeMake(width, height)
3437
format:imageToScale.imageRendererFormat];

packages/image_picker/image_picker_ios/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: image_picker_ios
22
description: iOS implementation of the image_picker plugin.
33
repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker_ios
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
5-
version: 0.8.10
5+
version: 0.8.10+1
66

77
environment:
88
sdk: ^3.3.0

0 commit comments

Comments
 (0)