Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
matrix-org
Olm
Commits
bfeb554e
Commit
bfeb554e
authored
May 26, 2016
by
Mark Haines
Browse files
Add a fuzzer for olm_group_decrypt
parent
ee8172d8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
bfeb554e
...
...
@@ -7,7 +7,7 @@ JS_OPTIMIZE_FLAGS ?= -O3
FUZZING_OPTIMIZE_FLAGS
?=
-O3
CC
=
gcc
EMCC
=
emcc
AFL_CC
=
afl
_
gcc
AFL_CC
=
afl
-
gcc
AFL_CXX
=
afl-g++
RELEASE_TARGET
:=
$(BUILD_DIR)
/libolm.so
DEBUG_TARGET
:=
$(BUILD_DIR)
/libolm_debug.so
...
...
fuzzers/fuzz_decrypt.cpp
View file @
bfeb554e
...
...
@@ -61,4 +61,5 @@ int main(int argc, const char *argv[]) {
ignored
=
write
(
STDOUT_FILENO
,
plaintext
,
length
);
ignored
=
write
(
STDOUT_FILENO
,
"
\n
"
,
1
);
return
ignored
;
}
fuzzers/fuzz_group_decrypt.cpp
0 → 100644
View file @
bfeb554e
#include "olm/olm.hh"
#include "fuzzing.hh"
int
main
(
int
argc
,
const
char
*
argv
[])
{
size_t
ignored
;
if
(
argc
<=
2
)
{
const
char
*
message
=
"Usage: decrypt <pickle_key> <group_session>
\n
"
;
ignored
=
write
(
STDERR_FILENO
,
message
,
strlen
(
message
));
exit
(
3
);
}
const
char
*
key
=
argv
[
1
];
size_t
key_length
=
strlen
(
key
);
int
session_fd
=
check_errno
(
"Error opening session file"
,
open
(
argv
[
2
],
O_RDONLY
)
);
uint8_t
*
session_buffer
;
ssize_t
session_length
=
check_errno
(
"Error reading session file"
,
read_file
(
session_fd
,
&
session_buffer
)
);
int
message_fd
=
STDIN_FILENO
;
uint8_t
*
message_buffer
;
ssize_t
message_length
=
check_errno
(
"Error reading message file"
,
read_file
(
message_fd
,
&
message_buffer
)
);
uint8_t
*
tmp_buffer
=
(
uint8_t
*
)
malloc
(
message_length
);
memcpy
(
tmp_buffer
,
message_buffer
,
message_length
);
uint8_t
session_memory
[
olm_inbound_group_session_size
()];
OlmInboundGroupSession
*
session
=
olm_inbound_group_session
(
session_memory
);
check_error
(
olm_inbound_group_session_last_error
,
session
,
"Error unpickling session"
,
olm_unpickle_inbound_group_session
(
session
,
key
,
key_length
,
session_buffer
,
session_length
)
);
size_t
max_length
=
check_error
(
olm_inbound_group_session_last_error
,
session
,
"Error getting plaintext length"
,
olm_group_decrypt_max_plaintext_length
(
session
,
tmp_buffer
,
message_length
)
);
uint8_t
plaintext
[
max_length
];
size_t
length
=
check_error
(
olm_inbound_group_session_last_error
,
session
,
"Error decrypting message"
,
olm_group_decrypt
(
session
,
message_buffer
,
message_length
,
plaintext
,
max_length
)
);
ignored
=
write
(
STDOUT_FILENO
,
plaintext
,
length
);
ignored
=
write
(
STDOUT_FILENO
,
"
\n
"
,
1
);
return
ignored
;
}
fuzzers/include/fuzzing.hh
View file @
bfeb554e
...
...
@@ -53,13 +53,15 @@ T check_errno(
return
value
;
}
size_t
check_session
(
OlmSession
*
session
,
template
<
typename
T
,
typename
F
>
size_t
check_error
(
F
f
,
T
*
object
,
const
char
*
message
,
size_t
value
)
{
if
(
value
==
olm_error
())
{
const
char
*
olm_message
=
olm_session_last_error
(
session
);
const
char
*
olm_message
=
f
(
object
);
ssize_t
ignored
;
ignored
=
write
(
STDERR_FILENO
,
message
,
strlen
(
message
));
ignored
=
write
(
STDERR_FILENO
,
": "
,
2
);
...
...
@@ -70,3 +72,11 @@ size_t check_session(
}
return
value
;
}
size_t
check_session
(
OlmSession
*
session
,
const
char
*
message
,
size_t
value
)
{
return
check_error
(
olm_session_last_error
,
session
,
message
,
value
);
}
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