struct yaffs_obj *obj = NULL;
int pos = 0;
int startPos = 0;
+ int endPos = 0;
int nRead = 0;
int nToRead = 0;
int totalRead = 0;
yaffsfs_GetHandle(fd);
+ endPos = pos + nbyte;
+
+ if(pos < 0 || pos > YAFFS_MAX_FILE_SIZE ||
+ nbyte > YAFFS_MAX_FILE_SIZE ||
+ endPos < 0 || endPos > YAFFS_MAX_FILE_SIZE){
+ totalRead = -1;
+ nbyte = 0;
+ }
+
while(nbyte > 0) {
nToRead = YAFFSFS_RW_SIZE - (pos & (YAFFSFS_RW_SIZE -1));
if(nToRead > nbyte)
if(!isPread) {
if(totalRead >= 0)
h->position = startPos + totalRead;
- else {
- /* todo error */
- }
+ else
+ yaffsfs_SetError(-EINVAL);
}
}
struct yaffs_obj *obj = NULL;
int pos = 0;
int startPos = 0;
+ int endPos;
int nWritten = 0;
int totalWritten = 0;
int write_trhrough = 0;
yaffsfs_GetHandle(fd);
pos = startPos;
+ endPos = pos + nbyte;
+
+ if(pos < 0 || pos > YAFFS_MAX_FILE_SIZE ||
+ nbyte > YAFFS_MAX_FILE_SIZE ||
+ endPos < 0 || endPos > YAFFS_MAX_FILE_SIZE){
+ totalWritten = -1;
+ nbyte = 0;
+ }
+
while(nbyte > 0) {
nToWrite = YAFFSFS_RW_SIZE - (pos & (YAFFSFS_RW_SIZE -1));
if(!isPwrite){
if(totalWritten > 0)
h->position = startPos + totalWritten;
- else {
- /* todo error */
- }
+ else
+ yaffsfs_SetError(-EINVAL);
}
}