gdal/CVE-2021-45943.patch

26 lines
945 B
Diff

diff -rupN gdal-3.3.2-fedora/frmts/pcidsk/sdk/segment/cpcidskbinarysegment.cpp gdal-3.3.2-fedora-new/frmts/pcidsk/sdk/segment/cpcidskbinarysegment.cpp
--- gdal-3.3.2-fedora/frmts/pcidsk/sdk/segment/cpcidskbinarysegment.cpp 2021-09-01 11:51:01.000000000 +0200
+++ gdal-3.3.2-fedora-new/frmts/pcidsk/sdk/segment/cpcidskbinarysegment.cpp 2022-02-04 18:57:11.761058218 +0100
@@ -31,6 +31,7 @@
#include "pcidsk_exception.h"
#include "core/pcidsk_utils.h"
+#include <limits>
#include <vector>
#include <string>
#include <cassert>
@@ -73,8 +74,12 @@ void CPCIDSKBinarySegment::Load()
if (loaded_) {
return;
}
+ if( data_size - 1024 > static_cast<uint64_t>(std::numeric_limits<int>::max()) )
+ {
+ return ThrowPCIDSKException("too large data_size");
+ }
- seg_data.SetSize((int)data_size - 1024);
+ seg_data.SetSize((int)(data_size - 1024));
ReadFromFile(seg_data.buffer, 0, data_size - 1024);