mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 13:23:07 +00:00
Add sanity checks in nsScriptableUConv.cpp
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include "nsIUnicodeDecoder.h"
|
||||
#include "nsIUnicodeEncoder.h"
|
||||
#include "mozilla/dom/EncodingUtils.h"
|
||||
#include "mozilla/CheckedInt.h"
|
||||
|
||||
using mozilla::dom::EncodingUtils;
|
||||
|
||||
@@ -39,7 +40,12 @@ nsScriptableUnicodeConverter::ConvertFromUnicodeWithLength(const nsAString& aSrc
|
||||
const nsAFlatString& flatSrc = PromiseFlatString(aSrc);
|
||||
rv = mEncoder->GetMaxLength(flatSrc.get(), inLength, aOutLen);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
*_retval = (char*)moz_malloc(*aOutLen+1);
|
||||
mozilla::CheckedInt<int32_t> needed(*aOutLen);
|
||||
needed += 1;
|
||||
if (!needed.isValid()) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
*_retval = (char*)moz_malloc(needed.value());
|
||||
if (!*_retval)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
@@ -151,7 +157,13 @@ nsScriptableUnicodeConverter::ConvertFromByteArray(const uint8_t* aData,
|
||||
inLength, &outLength);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
char16_t* buf = (char16_t*)moz_malloc((outLength+1)*sizeof(char16_t));
|
||||
mozilla::CheckedInt<nsACString::size_type> needed(outLength);
|
||||
needed += 1;
|
||||
needed *= sizeof(char16_t);
|
||||
if (!needed.isValid()) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
char16_t* buf = (char16_t*)moz_malloc(needed.value());
|
||||
if (!buf)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user