Commit 5f3b0063 authored by taljeth's avatar taljeth
Browse files

+ 57: Dateigroesse nach ext2_inode_writeblk ueberpruefen

! libext2: Off-by-one bei der Groessenberechnung in ext2_inode_writeblk


git-svn-id: svn+ssh://tyndur.org/svn/libext2/trunk@116 11c54895-7735-424c-9bf9-f086a139cb1d
No related merge requests found
Showing with 67 additions and 2 deletions
+67 -2
......@@ -597,8 +597,8 @@ int ext2_inode_writeblk(ext2_inode_t* inode, uint64_t block, void* buf)
size_t block_size = ext2_sb_blocksize(inode->fs->sb);
int ret = writeblk(inode, block, buf);
if (block * block_size > inode->raw.size) {
inode->raw.size = block * block_size;
if ((block + 1) * block_size > inode->raw.size) {
inode->raw.size = (block + 1) * block_size;
}
return ret;
......
File added
#include <ext2.h>
#include <string.h>
#include <stdio.h>
#include <test.h>
/**
* Test: writeblk_file_size
* Autor: Kevin Wolf
* Zweck: Dateigroesse nach ext2_inode_writeblk testen
*/
int run_test(ext2_fs_t* fs)
{
ext2_inode_t rootdir;
ext2_inode_t testfile;
ext2_dirent_t* dirent;
unsigned char pattern[4096];
uint32_t bs;
if (!ext2_fs_mount(fs)) {
test_interror("Mounten fehlgeschlagen");
}
bs = ext2_sb_blocksize(fs->sb);
if (bs != 1024) {
test_error("Falsche Blockgroesse");
}
if (!ext2_inode_read(fs, EXT2_ROOTDIR_INODE, &rootdir)) {
test_interror("Fehler beim Lesen des Rootverzeichnis-Inode");
}
dirent = ext2_dir_get(&rootdir, "testfile");
if (!dirent) {
test_error("Datei /testfile wurde nicht gefunden");
}
if (!ext2_inode_read(fs, dirent->inode, &testfile)) {
test_interror("Fehler beim Lesen des Testdatei-Inode");
}
free(dirent);
memset(pattern, 0xaa, 4096);
ext2_inode_writeblk(&testfile, 1, &pattern);
if (testfile.raw.size != 1024 + bs) {
test_error("Dateigroesse != 1024 + bs");
}
ext2_inode_writeblk(&testfile, 0, &pattern);
if (testfile.raw.size != 1024 + bs) {
test_error("Dateigroesse != 1024 + bs [2]");
}
ext2_inode_update(&testfile);
if (!ext2_fs_unmount(fs)) {
test_interror("Unmounten fehlgeschlagen");
}
test_fsck();
test_etool();
return 0;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment