From mboxrd@z Thu Jan 1 00:00:00 1970 From: Reinhard Arlt Date: Fri, 30 Sep 2005 00:22:57 +0200 Subject: [U-Boot-Users] WARNING: in ext2fs.c In-Reply-To: <5F98E47AD7B1C349895ED4E2EDF3918B01F29219@stca209a> References: <5F98E47AD7B1C349895ED4E2EDF3918B01F29219@stca209a> Message-ID: <433C6941.8090908@t-online.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello, this is a bug on bigendian machines, Who prepares a patch? Best regards Reinhard Roberts, John wrote: > > In function: ext2fs_read_file(ext2fs_node_t node, int pos, unsigned > int len, char *buf) > > You may not be getting all the bytes you requested in the 'len' > parameter. Your requested length might be improperly adjusted. > ----------------------- Code snippet ------------- > unsigned int filesize = node->inode.size; > > /* Adjust len so it we can't read past the end of the file. */ > if (len > filesize) { > len = filesize; > } > ----------------------------------------------------------- > > "len" is the native requested size, while "filesize" is the files real size, > but byte-swapped and the two are being compared. As long as the byte-swapped > length value is larger than the requested size value, then you'll never have > a problem. > > Now assume the file is 2meg and you requested 2meg. > > IF( len=200000 (2meg) > filesize=2000(2meg byte-swapped) ) > THEN len = filesize > > You end up getting only 2000 bytes. > > The initialization of filesize should be: > unsigned int filesize = __le32_to_cpu (node->inode.size); > Not: > unsigned int filesize = node->inode.size; > > (440gx) > -John Roberts > > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: > Power Architecture Resource Center: Free content, downloads, discussions, > and more. http://solutions.newsforge.com/ibmarch.tmpl > _______________________________________________ > U-Boot-Users mailing list > U-Boot-Users at lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/u-boot-users >