CFPropertyList 2.3.5 → 2.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cfpropertylist/rbBinaryCFPropertyList.rb +18 -29
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ee90589694090934993f07e976e2a3b3d963b0c
|
4
|
+
data.tar.gz: 4724d0d07877da7f55cd4d1670a2f76443c5389f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5897d5931e85e448f9f8899925971420085af1b78af282161c08890044003f1270080da3937674fce5dad24419dc4662803422b7de51075b419e16798b9e80f4
|
7
|
+
data.tar.gz: 94b561dd3c6b0c0ddfdbec0ea6918183c54e3cda1ca00d80ea05916dc56c3e200aeb65d76f7738782380e0ffd06a874937545ecf27c4f43d26e8baacd08d5234
|
@@ -123,8 +123,8 @@ module CFPropertyList
|
|
123
123
|
|
124
124
|
# read a binary int value
|
125
125
|
def read_binary_int(fname,fd,length)
|
126
|
-
if length >
|
127
|
-
raise CFFormatError.new("Integer greater than
|
126
|
+
if length > 4
|
127
|
+
raise CFFormatError.new("Integer greater than 16 bytes: #{length}")
|
128
128
|
end
|
129
129
|
|
130
130
|
nbytes = 1 << length
|
@@ -136,17 +136,12 @@ module CFPropertyList
|
|
136
136
|
when 0 then buff.unpack("C")[0]
|
137
137
|
when 1 then buff.unpack("n")[0]
|
138
138
|
when 2 then buff.unpack("N")[0]
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
# doesn't consider the number to be negative, and won't sign extend.
|
146
|
-
-(2**63 - ((hiword & 0x7fffffff) << 32 | loword))
|
147
|
-
else
|
148
|
-
hiword << 32 | loword
|
149
|
-
end
|
139
|
+
# 8 byte integers are always signed
|
140
|
+
when 3 then buff.unpack("q>")[0]
|
141
|
+
# 16 byte integers are used to represent unsigned 8 byte integers
|
142
|
+
# where the unsigned value is stored in the lower 8 bytes and the
|
143
|
+
# upper 8 bytes are unused.
|
144
|
+
when 4 then buff.unpack("Q>Q>")[1]
|
150
145
|
end
|
151
146
|
)
|
152
147
|
end
|
@@ -474,25 +469,19 @@ module CFPropertyList
|
|
474
469
|
|
475
470
|
# Codes an integer to binary format
|
476
471
|
def int_to_binary(value)
|
472
|
+
# Note: nbytes is actually an exponent. number of bytes = 2**nbytes.
|
477
473
|
nbytes = 0
|
478
|
-
nbytes = 1 if value > 0xFF # 1 byte integer
|
479
|
-
nbytes += 1 if value > 0xFFFF # 4 byte integer
|
480
|
-
nbytes += 1 if value > 0xFFFFFFFF # 8 byte integer
|
481
|
-
nbytes
|
474
|
+
nbytes = 1 if value > 0xFF # 1 byte unsigned integer
|
475
|
+
nbytes += 1 if value > 0xFFFF # 4 byte unsigned integer
|
476
|
+
nbytes += 1 if value > 0xFFFFFFFF # 8 byte unsigned integer
|
477
|
+
nbytes += 1 if value > 0x7FFFFFFFFFFFFFFF # 8 byte unsigned integer, stored in lower half of 16 bytes
|
478
|
+
nbytes = 3 if value < 0 # signed integers always stored in 8 bytes
|
482
479
|
|
483
480
|
Binary.type_bytes(0b0001, nbytes) <<
|
484
|
-
if nbytes <
|
485
|
-
[value].pack(
|
486
|
-
|
487
|
-
|
488
|
-
else "N"
|
489
|
-
end
|
490
|
-
)
|
491
|
-
else
|
492
|
-
# 64 bit signed integer; we need the higher and the lower 32 bit of the value
|
493
|
-
high_word = value >> 32
|
494
|
-
low_word = value & 0xFFFFFFFF
|
495
|
-
[high_word,low_word].pack("NN")
|
481
|
+
if nbytes < 4
|
482
|
+
[value].pack(["C", "n", "N", "q>"][nbytes])
|
483
|
+
else # nbytes == 4
|
484
|
+
[0,value].pack("Q>Q>")
|
496
485
|
end
|
497
486
|
end
|
498
487
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: CFPropertyList
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Kruse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
66
|
rubyforge_project:
|
67
|
-
rubygems_version: 2.
|
67
|
+
rubygems_version: 2.6.14
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
70
|
summary: Read, write and manipulate both binary and XML property lists as defined
|