mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 15:45:33 +02:00
ndb - uint overflow when running on 64-bit platform with more than 4Gb of mem
bug#10711 bug#10058 bug#9363 bug#9025 bug#8918 ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: Use UintPtr when computing page address to make sure that Uint32 does not overflow
This commit is contained in:
parent
a7917b1e8a
commit
b854d06bf0
1 changed files with 9 additions and 9 deletions
|
|
@ -247,10 +247,10 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
|||
AsyncFile* openFile = theOpenFiles.find(filePointer);
|
||||
|
||||
const NewVARIABLE *myBaseAddrRef = &getBat(blockNumber)[fsRWReq->varIndex];
|
||||
unsigned int tPageSize;
|
||||
unsigned int tClusterSize;
|
||||
unsigned int tNRR;
|
||||
unsigned int tPageOffset;
|
||||
UintPtr tPageSize;
|
||||
UintPtr tClusterSize;
|
||||
UintPtr tNRR;
|
||||
UintPtr tPageOffset;
|
||||
char* tWA;
|
||||
FsRef::NdbfsErrorCodeType errorCode;
|
||||
|
||||
|
|
@ -294,8 +294,8 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
|||
jam();
|
||||
for (unsigned int i = 0; i < fsRWReq->numberOfPages; i++) {
|
||||
jam();
|
||||
const Uint32 varIndex = fsRWReq->data.listOfPair[i].varIndex;
|
||||
const Uint32 fileOffset = fsRWReq->data.listOfPair[i].fileOffset;
|
||||
const UintPtr varIndex = fsRWReq->data.listOfPair[i].varIndex;
|
||||
const UintPtr fileOffset = fsRWReq->data.listOfPair[i].fileOffset;
|
||||
if (varIndex >= tNRR) {
|
||||
jam();
|
||||
errorCode = FsRef::fsErrInvalidParameters;
|
||||
|
|
@ -316,8 +316,8 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
|||
errorCode = FsRef::fsErrInvalidParameters;
|
||||
goto error;
|
||||
}//if
|
||||
const Uint32 varIndex = fsRWReq->data.arrayOfPages.varIndex;
|
||||
const Uint32 fileOffset = fsRWReq->data.arrayOfPages.fileOffset;
|
||||
const UintPtr varIndex = fsRWReq->data.arrayOfPages.varIndex;
|
||||
const UintPtr fileOffset = fsRWReq->data.arrayOfPages.fileOffset;
|
||||
|
||||
request->par.readWrite.pages[0].offset = fileOffset * tPageSize;
|
||||
request->par.readWrite.pages[0].size = tPageSize * fsRWReq->numberOfPages;
|
||||
|
|
@ -334,7 +334,7 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
|||
|
||||
for (unsigned int i = 0; i < fsRWReq->numberOfPages; i++) {
|
||||
jam();
|
||||
Uint32 varIndex = fsRWReq->data.listOfMemPages.varIndex[i];
|
||||
UintPtr varIndex = fsRWReq->data.listOfMemPages.varIndex[i];
|
||||
|
||||
if (varIndex >= tNRR) {
|
||||
jam();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue