hexapdf 0.15.8 → 0.15.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4953ab56f7c03c62e4f4e2ef1aa51a8a58f98c3d24725eb86dd6bc13419bd2d2
4
- data.tar.gz: c4ac38e280f646eecf512481570ddc8670b48c9ac32601f55b24748f4044344b
3
+ metadata.gz: 24d17dfd6c8dc9e3f7014e1ea769dede6f8cea81529bb201a8447f21873d3b25
4
+ data.tar.gz: 7165a2e11983731ba2597d2e4a824415abc96936d2b58f3fb737a4fed94dcf16
5
5
  SHA512:
6
- metadata.gz: 529f8f88d9553f300b842838c1f00e8bed3e05adecfe4478f81d41fcb6431fce888f56b76b2747a65a2935cbb76a6792dce2b1f480dcb120634e1932e461c883
7
- data.tar.gz: 9e71874d7901145045fab5791ca09b3ec9cc8f9a9243366b0329cb2570c58408d4595ee37e995a22ce2c099127bc6bdc732e5d3562bde834be2fc57aa3f35b8a
6
+ metadata.gz: 244332a4f024c90cf6344b462ed422a5f73b32d3a4d04d0dcdadc6e7ede2cd0724f7a3329fa3aad68c99e47f49a9dff66806d9b8b152b9551eaecd7365c807d4
7
+ data.tar.gz: 06c4b9fd5ecd8f045a37e85ce4a6539f52b48bb16fb685290bcc2a0210b5f2e66bcfa9b7efb1115c45dd1618de9421c479d7a66d84556d1b9c37b19b1f8b6075
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.15.9 - 2021-09-04
2
+
3
+ ### Fixed
4
+
5
+ * Handling of files that contain stream length values that are indirect objects
6
+ not referring to a number
7
+
8
+
1
9
  ## 0.15.8 - 2021-08-16
2
10
 
3
11
  ### Fixed
@@ -165,7 +165,7 @@ module HexaPDF
165
165
  else
166
166
  0
167
167
  end
168
- @tokenizer.pos = pos + length
168
+ @tokenizer.pos = pos + length rescue pos
169
169
 
170
170
  tok = @tokenizer.next_token
171
171
  unless tok.kind_of?(Tokenizer::Token) && tok == 'endstream'
@@ -37,6 +37,6 @@
37
37
  module HexaPDF
38
38
 
39
39
  # The version of HexaPDF.
40
- VERSION = '0.15.8'
40
+ VERSION = '0.15.9'
41
41
 
42
42
  end
@@ -113,13 +113,21 @@ describe HexaPDF::Parser do
113
113
  assert_nil(object)
114
114
  end
115
115
 
116
- it "recovers from an invalid stream length value" do
116
+ it "recovers from a stream length value that doesn't reflect the correct length" do
117
117
  create_parser("1 0 obj<</Length 4>> stream\n12endstream endobj")
118
118
  obj, _, _, stream = @parser.parse_indirect_object
119
119
  assert_equal(2, obj[:Length])
120
120
  assert_equal('12', TestHelper.collector(stream.fiber))
121
121
  end
122
122
 
123
+ it "recovers from an invalid stream length value" do
124
+ create_parser("1 0 obj<</Length 2 0 R>> stream\n12endstream endobj")
125
+ @document.add([5], oid: 2)
126
+ obj, _, _, stream = @parser.parse_indirect_object
127
+ assert_equal(2, obj[:Length])
128
+ assert_equal('12', TestHelper.collector(stream.fiber))
129
+ end
130
+
123
131
  it "works even if the keyword endobj is missing or mangled" do
124
132
  create_parser("1 0 obj<</Length 4>>5")
125
133
  object, * = @parser.parse_indirect_object
@@ -40,7 +40,7 @@ describe HexaPDF::Writer do
40
40
  219
41
41
  %%EOF
42
42
  3 0 obj
43
- <</Producer(HexaPDF version 0.15.8)>>
43
+ <</Producer(HexaPDF version 0.15.9)>>
44
44
  endobj
45
45
  xref
46
46
  3 1
@@ -72,7 +72,7 @@ describe HexaPDF::Writer do
72
72
  141
73
73
  %%EOF
74
74
  6 0 obj
75
- <</Producer(HexaPDF version 0.15.8)>>
75
+ <</Producer(HexaPDF version 0.15.9)>>
76
76
  endobj
77
77
  2 0 obj
78
78
  <</Length 10>>stream
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hexapdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.8
4
+ version: 0.15.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-16 00:00:00.000000000 Z
11
+ date: 2021-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse