102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
return ret;
}
- (uint8_t*)readWithSize: (size_t)size
andNItems: (size_t)nitems
{
uint64_t memsize;
uint8_t *ret;
if (size >= 0xFFFFFFFF || nitems >= 0xFFFFFFFF ||
(memsize = (uint64_t)nitems * size) > 0xFFFFFFFF) {
[[OFOverflowException newWithObject: self] raise];
return NULL;
}
ret = [self getMemWithSize: (size_t)memsize];
@try {
[self readIntoBuffer: ret
withSize: size
andNItems: nitems];
} @catch (OFReadFailedException *e) {
[self freeMem: ret];
|
|
|
|
|
|
>
|
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
return ret;
}
- (uint8_t*)readWithSize: (size_t)size
andNItems: (size_t)nitems
{
size_t memsize;
uint8_t *ret;
memsize = nitems * size;
if (size > SIZE_MAX / nitems) {
[[OFOverflowException newWithObject: self] raise];
return NULL;
}
ret = [self getMemWithSize: memsize];
@try {
[self readIntoBuffer: ret
withSize: size
andNItems: nitems];
} @catch (OFReadFailedException *e) {
[self freeMem: ret];
|