free-image 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,5 +1,10 @@
1
1
  = Release History
2
2
 
3
+ == 0.6.2 / 2011-09-06 Charlie Savage
4
+
5
+ * Add null pointer checks when loading images
6
+ * Add null pointer check when creating a new image
7
+
3
8
  == 0.6.1 / 2011-09-06 Charlie Savage
4
9
 
5
10
  * Use release version on windows of FreeImage, not debug version.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'free-image'
5
- spec.version = '0.6.1'
5
+ spec.version = '0.6.2'
6
6
  spec.summary = 'Ruby Bindings for the Free Image Library'
7
7
  spec.description = <<-EOS
8
8
  FreeImage is an Open Source library project for developers who would like to support
@@ -98,6 +98,12 @@ module FreeImage
98
98
  end
99
99
 
100
100
  def self.new(ptr, source = nil)
101
+ # Ptr must be set
102
+ if ptr.null?
103
+ error = Error.new(:unknown, "Cannot create a bitmap from a null pointer")
104
+ raise(error)
105
+ end
106
+
101
107
  bitmap = super(ptr, source)
102
108
 
103
109
  if block_given?
@@ -166,6 +166,13 @@ module FreeImage
166
166
  end
167
167
 
168
168
  ptr = load(format, flags)
169
+
170
+ # Make sure we didn't get a null pointer. This can
171
+ # happen - see test_file for example#test_corrupt_wrong_format
172
+ if ptr.null?
173
+ error = Error.new(:unknown, "Could not load the image")
174
+ raise(error)
175
+ end
169
176
  Bitmap.new(ptr, self)
170
177
  end
171
178
  end
Binary file
@@ -34,6 +34,14 @@ class BitmapTest < Test::Unit::TestCase
34
34
  end
35
35
  end
36
36
 
37
+ def test_new_from_nil
38
+ ptr = FFI::Pointer::NULL
39
+ error = assert_raise(FreeImage::Error) do
40
+ FreeImage::Bitmap.new(ptr)
41
+ end
42
+ assert_equal("Cannot create a bitmap from a null pointer", error.message)
43
+ end
44
+
37
45
  def test_clone
38
46
  image = lena_image
39
47
  clone = image.clone
@@ -8,7 +8,7 @@ class FIFileTest < Test::Unit::TestCase
8
8
  path = image_path(image)
9
9
  FreeImage::File.new(path)
10
10
  end
11
-
11
+
12
12
  def test_format
13
13
  assert_equal(:png, file.format)
14
14
  end
@@ -48,4 +48,23 @@ class FIFileTest < Test::Unit::TestCase
48
48
  tmp_file.close
49
49
  tmp_file.unlink
50
50
  end
51
+
52
+ def test_corrupt
53
+ path = image_path('corrupt.jpg')
54
+ file = FreeImage::File.new(path)
55
+ error = assert_raise(FreeImage::Error) do
56
+ file.open
57
+ end
58
+ assert_equal("Not a JPEG file: starts with 0xaa 0xc0", error.message)
59
+ end
60
+
61
+ def test_corrupt_wrong_format
62
+ path = image_path('corrupt.jpg')
63
+ file = FreeImage::File.new(path)
64
+ error = assert_raise(FreeImage::Error) do
65
+ # Be sneaky - say png!
66
+ file.open(:png)
67
+ end
68
+ assert_equal("Could not load the image", error.message)
69
+ end
51
70
  end
@@ -50,4 +50,26 @@ class IoTest < Test::Unit::TestCase
50
50
  tmp_file.close
51
51
  tmp_file.unlink
52
52
  end
53
+
54
+ def test_corrupt
55
+ path = image_path('corrupt.jpg')
56
+ file = File.open(path)
57
+ io = FreeImage::IO.new(file)
58
+
59
+ error = assert_raise(FreeImage::Error) do
60
+ io.open
61
+ end
62
+ assert_equal("Cannot load :unknown image format", error.message)
63
+ end
64
+
65
+ def test_corrupt_wrong_format
66
+ path = image_path('corrupt.jpg')
67
+ file = File.open(path)
68
+ io = FreeImage::IO.new(file)
69
+
70
+ error = assert_raise(FreeImage::Error) do
71
+ io.open(:png)
72
+ end
73
+ assert_equal("Could not load the image", error.message)
74
+ end
53
75
  end
@@ -62,4 +62,24 @@ class MemoryTest < Test::Unit::TestCase
62
62
  assert_equal(dst.memory.bytes.encoding, Encoding::BINARY)
63
63
  end
64
64
  end
65
+
66
+ def test_corrupt
67
+ data = image_data('corrupt.jpg')
68
+ memory = FreeImage::Memory.new(data)
69
+
70
+ error = assert_raise(FreeImage::Error) do
71
+ memory.open
72
+ end
73
+ assert_equal("Cannot load :unknown image format", error.message)
74
+ end
75
+
76
+ def test_corrupt_wrong_format
77
+ data = image_data('corrupt.jpg')
78
+ memory = FreeImage::Memory.new(data)
79
+
80
+ error = assert_raise(FreeImage::Error) do
81
+ memory.open(:png)
82
+ end
83
+ assert_equal("Could not load the image", error.message)
84
+ end
65
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: free-image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
16
- requirement: &24058800 !ruby/object:Gem::Requirement
16
+ requirement: &23576770 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.10
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *24058800
24
+ version_requirements: *23576770
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hanna-nouveau
27
- requirement: &24058512 !ruby/object:Gem::Requirement
27
+ requirement: &23576430 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *24058512
35
+ version_requirements: *23576430
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: open4
38
- requirement: &24058212 !ruby/object:Gem::Requirement
38
+ requirement: &23575760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *24058212
46
+ version_requirements: *23575760
47
47
  description: ! " FreeImage is an Open Source library project for developers who
48
48
  would like to support\n popular graphics image formats like PNG, BMP, JPEG, TIFF
49
49
  and others as needed by\n today's multimedia applications. FreeImage is easy
@@ -91,6 +91,7 @@ files:
91
91
  - lib/free-image/types/rgb_triple.rb
92
92
  - lib/free-image.rb
93
93
  - test/cookbook.rb
94
+ - test/images/corrupt.jpg
94
95
  - test/images/gradient.png
95
96
  - test/images/lena.png
96
97
  - test/images/lena.tiff