File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Original file line number Diff line number Diff line change 26
26
#include < sys/mman.h>
27
27
28
28
#include < binder/IMemory.h>
29
+ #include < cutils/log.h>
29
30
#include < utils/KeyedVector.h>
30
31
#include < utils/threads.h>
31
32
#include < utils/Atomic.h>
@@ -187,15 +188,26 @@ sp<IMemoryHeap> BpMemory::getMemory(ssize_t* offset, size_t* size) const
187
188
if (heap != 0 ) {
188
189
mHeap = interface_cast<IMemoryHeap>(heap);
189
190
if (mHeap != 0 ) {
190
- mOffset = o;
191
- mSize = s;
191
+ size_t heapSize = mHeap ->getSize ();
192
+ if (s <= heapSize
193
+ && o >= 0
194
+ && (static_cast <size_t >(o) <= heapSize - s)) {
195
+ mOffset = o;
196
+ mSize = s;
197
+ } else {
198
+ // Hm.
199
+ android_errorWriteWithInfoLog (0x534e4554 ,
200
+ " 26877992" , -1 , NULL , 0 );
201
+ mOffset = 0 ;
202
+ mSize = 0 ;
203
+ }
192
204
}
193
205
}
194
206
}
195
207
}
196
208
if (offset) *offset = mOffset ;
197
209
if (size) *size = mSize ;
198
- return mHeap ;
210
+ return ( mSize > 0 ) ? mHeap : 0 ;
199
211
}
200
212
201
213
// ---------------------------------------------------------------------------
You can’t perform that action at this time.
0 commit comments