summaryrefslogtreecommitdiffstats
path: root/widget/windows/nsClipboard.cpp
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2019-05-29 16:01:50 -0400
committerMatt A. Tobin <email@mattatobin.com>2019-05-29 16:01:50 -0400
commit363bfeb2c06e5f57136ebdab8da1ebeba0591520 (patch)
tree3fbaf59efc6807c48a69fabe229be712c0d25af6 /widget/windows/nsClipboard.cpp
parentd197e65f448d0dfbb5de7ff5d09a1aceaf7620f6 (diff)
parent23115528859e518813214b35c36232da0c1c7b5f (diff)
downloadUXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar
UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar.gz
UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar.lz
UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar.xz
UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.zip
Merge branch 'master' of https://github.com/MoonchildProductions/UXP
Diffstat (limited to 'widget/windows/nsClipboard.cpp')
-rw-r--r--widget/windows/nsClipboard.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/widget/windows/nsClipboard.cpp b/widget/windows/nsClipboard.cpp
index c93f351c8..0ca9568d0 100644
--- a/widget/windows/nsClipboard.cpp
+++ b/widget/windows/nsClipboard.cpp
@@ -291,16 +291,20 @@ nsresult nsClipboard::GetGlobalData(HGLOBAL aHGBL, void ** aData, uint32_t * aLe
nsresult result = NS_ERROR_FAILURE;
if (aHGBL != nullptr) {
LPSTR lpStr = (LPSTR) GlobalLock(aHGBL);
- DWORD allocSize = GlobalSize(aHGBL);
- char* data = static_cast<char*>(malloc(allocSize + 3));
+ CheckedInt<uint32_t> allocSize = CheckedInt<uint32_t>(GlobalSize(aHGBL)) + 3;
+ if (!allocSize.isValid()) {
+ return NS_ERROR_INVALID_ARG;
+ }
+ char* data = static_cast<char*>(malloc(allocSize.value()));
if ( data ) {
- memcpy ( data, lpStr, allocSize );
- data[allocSize] = data[allocSize + 1] = data[allocSize + 2] =
- '\0'; // null terminate for safety
+ uint32_t size = allocSize.value() - 3;
+ memcpy(data, lpStr, size);
+ // null terminate for safety
+ data[size] = data[size + 1] = data[size + 2] = '\0';
GlobalUnlock(aHGBL);
*aData = data;
- *aLen = allocSize;
+ *aLen = size;
result = NS_OK;
}