summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrobi <robi>2011-06-01 00:50:03 +0000
committerrobi <robi>2011-06-01 00:50:03 +0000
commit01d69c1af57a35c9e74e83e1458e3fb2c7cdc6ff (patch)
treea27932ee1f4adf743af05bf900bebb305b2c918a /src
parentfe600c96a9d3303b68945da4aa333b6451775fb8 (diff)
possible buffer overflow
Diffstat (limited to 'src')
-rw-r--r--src/recover.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/recover.c b/src/recover.c
index eba48f5..1547fe9 100644
--- a/src/recover.c
+++ b/src/recover.c
@@ -404,8 +404,9 @@ int recover_file( char* des_dir,char* pathname, char* filename, struct ext2_inod
//symbolic link
case LINUX_S_IFLNK :
if (ext2fs_inode_data_blocks(current_fs,inode)){
- buf = malloc(current_fs->blocksize);
+ buf = malloc(current_fs->blocksize + 1);
if (buf) {
+ memset(buf,0,current_fs->blocksize + 1);
priv.buf = buf;
priv.error = 0;
@@ -422,7 +423,7 @@ int recover_file( char* des_dir,char* pathname, char* filename, struct ext2_inod
else {
int i;
- if(! inode->i_size || (inode->i_size >= 60))
+ if((! inode->i_size) || (inode->i_size >= 60))
goto errout;
buf = malloc(inode->i_size + 1);
linkname = (char*) &(inode->i_block[0]);