Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
briar
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
675
Issues
675
List
Boards
Labels
Service Desk
Milestones
Merge Requests
11
Merge Requests
11
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
briar
briar
Commits
d95a5fd5
Verified
Commit
d95a5fd5
authored
May 17, 2018
by
akwizgran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use lower default limit for BDF strings and raws.
parent
ed2c0336
Pipeline
#1544
passed with stage
in 8 minutes and 20 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
191 additions
and
100 deletions
+191
-100
bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReader.java
...ain/java/org/briarproject/bramble/api/data/BdfReader.java
+3
-2
bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReaderFactory.java
...a/org/briarproject/bramble/api/data/BdfReaderFactory.java
+2
-1
bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderFactoryImpl.java
...a/org/briarproject/bramble/data/BdfReaderFactoryImpl.java
+6
-3
bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderImpl.java
...ain/java/org/briarproject/bramble/data/BdfReaderImpl.java
+10
-9
bramble-core/src/main/java/org/briarproject/bramble/data/MetadataParserImpl.java
...ava/org/briarproject/bramble/data/MetadataParserImpl.java
+2
-2
bramble-core/src/test/java/org/briarproject/bramble/data/BdfReaderImplTest.java
...java/org/briarproject/bramble/data/BdfReaderImplTest.java
+166
-81
briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java
...ava/org/briarproject/briar/messaging/MessagingModule.java
+2
-2
No files found.
bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReader.java
View file @
d95a5fd5
...
...
@@ -8,6 +8,7 @@ import java.io.IOException;
public
interface
BdfReader
{
int
DEFAULT_NESTED_LIMIT
=
5
;
int
DEFAULT_MAX_BUFFER_SIZE
=
64
*
1024
;
boolean
eof
()
throws
IOException
;
...
...
@@ -39,13 +40,13 @@ public interface BdfReader {
boolean
hasString
()
throws
IOException
;
String
readString
(
int
maxLength
)
throws
IOException
;
String
readString
()
throws
IOException
;
void
skipString
()
throws
IOException
;
boolean
hasRaw
()
throws
IOException
;
byte
[]
readRaw
(
int
maxLength
)
throws
IOException
;
byte
[]
readRaw
()
throws
IOException
;
void
skipRaw
()
throws
IOException
;
...
...
bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReaderFactory.java
View file @
d95a5fd5
...
...
@@ -9,5 +9,6 @@ public interface BdfReaderFactory {
BdfReader
createReader
(
InputStream
in
);
BdfReader
createReader
(
InputStream
in
,
int
nestedLimit
);
BdfReader
createReader
(
InputStream
in
,
int
nestedLimit
,
int
maxBufferSize
);
}
bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderFactoryImpl.java
View file @
d95a5fd5
...
...
@@ -8,6 +8,7 @@ import java.io.InputStream;
import
javax.annotation.concurrent.Immutable
;
import
static
org
.
briarproject
.
bramble
.
api
.
data
.
BdfReader
.
DEFAULT_MAX_BUFFER_SIZE
;
import
static
org
.
briarproject
.
bramble
.
api
.
data
.
BdfReader
.
DEFAULT_NESTED_LIMIT
;
@Immutable
...
...
@@ -16,11 +17,13 @@ class BdfReaderFactoryImpl implements BdfReaderFactory {
@Override
public
BdfReader
createReader
(
InputStream
in
)
{
return
new
BdfReaderImpl
(
in
,
DEFAULT_NESTED_LIMIT
);
return
new
BdfReaderImpl
(
in
,
DEFAULT_NESTED_LIMIT
,
DEFAULT_MAX_BUFFER_SIZE
);
}
@Override
public
BdfReader
createReader
(
InputStream
in
,
int
nestedLimit
)
{
return
new
BdfReaderImpl
(
in
,
nestedLimit
);
public
BdfReader
createReader
(
InputStream
in
,
int
nestedLimit
,
int
maxBufferSize
)
{
return
new
BdfReaderImpl
(
in
,
nestedLimit
,
maxBufferSize
);
}
}
bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderImpl.java
View file @
d95a5fd5
...
...
@@ -37,15 +37,16 @@ class BdfReaderImpl implements BdfReader {
private
static
final
byte
[]
EMPTY_BUFFER
=
new
byte
[
0
];
private
final
InputStream
in
;
private
final
int
nestedLimit
;
private
final
int
nestedLimit
,
maxBufferSize
;
private
boolean
hasLookahead
=
false
,
eof
=
false
;
private
byte
next
;
private
byte
[]
buf
=
new
byte
[
8
];
BdfReaderImpl
(
InputStream
in
,
int
nestedLimit
)
{
BdfReaderImpl
(
InputStream
in
,
int
nestedLimit
,
int
maxBufferSize
)
{
this
.
in
=
in
;
this
.
nestedLimit
=
nestedLimit
;
this
.
maxBufferSize
=
maxBufferSize
;
}
private
void
readLookahead
()
throws
IOException
{
...
...
@@ -91,8 +92,8 @@ class BdfReaderImpl implements BdfReader {
if
(
hasBoolean
())
return
readBoolean
();
if
(
hasLong
())
return
readLong
();
if
(
hasDouble
())
return
readDouble
();
if
(
hasString
())
return
readString
(
Integer
.
MAX_VALUE
);
if
(
hasRaw
())
return
readRaw
(
Integer
.
MAX_VALUE
);
if
(
hasString
())
return
readString
();
if
(
hasRaw
())
return
readRaw
();
if
(
hasList
())
return
readList
(
level
);
if
(
hasDictionary
())
return
readDictionary
(
level
);
throw
new
FormatException
();
...
...
@@ -245,11 +246,11 @@ class BdfReaderImpl implements BdfReader {
}
@Override
public
String
readString
(
int
maxLength
)
throws
IOException
{
public
String
readString
()
throws
IOException
{
if
(!
hasString
())
throw
new
FormatException
();
hasLookahead
=
false
;
int
length
=
readStringLength
();
if
(
length
<
0
||
length
>
max
Length
)
throw
new
FormatException
();
if
(
length
<
0
||
length
>
max
BufferSize
)
throw
new
FormatException
();
if
(
length
==
0
)
return
""
;
readIntoBuffer
(
length
);
return
new
String
(
buf
,
0
,
length
,
"UTF-8"
);
...
...
@@ -279,11 +280,11 @@ class BdfReaderImpl implements BdfReader {
}
@Override
public
byte
[]
readRaw
(
int
maxLength
)
throws
IOException
{
public
byte
[]
readRaw
()
throws
IOException
{
if
(!
hasRaw
())
throw
new
FormatException
();
hasLookahead
=
false
;
int
length
=
readRawLength
();
if
(
length
<
0
||
length
>
max
Length
)
throw
new
FormatException
();
if
(
length
<
0
||
length
>
max
BufferSize
)
throw
new
FormatException
();
if
(
length
==
0
)
return
EMPTY_BUFFER
;
byte
[]
b
=
new
byte
[
length
];
readIntoBuffer
(
b
,
length
);
...
...
@@ -381,7 +382,7 @@ class BdfReaderImpl implements BdfReader {
BdfDictionary
dictionary
=
new
BdfDictionary
();
readDictionaryStart
();
while
(!
hasDictionaryEnd
())
dictionary
.
put
(
readString
(
Integer
.
MAX_VALUE
),
readObject
(
level
+
1
));
dictionary
.
put
(
readString
(),
readObject
(
level
+
1
));
readDictionaryEnd
();
return
dictionary
;
}
...
...
bramble-core/src/main/java/org/briarproject/bramble/data/MetadataParserImpl.java
View file @
d95a5fd5
...
...
@@ -59,8 +59,8 @@ class MetadataParserImpl implements MetadataParser {
if
(
reader
.
hasBoolean
())
return
reader
.
readBoolean
();
if
(
reader
.
hasLong
())
return
reader
.
readLong
();
if
(
reader
.
hasDouble
())
return
reader
.
readDouble
();
if
(
reader
.
hasString
())
return
reader
.
readString
(
Integer
.
MAX_VALUE
);
if
(
reader
.
hasRaw
())
return
reader
.
readRaw
(
Integer
.
MAX_VALUE
);
if
(
reader
.
hasString
())
return
reader
.
readString
();
if
(
reader
.
hasRaw
())
return
reader
.
readRaw
();
if
(
reader
.
hasList
())
return
reader
.
readList
();
if
(
reader
.
hasDictionary
())
return
reader
.
readDictionary
();
throw
new
FormatException
();
...
...
bramble-core/src/test/java/org/briarproject/bramble/data/BdfReaderImplTest.java
View file @
d95a5fd5
...
...
@@ -4,13 +4,16 @@ import org.briarproject.bramble.api.FormatException;
import
org.briarproject.bramble.api.data.BdfDictionary
;
import
org.briarproject.bramble.api.data.BdfList
;
import
org.briarproject.bramble.test.BrambleTestCase
;
import
org.briarproject.bramble.util.StringUtils
;
import
org.junit.Test
;
import
java.io.ByteArrayInputStream
;
import
static
org
.
briarproject
.
bramble
.
api
.
data
.
BdfDictionary
.
NULL_VALUE
;
import
static
org
.
briarproject
.
bramble
.
api
.
data
.
BdfReader
.
DEFAULT_MAX_BUFFER_SIZE
;
import
static
org
.
briarproject
.
bramble
.
data
.
BdfReaderImpl
.
DEFAULT_NESTED_LIMIT
;
import
static
org
.
briarproject
.
bramble
.
util
.
StringUtils
.
fromHexString
;
import
static
org
.
briarproject
.
bramble
.
util
.
StringUtils
.
getRandomString
;
import
static
org
.
briarproject
.
bramble
.
util
.
StringUtils
.
toHexString
;
import
static
org
.
junit
.
Assert
.
assertArrayEquals
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
...
...
@@ -158,30 +161,32 @@ public class BdfReaderImplTest extends BrambleTestCase {
@Test
public
void
testReadString8
()
throws
Exception
{
String
longest
=
StringUtils
.
getRandomString
(
Byte
.
MAX_VALUE
);
String
longHex
=
StringUtils
.
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
String
longest
=
getRandomString
(
Byte
.
MAX_VALUE
);
String
longHex
=
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
// "foo", the empty string, and 127 random letters
setContents
(
"41"
+
"03"
+
"666F6F"
+
"41"
+
"00"
+
"41"
+
"7F"
+
longHex
);
assertEquals
(
"foo"
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
""
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
longest
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
"foo"
,
r
.
readString
());
assertEquals
(
""
,
r
.
readString
());
assertEquals
(
longest
,
r
.
readString
());
assertTrue
(
r
.
eof
());
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadString8ChecksMaxLength
()
throws
Exception
{
// "foo" twice
setContents
(
"41"
+
"03"
+
"666F6F"
+
"41"
+
"03"
+
"666F6F"
);
assertEquals
(
"foo"
,
r
.
readString
(
3
));
int
maxBufferSize
=
3
;
// "foo", "fooo"
setContents
(
"41"
+
"03"
+
"666F6F"
+
"41"
+
"04"
+
"666F6F6F"
,
maxBufferSize
);
assertEquals
(
"foo"
,
r
.
readString
());
assertTrue
(
r
.
hasString
());
r
.
readString
(
2
);
r
.
readString
();
}
@Test
public
void
testSkipString8
()
throws
Exception
{
String
longest
=
StringUtils
.
getRandomString
(
Byte
.
MAX_VALUE
);
String
longHex
=
StringUtils
.
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
String
longest
=
getRandomString
(
Byte
.
MAX_VALUE
);
String
longHex
=
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
// "foo", the empty string, and 127 random letters
setContents
(
"41"
+
"03"
+
"666F6F"
+
"41"
+
"00"
+
"41"
+
"7F"
+
longHex
);
...
...
@@ -193,34 +198,37 @@ public class BdfReaderImplTest extends BrambleTestCase {
@Test
public
void
testReadString16
()
throws
Exception
{
String
shortest
=
StringUtils
.
getRandomString
(
Byte
.
MAX_VALUE
+
1
);
String
shortHex
=
StringUtils
.
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
String
longest
=
StringUtils
.
getRandomString
(
Short
.
MAX_VALUE
);
String
longHex
=
StringUtils
.
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
String
shortest
=
getRandomString
(
Byte
.
MAX_VALUE
+
1
);
String
shortHex
=
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
String
longest
=
getRandomString
(
Short
.
MAX_VALUE
);
String
longHex
=
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
// 128 random letters and 2^15 -1 random letters
setContents
(
"42"
+
"0080"
+
shortHex
+
"42"
+
"7FFF"
+
longHex
);
assertEquals
(
shortest
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
longest
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
shortest
,
r
.
readString
());
assertEquals
(
longest
,
r
.
readString
());
assertTrue
(
r
.
eof
());
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadString16ChecksMaxLength
()
throws
Exception
{
String
shortest
=
StringUtils
.
getRandomString
(
Byte
.
MAX_VALUE
+
1
);
String
shortHex
=
StringUtils
.
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
// 128 random letters, twice
setContents
(
"42"
+
"0080"
+
shortHex
+
"42"
+
"0080"
+
shortHex
);
assertEquals
(
shortest
,
r
.
readString
(
Byte
.
MAX_VALUE
+
1
));
int
maxBufferSize
=
Byte
.
MAX_VALUE
+
1
;
String
valid
=
getRandomString
(
Byte
.
MAX_VALUE
+
1
);
String
validHex
=
toHexString
(
valid
.
getBytes
(
"UTF-8"
));
String
invalidhex
=
validHex
+
"20"
;
// 128 random letters, the same plus a space
setContents
(
"42"
+
"0080"
+
validHex
+
"42"
+
"0081"
+
invalidhex
,
maxBufferSize
);
assertEquals
(
valid
,
r
.
readString
());
assertTrue
(
r
.
hasString
());
r
.
readString
(
Byte
.
MAX_VALUE
);
r
.
readString
();
}
@Test
public
void
testSkipString16
()
throws
Exception
{
String
shortest
=
StringUtils
.
getRandomString
(
Byte
.
MAX_VALUE
+
1
);
String
shortHex
=
StringUtils
.
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
String
longest
=
StringUtils
.
getRandomString
(
Short
.
MAX_VALUE
);
String
longHex
=
StringUtils
.
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
String
shortest
=
getRandomString
(
Byte
.
MAX_VALUE
+
1
);
String
shortHex
=
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
String
longest
=
getRandomString
(
Short
.
MAX_VALUE
);
String
longHex
=
toHexString
(
longest
.
getBytes
(
"UTF-8"
));
// 128 random letters and 2^15 - 1 random letters
setContents
(
"42"
+
"0080"
+
shortHex
+
"42"
+
"7FFF"
+
longHex
);
r
.
skipString
();
...
...
@@ -230,30 +238,32 @@ public class BdfReaderImplTest extends BrambleTestCase {
@Test
public
void
testReadString32
()
throws
Exception
{
String
shortest
=
StringUtils
.
getRandomString
(
Short
.
MAX_VALUE
+
1
);
String
shortHex
=
StringUtils
.
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
String
shortest
=
getRandomString
(
Short
.
MAX_VALUE
+
1
);
String
shortHex
=
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
// 2^15 random letters
setContents
(
"44"
+
"00008000"
+
shortHex
);
assertEquals
(
shortest
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
shortest
,
r
.
readString
());
assertTrue
(
r
.
eof
());
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadString32ChecksMaxLength
()
throws
Exception
{
String
shortest
=
StringUtils
.
getRandomString
(
Short
.
MAX_VALUE
+
1
);
String
shortHex
=
StringUtils
.
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
// 2^15 random letters, twice
setContents
(
"44"
+
"00008000"
+
shortHex
+
"44"
+
"00008000"
+
shortHex
);
assertEquals
(
shortest
,
r
.
readString
(
Short
.
MAX_VALUE
+
1
));
int
maxBufferSize
=
Short
.
MAX_VALUE
+
1
;
String
valid
=
getRandomString
(
maxBufferSize
);
String
validHex
=
toHexString
(
valid
.
getBytes
(
"UTF-8"
));
String
invalidHex
=
validHex
+
"20"
;
// 2^15 random letters, the same plus a space
setContents
(
"44"
+
"00008000"
+
validHex
+
"44"
+
"00008001"
+
invalidHex
,
maxBufferSize
);
assertEquals
(
valid
,
r
.
readString
());
assertTrue
(
r
.
hasString
());
r
.
readString
(
Short
.
MAX_VALUE
);
r
.
readString
();
}
@Test
public
void
testSkipString32
()
throws
Exception
{
String
shortest
=
StringUtils
.
getRandomString
(
Short
.
MAX_VALUE
+
1
);
String
shortHex
=
StringUtils
.
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
String
shortest
=
getRandomString
(
Short
.
MAX_VALUE
+
1
);
String
shortHex
=
toHexString
(
shortest
.
getBytes
(
"UTF-8"
));
// 2^15 random letters, twice
setContents
(
"44"
+
"00008000"
+
shortHex
+
"44"
+
"00008000"
+
shortHex
);
...
...
@@ -265,41 +275,43 @@ public class BdfReaderImplTest extends BrambleTestCase {
@Test
public
void
testReadUtf8String
()
throws
Exception
{
String
unicode
=
"\uFDD0\uFDD1\uFDD2\uFDD3"
;
String
hex
=
StringUtils
.
toHexString
(
unicode
.
getBytes
(
"UTF-8"
));
String
hex
=
toHexString
(
unicode
.
getBytes
(
"UTF-8"
));
// STRING_8 tag, "foo", the empty string, and the test string
setContents
(
"41"
+
"03"
+
"666F6F"
+
"41"
+
"00"
+
"41"
+
"0C"
+
hex
);
assertEquals
(
"foo"
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
""
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
unicode
,
r
.
readString
(
Integer
.
MAX_VALUE
));
assertEquals
(
"foo"
,
r
.
readString
());
assertEquals
(
""
,
r
.
readString
());
assertEquals
(
unicode
,
r
.
readString
());
assertTrue
(
r
.
eof
());
}
@Test
public
void
testReadRaw8
()
throws
Exception
{
byte
[]
longest
=
new
byte
[
Byte
.
MAX_VALUE
];
String
longHex
=
StringUtils
.
toHexString
(
longest
);
String
longHex
=
toHexString
(
longest
);
// {1, 2, 3}, {}, and 127 zero bytes
setContents
(
"51"
+
"03"
+
"010203"
+
"51"
+
"00"
+
"51"
+
"7F"
+
longHex
);
assertArrayEquals
(
new
byte
[]
{
1
,
2
,
3
},
r
.
readRaw
(
Integer
.
MAX_VALUE
));
assertArrayEquals
(
new
byte
[
0
],
r
.
readRaw
(
Integer
.
MAX_VALUE
));
assertArrayEquals
(
longest
,
r
.
readRaw
(
Integer
.
MAX_VALUE
));
assertArrayEquals
(
new
byte
[]
{
1
,
2
,
3
},
r
.
readRaw
());
assertArrayEquals
(
new
byte
[
0
],
r
.
readRaw
());
assertArrayEquals
(
longest
,
r
.
readRaw
());
assertTrue
(
r
.
eof
());
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadRaw8ChecksMaxLength
()
throws
Exception
{
// {1, 2, 3} twice
setContents
(
"51"
+
"03"
+
"010203"
+
"51"
+
"03"
+
"010203"
);
assertArrayEquals
(
new
byte
[]
{
1
,
2
,
3
},
r
.
readRaw
(
3
));
int
maxBufferSize
=
3
;
// {1, 2, 3}, {1, 2, 3, 4}
setContents
(
"51"
+
"03"
+
"010203"
+
"51"
+
"04"
+
"01020304"
,
maxBufferSize
);
assertArrayEquals
(
new
byte
[]
{
1
,
2
,
3
},
r
.
readRaw
());
assertTrue
(
r
.
hasRaw
());
r
.
readRaw
(
2
);
r
.
readRaw
();
}
@Test
public
void
testSkipRaw8
()
throws
Exception
{
byte
[]
longest
=
new
byte
[
Byte
.
MAX_VALUE
];
String
longHex
=
StringUtils
.
toHexString
(
longest
);
String
longHex
=
toHexString
(
longest
);
// {1, 2, 3}, {}, and 127 zero bytes
setContents
(
"51"
+
"03"
+
"010203"
+
"51"
+
"00"
+
"51"
+
"7F"
+
longHex
);
...
...
@@ -312,33 +324,36 @@ public class BdfReaderImplTest extends BrambleTestCase {
@Test
public
void
testReadRaw16
()
throws
Exception
{
byte
[]
shortest
=
new
byte
[
Byte
.
MAX_VALUE
+
1
];
String
shortHex
=
StringUtils
.
toHexString
(
shortest
);
String
shortHex
=
toHexString
(
shortest
);
byte
[]
longest
=
new
byte
[
Short
.
MAX_VALUE
];
String
longHex
=
StringUtils
.
toHexString
(
longest
);
String
longHex
=
toHexString
(
longest
);
// 128 zero bytes and 2^15 - 1 zero bytes
setContents
(
"52"
+
"0080"
+
shortHex
+
"52"
+
"7FFF"
+
longHex
);
assertArrayEquals
(
shortest
,
r
.
readRaw
(
Integer
.
MAX_VALUE
));
assertArrayEquals
(
longest
,
r
.
readRaw
(
Integer
.
MAX_VALUE
));
assertArrayEquals
(
shortest
,
r
.
readRaw
());
assertArrayEquals
(
longest
,
r
.
readRaw
());
assertTrue
(
r
.
eof
());
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadRaw16ChecksMaxLength
()
throws
Exception
{
byte
[]
shortest
=
new
byte
[
Byte
.
MAX_VALUE
+
1
];
String
shortHex
=
StringUtils
.
toHexString
(
shortest
);
// 128 zero bytes, twice
setContents
(
"52"
+
"0080"
+
shortHex
+
"52"
+
"0080"
+
shortHex
);
assertArrayEquals
(
shortest
,
r
.
readRaw
(
Byte
.
MAX_VALUE
+
1
));
int
maxBufferSize
=
Byte
.
MAX_VALUE
+
1
;
byte
[]
valid
=
new
byte
[
maxBufferSize
];
String
validHex
=
toHexString
(
valid
);
String
invalidHex
=
validHex
+
"00"
;
// 128 zero bytes, 129 zero bytes
setContents
(
"52"
+
"0080"
+
validHex
+
"52"
+
"0081"
+
invalidHex
,
maxBufferSize
);
assertArrayEquals
(
valid
,
r
.
readRaw
());
assertTrue
(
r
.
hasRaw
());
r
.
readRaw
(
Byte
.
MAX_VALUE
);
r
.
readRaw
();
}
@Test
public
void
testSkipRaw16
()
throws
Exception
{
byte
[]
shortest
=
new
byte
[
Byte
.
MAX_VALUE
+
1
];
String
shortHex
=
StringUtils
.
toHexString
(
shortest
);
String
shortHex
=
toHexString
(
shortest
);
byte
[]
longest
=
new
byte
[
Short
.
MAX_VALUE
];
String
longHex
=
StringUtils
.
toHexString
(
longest
);
String
longHex
=
toHexString
(
longest
);
// 128 zero bytes and 2^15 - 1 zero bytes
setContents
(
"52"
+
"0080"
+
shortHex
+
"52"
+
"7FFF"
+
longHex
);
r
.
skipRaw
();
...
...
@@ -349,29 +364,31 @@ public class BdfReaderImplTest extends BrambleTestCase {
@Test
public
void
testReadRaw32
()
throws
Exception
{
byte
[]
shortest
=
new
byte
[
Short
.
MAX_VALUE
+
1
];
String
shortHex
=
StringUtils
.
toHexString
(
shortest
);
String
shortHex
=
toHexString
(
shortest
);
// 2^15 zero bytes
setContents
(
"54"
+
"00008000"
+
shortHex
);
assertArrayEquals
(
shortest
,
r
.
readRaw
(
Integer
.
MAX_VALUE
));
assertArrayEquals
(
shortest
,
r
.
readRaw
());
assertTrue
(
r
.
eof
());
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadRaw32ChecksMaxLength
()
throws
Exception
{
byte
[]
shortest
=
new
byte
[
Short
.
MAX_VALUE
+
1
];
String
shortHex
=
StringUtils
.
toHexString
(
shortest
);
// 2^15 zero bytes, twice
setContents
(
"54"
+
"00008000"
+
shortHex
+
"54"
+
"00008000"
+
shortHex
);
assertArrayEquals
(
shortest
,
r
.
readRaw
(
Short
.
MAX_VALUE
+
1
));
int
maxBufferSize
=
Short
.
MAX_VALUE
+
1
;
byte
[]
valid
=
new
byte
[
maxBufferSize
];
String
validHex
=
toHexString
(
valid
);
String
invalidHex
=
validHex
+
"00"
;
// 2^15 zero bytes, 2^15 + 1 zero bytes
setContents
(
"54"
+
"00008000"
+
validHex
+
"54"
+
"00008001"
+
invalidHex
,
maxBufferSize
);
assertArrayEquals
(
valid
,
r
.
readRaw
());
assertTrue
(
r
.
hasRaw
());
r
.
readRaw
(
Short
.
MAX_VALUE
);
r
.
readRaw
();
}
@Test
public
void
testSkipRaw32
()
throws
Exception
{
byte
[]
shortest
=
new
byte
[
Short
.
MAX_VALUE
+
1
];
String
shortHex
=
StringUtils
.
toHexString
(
shortest
);
String
shortHex
=
toHexString
(
shortest
);
// 2^15 zero bytes, twice
setContents
(
"54"
+
"00008000"
+
shortHex
+
"54"
+
"00008000"
+
shortHex
);
...
...
@@ -393,6 +410,30 @@ public class BdfReaderImplTest extends BrambleTestCase {
assertEquals
(
NULL_VALUE
,
list
.
get
(
2
));
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadListChecksMaxLengthForString
()
throws
Exception
{
// A list containing "foo", a list containing "fooo"
setContents
(
"60"
+
"41"
+
"03"
+
"666F6F"
+
"80"
+
"60"
+
"41"
+
"04"
+
"666F6F6F"
+
"80"
,
3
);
BdfList
list
=
r
.
readList
();
assertEquals
(
1
,
list
.
size
());
assertEquals
(
"foo"
,
list
.
get
(
0
));
assertTrue
(
r
.
hasList
());
r
.
readList
();
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadListChecksMaxLengthForRaw
()
throws
Exception
{
// A list containing {1, 2, 3}, a list containing {1, 2, 3, 4}
setContents
(
"60"
+
"51"
+
"03"
+
"010203"
+
"80"
+
"60"
+
"51"
+
"04"
+
"01020304"
+
"80"
,
3
);
BdfList
list
=
r
.
readList
();
assertEquals
(
1
,
list
.
size
());
assertArrayEquals
(
new
byte
[]
{
1
,
2
,
3
},
(
byte
[])
list
.
get
(
0
));
assertTrue
(
r
.
hasList
());
r
.
readList
();
}
@Test
public
void
testReadListManually
()
throws
Exception
{
// A list containing 1, "foo", and null
...
...
@@ -403,7 +444,7 @@ public class BdfReaderImplTest extends BrambleTestCase {
assertFalse
(
r
.
hasListEnd
());
assertEquals
(
1
,
r
.
readLong
());
assertFalse
(
r
.
hasListEnd
());
assertEquals
(
"foo"
,
r
.
readString
(
1000
));
assertEquals
(
"foo"
,
r
.
readString
());
assertFalse
(
r
.
hasListEnd
());
assertTrue
(
r
.
hasNull
());
r
.
readNull
();
...
...
@@ -435,6 +476,47 @@ public class BdfReaderImplTest extends BrambleTestCase {
assertEquals
(
NULL_VALUE
,
dictionary
.
get
(
"bar"
));
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadDictionaryChecksMaxLengthForKey
()
throws
Exception
{
// A dictionary containing "foo" -> null, a dictionary containing
// "fooo" -> null
setContents
(
"70"
+
"41"
+
"03"
+
"666F6F"
+
"00"
+
"80"
+
"70"
+
"41"
+
"04"
+
"666F6F6F"
+
"00"
+
"80"
,
3
);
BdfDictionary
dictionary
=
r
.
readDictionary
();
assertEquals
(
1
,
dictionary
.
size
());
assertEquals
(
NULL_VALUE
,
dictionary
.
get
(
"foo"
));
assertTrue
(
r
.
hasDictionary
());
r
.
readDictionary
();
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadDictionaryChecksMaxLengthForString
()
throws
Exception
{
// A dictionary containing "foo" -> "bar", a dictionary containing
// "foo" -> "baar"
String
foo
=
"41"
+
"03"
+
"666F6F"
;
setContents
(
"70"
+
foo
+
"41"
+
"03"
+
"626172"
+
"80"
+
"70"
+
foo
+
"41"
+
"04"
+
"62616172"
+
"80"
,
3
);
BdfDictionary
dictionary
=
r
.
readDictionary
();
assertEquals
(
1
,
dictionary
.
size
());
assertEquals
(
"bar"
,
dictionary
.
get
(
"foo"
));
assertTrue
(
r
.
hasDictionary
());
r
.
readDictionary
();
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testReadDictionaryChecksMaxLengthForRaw
()
throws
Exception
{
// A dictionary containing "foo" -> {1, 2, 3}, a dictionary containing
// "foo" -> {1, 2, 3, 4}
String
foo
=
"41"
+
"03"
+
"666F6F"
;
setContents
(
"70"
+
foo
+
"51"
+
"03"
+
"010203"
+
"80"
+
"70"
+
foo
+
"51"
+
"04"
+
"01020304"
+
"80"
,
3
);
BdfDictionary
dictionary
=
r
.
readDictionary
();
assertEquals
(
1
,
dictionary
.
size
());
assertArrayEquals
(
new
byte
[]
{
1
,
2
,
3
},
(
byte
[])
dictionary
.
get
(
"foo"
));
assertTrue
(
r
.
hasDictionary
());
r
.
readDictionary
();
}
@Test
public
void
testReadDictionaryManually
()
throws
Exception
{
// A dictionary containing "foo" -> 123 and "bar" -> null
...
...
@@ -442,11 +524,11 @@ public class BdfReaderImplTest extends BrambleTestCase {
"41"
+
"03"
+
"626172"
+
"00"
+
"80"
);
r
.
readDictionaryStart
();
assertFalse
(
r
.
hasDictionaryEnd
());
assertEquals
(
"foo"
,
r
.
readString
(
1000
));
assertEquals
(
"foo"
,
r
.
readString
());
assertFalse
(
r
.
hasDictionaryEnd
());
assertEquals
(
123
,
r
.
readLong
());
assertFalse
(
r
.
hasDictionaryEnd
());
assertEquals
(
"bar"
,
r
.
readString
(
1000
));
assertEquals
(
"bar"
,
r
.
readString
());
assertFalse
(
r
.
hasDictionaryEnd
());
assertTrue
(
r
.
hasNull
());
r
.
readNull
();
...
...
@@ -537,8 +619,11 @@ public class BdfReaderImplTest extends BrambleTestCase {
}
private
void
setContents
(
String
hex
)
{
ByteArrayInputStream
in
=
new
ByteArrayInputStream
(
StringUtils
.
fromHexString
(
hex
));
r
=
new
BdfReaderImpl
(
in
,
DEFAULT_NESTED_LIMIT
);
setContents
(
hex
,
DEFAULT_MAX_BUFFER_SIZE
);
}
private
void
setContents
(
String
hex
,
int
maxBufferSize
)
{
ByteArrayInputStream
in
=
new
ByteArrayInputStream
(
fromHexString
(
hex
));
r
=
new
BdfReaderImpl
(
in
,
DEFAULT_NESTED_LIMIT
,
maxBufferSize
);
}
}
briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java
View file @
d95a5fd5
...
...
@@ -35,8 +35,8 @@ public class MessagingModule {
@Provides
PrivateMessageFactory
providePrivateMessageFactory
(
ClientHelper
clientHelper
)
{
return
new
PrivateMessageFactoryImpl
(
clientHelper
)
;
PrivateMessageFactoryImpl
privateMessageFactory
)
{
return
privateMessageFactory
;
}
@Provides
...
...
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