Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
L
libplist
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pwn
libplist
Commits
c67ab063
Commit
c67ab063
authored
8 years ago
by
Nikias Bassen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bplist: Mass-rename 'dict_size' and 'param_dict_size' to more appropriate 'ref_size'
parent
3955a281
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
30 deletions
+30
-30
bplist.c
src/bplist.c
+30
-30
No files found.
src/bplist.c
View file @
c67ab063
...
...
@@ -194,7 +194,7 @@ struct bplist_data {
const
char
*
data
;
uint64_t
size
;
uint64_t
num_objects
;
uint8_t
dict
_size
;
uint8_t
ref
_size
;
uint8_t
offset_size
;
const
char
*
offset_table
;
uint32_t
level
;
...
...
@@ -400,19 +400,19 @@ static plist_t parse_dict_node(struct bplist_data *bplist, const char** bnode, u
plist_t
node
=
node_create
(
NULL
,
data
);
for
(
j
=
0
;
j
<
data
->
length
;
j
++
)
{
str_i
=
j
*
bplist
->
dict
_size
;
str_j
=
(
j
+
size
)
*
bplist
->
dict
_size
;
str_i
=
j
*
bplist
->
ref
_size
;
str_j
=
(
j
+
size
)
*
bplist
->
ref
_size
;
index1_ptr
=
(
*
bnode
)
+
str_i
;
index2_ptr
=
(
*
bnode
)
+
str_j
;
if
((
index1_ptr
<
bplist
->
data
||
index1_ptr
+
bplist
->
dict
_size
>=
end_data
)
||
(
index2_ptr
<
bplist
->
data
||
index2_ptr
+
bplist
->
dict
_size
>=
end_data
))
{
if
((
index1_ptr
<
bplist
->
data
||
index1_ptr
+
bplist
->
ref
_size
>=
end_data
)
||
(
index2_ptr
<
bplist
->
data
||
index2_ptr
+
bplist
->
ref
_size
>=
end_data
))
{
plist_free
(
node
);
return
NULL
;
}
index1
=
UINT_TO_HOST
(
index1_ptr
,
bplist
->
dict
_size
);
index2
=
UINT_TO_HOST
(
index2_ptr
,
bplist
->
dict
_size
);
index1
=
UINT_TO_HOST
(
index1_ptr
,
bplist
->
ref
_size
);
index2
=
UINT_TO_HOST
(
index2_ptr
,
bplist
->
ref
_size
);
if
(
index1
>=
bplist
->
num_objects
)
{
plist_free
(
node
);
...
...
@@ -474,8 +474,8 @@ static plist_t parse_array_node(struct bplist_data *bplist, const char** bnode,
plist_t
node
=
node_create
(
NULL
,
data
);
for
(
j
=
0
;
j
<
data
->
length
;
j
++
)
{
str_j
=
j
*
bplist
->
dict
_size
;
index1
=
UINT_TO_HOST
((
*
bnode
)
+
str_j
,
bplist
->
dict
_size
);
str_j
=
j
*
bplist
->
ref
_size
;
index1
=
UINT_TO_HOST
((
*
bnode
)
+
str_j
,
bplist
->
ref
_size
);
if
(
index1
>=
bplist
->
num_objects
)
{
plist_free
(
node
);
...
...
@@ -743,7 +743,7 @@ PLIST_API void plist_from_bin(const char *plist_bin, uint32_t length, plist_t *
bplist
.
data
=
plist_bin
;
bplist
.
size
=
length
;
bplist
.
num_objects
=
num_objects
;
bplist
.
dict
_size
=
ref_size
;
bplist
.
ref
_size
=
ref_size
;
bplist
.
offset_size
=
offset_size
;
bplist
.
offset_table
=
offset_table
;
bplist
.
level
=
0
;
...
...
@@ -950,7 +950,7 @@ static void write_unicode(bytearray_t * bplist, uint16_t * val, uint64_t size)
free
(
buff
);
}
static
void
write_array
(
bytearray_t
*
bplist
,
node_t
*
node
,
hashtable_t
*
ref_table
,
uint8_t
dict_param
_size
)
static
void
write_array
(
bytearray_t
*
bplist
,
node_t
*
node
,
hashtable_t
*
ref_table
,
uint8_t
ref
_size
)
{
uint64_t
idx
=
0
;
uint8_t
*
buff
=
NULL
;
...
...
@@ -969,25 +969,25 @@ static void write_array(bytearray_t * bplist, node_t* node, hashtable_t* ref_tab
byte_array_free
(
int_buff
);
}
buff
=
(
uint8_t
*
)
malloc
(
size
*
dict_param
_size
);
buff
=
(
uint8_t
*
)
malloc
(
size
*
ref
_size
);
for
(
i
=
0
,
cur
=
node_first_child
(
node
);
cur
&&
i
<
size
;
cur
=
node_next_sibling
(
cur
),
i
++
)
{
idx
=
*
(
uint64_t
*
)
(
hash_table_lookup
(
ref_table
,
cur
));
#ifdef __BIG_ENDIAN__
idx
=
idx
<<
((
sizeof
(
uint64_t
)
-
dict_param
_size
)
*
8
);
idx
=
idx
<<
((
sizeof
(
uint64_t
)
-
ref
_size
)
*
8
);
#endif
memcpy
(
buff
+
i
*
dict_param_size
,
&
idx
,
dict_param
_size
);
byte_convert
(
buff
+
i
*
dict_param_size
,
dict_param
_size
);
memcpy
(
buff
+
i
*
ref_size
,
&
idx
,
ref
_size
);
byte_convert
(
buff
+
i
*
ref_size
,
ref
_size
);
}
//now append to bplist
byte_array_append
(
bplist
,
buff
,
size
*
dict_param
_size
);
byte_array_append
(
bplist
,
buff
,
size
*
ref
_size
);
free
(
buff
);
}
static
void
write_dict
(
bytearray_t
*
bplist
,
node_t
*
node
,
hashtable_t
*
ref_table
,
uint8_t
dict_param
_size
)
static
void
write_dict
(
bytearray_t
*
bplist
,
node_t
*
node
,
hashtable_t
*
ref_table
,
uint8_t
ref
_size
)
{
uint64_t
idx1
=
0
;
uint64_t
idx2
=
0
;
...
...
@@ -1007,26 +1007,26 @@ static void write_dict(bytearray_t * bplist, node_t* node, hashtable_t* ref_tabl
byte_array_free
(
int_buff
);
}
buff
=
(
uint8_t
*
)
malloc
(
size
*
2
*
dict_param
_size
);
buff
=
(
uint8_t
*
)
malloc
(
size
*
2
*
ref
_size
);
for
(
i
=
0
,
cur
=
node_first_child
(
node
);
cur
&&
i
<
size
;
cur
=
node_next_sibling
(
node_next_sibling
(
cur
)),
i
++
)
{
idx1
=
*
(
uint64_t
*
)
(
hash_table_lookup
(
ref_table
,
cur
));
#ifdef __BIG_ENDIAN__
idx1
=
idx1
<<
((
sizeof
(
uint64_t
)
-
dict_param
_size
)
*
8
);
idx1
=
idx1
<<
((
sizeof
(
uint64_t
)
-
ref
_size
)
*
8
);
#endif
memcpy
(
buff
+
i
*
dict_param_size
,
&
idx1
,
dict_param
_size
);
byte_convert
(
buff
+
i
*
dict_param_size
,
dict_param
_size
);
memcpy
(
buff
+
i
*
ref_size
,
&
idx1
,
ref
_size
);
byte_convert
(
buff
+
i
*
ref_size
,
ref
_size
);
idx2
=
*
(
uint64_t
*
)
(
hash_table_lookup
(
ref_table
,
cur
->
next
));
#ifdef __BIG_ENDIAN__
idx2
=
idx2
<<
((
sizeof
(
uint64_t
)
-
dict_param
_size
)
*
8
);
idx2
=
idx2
<<
((
sizeof
(
uint64_t
)
-
ref
_size
)
*
8
);
#endif
memcpy
(
buff
+
(
i
+
size
)
*
dict_param_size
,
&
idx2
,
dict_param
_size
);
byte_convert
(
buff
+
(
i
+
size
)
*
dict_param_size
,
dict_param
_size
);
memcpy
(
buff
+
(
i
+
size
)
*
ref_size
,
&
idx2
,
ref
_size
);
byte_convert
(
buff
+
(
i
+
size
)
*
ref_size
,
ref
_size
);
}
//now append to bplist
byte_array_append
(
bplist
,
buff
,
size
*
2
*
dict_param
_size
);
byte_array_append
(
bplist
,
buff
,
size
*
2
*
ref
_size
);
free
(
buff
);
}
...
...
@@ -1125,7 +1125,7 @@ PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length)
hashtable_t
*
ref_table
=
NULL
;
struct
serialize_s
ser_s
;
uint8_t
offset_size
=
0
;
uint8_t
dict_param
_size
=
0
;
uint8_t
ref
_size
=
0
;
uint64_t
num_objects
=
0
;
uint64_t
root_object
=
0
;
uint64_t
offset_table_index
=
0
;
...
...
@@ -1159,7 +1159,7 @@ PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length)
//now stream to output buffer
offset_size
=
0
;
//unknown yet
objects_len
=
objects
->
len
;
dict_param
_size
=
get_needed_bytes
(
objects_len
);
ref
_size
=
get_needed_bytes
(
objects_len
);
num_objects
=
objects
->
len
;
root_object
=
0
;
//root is first in list
offset_table_index
=
0
;
//unknown yet
...
...
@@ -1217,10 +1217,10 @@ PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length)
case
PLIST_DATA
:
write_data
(
bplist_buff
,
data
->
buff
,
data
->
length
);
case
PLIST_ARRAY
:
write_array
(
bplist_buff
,
ptr_array_index
(
objects
,
i
),
ref_table
,
dict_param
_size
);
write_array
(
bplist_buff
,
ptr_array_index
(
objects
,
i
),
ref_table
,
ref
_size
);
break
;
case
PLIST_DICT
:
write_dict
(
bplist_buff
,
ptr_array_index
(
objects
,
i
),
ref_table
,
dict_param
_size
);
write_dict
(
bplist_buff
,
ptr_array_index
(
objects
,
i
),
ref_table
,
ref
_size
);
break
;
case
PLIST_DATE
:
write_date
(
bplist_buff
,
data
->
realval
);
...
...
@@ -1258,7 +1258,7 @@ PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length)
//setup trailer
memset
(
trailer
.
unused
,
'\0'
,
sizeof
(
trailer
.
unused
));
trailer
.
offset_size
=
offset_size
;
trailer
.
ref_size
=
dict_param
_size
;
trailer
.
ref_size
=
ref
_size
;
trailer
.
num_objects
=
be64toh
(
num_objects
);
trailer
.
root_object_index
=
be64toh
(
root_object
);
trailer
.
offset_table_offset
=
be64toh
(
offset_table_index
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment