Prevent accessing empty buffer
This commit is contained in:
parent
c86e4bcd3a
commit
5d78d879bb
@ -433,6 +433,8 @@ void charsetFilteredOutputStream_icu::writeImpl(
|
||||
}
|
||||
|
||||
const size_t uniLength = uniTarget - &uniBuffer[0];
|
||||
if(uniLength == 0)
|
||||
continue;
|
||||
|
||||
// Allocate buffer for destination charset
|
||||
const size_t cpSize = ucnv_getMinCharSize(m_to) * uniLength;
|
||||
@ -520,6 +522,8 @@ void charsetFilteredOutputStream_icu::flush() {
|
||||
}
|
||||
|
||||
const size_t uniLength = uniTarget - &uniBuffer[0];
|
||||
if(uniLength == 0)
|
||||
continue;
|
||||
|
||||
// Allocate buffer for destination charset
|
||||
const size_t cpSize = ucnv_getMinCharSize(m_to) * uniLength;
|
||||
|
@ -34,6 +34,7 @@ VMIME_TEST_SUITE_BEGIN(charsetTest)
|
||||
// Test valid input
|
||||
VMIME_TEST(testConvertStringValid)
|
||||
VMIME_TEST(testConvertStreamValid)
|
||||
VMIME_TEST(testConvertStreamExtract)
|
||||
VMIME_TEST(testEncodingHebrew1255)
|
||||
|
||||
// IDNA
|
||||
@ -104,6 +105,32 @@ VMIME_TEST_SUITE_BEGIN(charsetTest)
|
||||
}
|
||||
}
|
||||
|
||||
void testConvertStreamExtract() {
|
||||
vmime::bodyPart p;
|
||||
p.getBody()->setContents(
|
||||
vmime::make_shared <vmime::stringContentHandler>(
|
||||
"Foo éé\r\né bar\r\nbaz"
|
||||
),
|
||||
vmime::mediaType("text", "plain"),
|
||||
vmime::charset("utf-8"),
|
||||
vmime::encoding("quoted-printable")
|
||||
);
|
||||
|
||||
vmime::string str;
|
||||
vmime::utility::outputStreamStringAdapter outStr(str);
|
||||
vmime::shared_ptr <vmime::charsetConverter> conv = vmime::charsetConverter::create(p.getBody()->getCharset(), vmime::charset("US-ASCII"));
|
||||
auto filteredStream = conv->getFilteredOutputStream(outStr);
|
||||
p.getBody()->getContents()->extract(*filteredStream);
|
||||
filteredStream->flush();
|
||||
VASSERT_EQ(
|
||||
"generate",
|
||||
"Foo ??\r\n"
|
||||
"? bar\r\n"
|
||||
"baz",
|
||||
str
|
||||
);
|
||||
}
|
||||
|
||||
void testEncodingHebrew1255() {
|
||||
|
||||
// hewbrew string in windows-1255 charset
|
||||
|
Loading…
Reference in New Issue
Block a user