26 lines
945 B
Diff
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);
|
|
|