[Yaffs] Bug in yaffsfs.c

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Amir Comforti
Date:  
To: Charles Manning
CC: yaffs@lists.aleph1.co.uk
Subject: [Yaffs] Bug in yaffsfs.c

Dear Charles,

I think I've found a bug in yaffsfs.c in function yaffsfs_do_write(int fd, const void *vbuf, unsigned int nbyte, int isPwrite, int offset)
In this function there is the following section -

            if(!h || !obj){
                        // bad handle
                        yaffsfs_SetError(-EBADF);
                        totalWritten = -1;
            } else if( h && obj && (h->readOnly || obj->myDev->readOnly)){
                        yaffsfs_SetError(-EINVAL);
                        totalWritten=-1;
            } else if( h && obj){
                        if(isPwrite)
                                    startPos = offset;
                        else if(h->append)
                                    startPos = yaffs_GetObjectFileLength(obj);
                        else
                                    startPos = h->position;



The bolded "else" is missing and should be added.
Otherwise, if you call this function with "isPwrite = 1", startPos will not get your desired "offset", because it will be overwritten.

Thanks

-------------------------------------------------------------------------
Amir Comforti
Zoran Microelectronics Ltd
Phone:  +972 4 8546310
Email:   <mailto:amir.comforti@zoran.com>
Web:    www.zoran.com<http://www.zoran.com/>
-------------------------------------------------------------------------