fix XFSQA 144
PATCH 1/1 fix XFSQA 144
Two really dumb bugs:
- "foo & 0x3FFFFFFFFFFFF" doesn't cap at 1TB, but rather at more than two magnitudes larger than that. That gets us EFBIG with typical 32bit XFS setups.
- the command array can easily overflow and thus let the test fail
Index: xfstests/dmapi/src/suite2/src/test_fileattr.c
===================================================================
RCS file: /cvs/xfs-cmds/xfstests/dmapi/src/suite2/src/test_fileattr.c,v retrieving revision 1.12
dmapi/src/suite2/src/test_fileattr.c +2 -2
@@ -160,7 +160,7 @@ main(char *ls_path;char *pathname;char test_file[100 ]; -char command[100 ]; +char command[200 ];int num_files=50 ;dm_stat_t *stat_arr;dm_stat_t dmstat;
@@ -244,7 +244,7 @@ main( stat_arr[i].dt_uid=(uid_t)(rand ()+rand ()*0x10000 ); stat_arr[i].dt_gid=(gid_t)(rand ()+rand ()*0x10000 ); stat_arr[i].dt_mode=(mode_t)((rand ()%4096 )+32768 ); - stat_arr[i].dt_size=((dm_off_t)(rand ()+rand ()*0x10000 )) &0x3FFFFFFFFFFFF ;/* 1 TB max */ + stat_arr[i].dt_size=((dm_off_t)(rand ()+rand ()*0x10000 )) &0x1FFFFFFFFFFULL ;/* 1 TB max */ }/*-----------------------------------------------------*\
Quoted 9 lines · Christoph Hellwig
Two really dumb bugs:
- "foo &
0x3FFFFFFFFFFFF" doesn't cap at 1TB, but rather at more than two magnitudes larger than that. That gets us EFBIG with typical 32bit XFS setups.
- the command array can easily overflow and thus let the test failSigned-off-by Christoph Hellwig <[email protected]>
Looks good, thanks for the fix.
Checking it in now.
Quoted 28 lines
Index:
xfstests/dmapi/src/suite2/src/test_fileattr.c
===================================================================
RCS file: /cvs/xfs-cmds/xfstests/dmapi/src/suite2/src/test_fileattr.c,v retrieving revision 1.12
diff -u -p -r1.12test_fileattr.cdmapi/src/suite2/src/test_fileattr.c +2
-2@@ -160,7 +160,7 @@ main(char *ls_path;char *pathname;char test_file[100 ]; -char command[100 ]; +char command[200 ];int num_files=50 ;dm_stat_t *stat_arr;dm_stat_t dmstat;@@ -244,7 +244,7 @@ main( stat_arr[i].dt_uid=(uid_t)(rand ()+rand ()*0x10000 ); stat_arr[i].dt_gid=(gid_t)(rand ()+rand ()*0x10000 ); stat_arr[i].dt_mode=(mode_t)((rand ()%4096 )+32768 ); - stat_arr[i].dt_size=((dm_off_t)(rand ()+rand ()*0x10000 )) &0x3FFFFFFFFFFFF ;/* 1 TB max */ + stat_arr[i].dt_size=((dm_off_t)(rand ()+rand ()*0x10000 )) &0x1FFFFFFFFFFULL ;/* 1 TB max */ }/*-----------------------------------------------------*\