Skip to content

Commit b2c78f8

Browse files
debian/patches/byteswap_fix.diff: Fix a segfault on little-endian archs
1 parent 3b1a68d commit b2c78f8

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

debian/changelog

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
genext2fs (1.4.1-4) UNRELEASED; urgency=low
2+
3+
* debian/patches/byteswap_fix.diff: New patch by Samuel Thibault,
4+
fix a segfault in the byte swapping code on little-endian architectures
5+
(closes: 644776).
6+
7+
-- Jérémie Koenig <jk@jk.fr.eu.org> Tue, 29 Nov 2011 17:18:12 +0100
8+
19
genext2fs (1.4.1-3) unstable; urgency=low
210

311
* New maintainer (closes: 579369).

debian/patches/byteswap_fix.diff

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Index: genext2fs/genext2fs.c
2+
===================================================================
3+
--- genext2fs.orig/genext2fs.c 2011-11-29 17:36:06.000000000 +0100
4+
+++ genext2fs/genext2fs.c 2011-11-29 17:37:37.000000000 +0100
5+
@@ -1779,7 +1779,8 @@
6+
assert(nod->i_block[EXT2_DIND_BLOCK] != 0);
7+
for(i = 0; i < BLOCKSIZE/4; i++)
8+
if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i )
9+
- swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
10+
+ if (((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])
11+
+ swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
12+
swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]));
13+
if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4)
14+
return;
15+
@@ -1792,7 +1793,8 @@
16+
(BLOCKSIZE/4)*(BLOCKSIZE/4) +
17+
i*(BLOCKSIZE/4)*(BLOCKSIZE/4) +
18+
j*(BLOCKSIZE/4)) )
19+
- swap_block(get_blk(fs,b2[j]));
20+
+ if (b2[j])
21+
+ swap_block(get_blk(fs,b2[j]));
22+
else {
23+
done = 1;
24+
break;
25+
@@ -1825,7 +1827,8 @@
26+
swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]));
27+
for(i = 0; i < BLOCKSIZE/4; i++)
28+
if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i )
29+
- swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
30+
+ if (((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])
31+
+ swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
32+
if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4)
33+
return;
34+
/* Adding support for triple indirection */
35+
@@ -1839,7 +1842,8 @@
36+
(BLOCKSIZE/4)*(BLOCKSIZE/4) +
37+
i*(BLOCKSIZE/4)*(BLOCKSIZE/4) +
38+
j*(BLOCKSIZE/4)) )
39+
- swap_block(get_blk(fs,b2[j]));
40+
+ if (b2[j])
41+
+ swap_block(get_blk(fs,b2[j]));
42+
else {
43+
done = 1;
44+
break;

debian/patches/series

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
c99_scanf.diff
22
autoconf.diff
33
blocksize+creator.diff
4+
byteswap_fix.diff

0 commit comments

Comments
 (0)