| Line | Source | Count | 
|---|
| 1 |  | - | 
| 2 |  | - | 
| 3 |  | - | 
| 4 |  | - | 
| 5 | int | - | 
| 6 | dirchownmod (int fd, char const *dir, mode_t mkdir_mode, | - | 
| 7 | uid_t owner, gid_t group, | - | 
| 8 | mode_t mode, mode_t mode_bits) | - | 
| 9 | { | - | 
| 10 | struct stat st; | - | 
| 11 | int result = (fd < 0 ? stat (dir, &st) : fstat (fd, &st));| TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
 | 0-9 | 
| 12 |  | - | 
| 13 | if (result == 0 )| TRUE | evaluated 9 times by 2 tests |  | FALSE | never evaluated | 
 | 0-9 | 
| 14 | { | - | 
| 15 | mode_t dir_mode = st.st_mode; | - | 
| 16 |  | - | 
| 17 |  | - | 
| 18 |  | - | 
| 19 |  | - | 
| 20 |  | - | 
| 21 | if (! | TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
 | 0-9 | 
| 22 | (((( | TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
 | 0-9 | 
| 23 | dir_mode | TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
 | 0-9 | 
| 24 | )) & 0170000) == (0040000)) | TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
 | 0-9 | 
| 25 | ) | - | 
| 26 | { | - | 
| 27 |  | - | 
| 28 | (*__errno_location ()) | - | 
| 29 | = | - | 
| 30 | 20 | - | 
| 31 | ; | - | 
| 32 | result = -1; | - | 
| 33 | } never executed: end of block | 0 | 
| 34 | else | - | 
| 35 | { | - | 
| 36 |  | - | 
| 37 |  | - | 
| 38 |  | - | 
| 39 |  | - | 
| 40 | mode_t indeterminate = 0; | - | 
| 41 |  | - | 
| 42 |  | - | 
| 43 |  | - | 
| 44 |  | - | 
| 45 |  | - | 
| 46 |  | - | 
| 47 | if ((owner != (uid_t) -1 && owner != st.st_uid| TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
)| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0-9 | 
| 48 | || (group != (gid_t) -1 && group != st.st_gid| TRUE | never evaluated |  | FALSE | evaluated 9 times by 2 tests | 
))| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0-9 | 
| 49 | { | - | 
| 50 | result = (0 <= fd | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 51 | ? fchown (fd, owner, group) | - | 
| 52 | : mkdir_mode != (mode_t) -1 | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 53 | ? lchown (dir, owner, group) | - | 
| 54 | : chown (dir, owner, group)); | - | 
| 55 |  | - | 
| 56 |  | - | 
| 57 |  | - | 
| 58 |  | - | 
| 59 |  | - | 
| 60 |  | - | 
| 61 | if (result == 0 && (| TRUE | never evaluated |  | FALSE | never evaluated | 
dir_mode &| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 62 | (0100 | (0100 >> 3) | ((0100 >> 3) >> 3)) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 63 | ) )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 64 | indeterminate = dir_mode & ( never executed: indeterminate = dir_mode & ( 04000 | 02000 ); | 0 | 
| 65 | 04000 never executed: indeterminate = dir_mode & ( 04000 | 02000 ); | 0 | 
| 66 | | never executed: indeterminate = dir_mode & ( 04000 | 02000 ); | 0 | 
| 67 | 02000 never executed: indeterminate = dir_mode & ( 04000 | 02000 ); | 0 | 
| 68 | ); never executed: indeterminate = dir_mode & ( 04000 | 02000 ); | 0 | 
| 69 | } never executed: end of block | 0 | 
| 70 |  | - | 
| 71 |  | - | 
| 72 |  | - | 
| 73 |  | - | 
| 74 | if (result == 0 && (((| TRUE | evaluated 9 times by 2 tests |  | FALSE | never evaluated | 
dir_mode ^ mode) | indeterminate) & mode_bits)| TRUE | evaluated 2 times by 1 test |  | FALSE | evaluated 7 times by 2 tests | 
)| TRUE | evaluated 2 times by 1 test |  | FALSE | evaluated 7 times by 2 tests | 
 | 0-9 | 
| 75 | { | - | 
| 76 | mode_t chmod_mode = | - | 
| 77 | mode | (dir_mode & ( | - | 
| 78 | 04000 | - | 
| 79 | | | - | 
| 80 | 02000 | - | 
| 81 | | | - | 
| 82 | 01000 | - | 
| 83 | | | - | 
| 84 | (0400|0200|0100) | - | 
| 85 | | | - | 
| 86 | ((0400|0200|0100) >> 3) | - | 
| 87 | | | - | 
| 88 | (((0400|0200|0100) >> 3) >> 3) | - | 
| 89 | ) & ~mode_bits); | - | 
| 90 | result = (1 && 0 <= fd | TRUE | evaluated 2 times by 1 test |  | FALSE | never evaluated | 
 | 0-2 | 
| 91 | ? fchmod (fd, chmod_mode) | - | 
| 92 | : mkdir_mode != (mode_t) -1 | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 93 | ? | - | 
| 94 | chmod | - | 
| 95 | (dir, chmod_mode) | - | 
| 96 | : chmod (dir, chmod_mode)); | - | 
| 97 | } executed 2 times by 1 test:  end of block | 2 | 
| 98 | } executed 9 times by 2 tests:  end of block | 9 | 
| 99 | } | - | 
| 100 |  | - | 
| 101 | if (0 <= fd )| TRUE | evaluated 9 times by 2 tests |  | FALSE | never evaluated | 
 | 0-9 | 
| 102 | { | - | 
| 103 | if (result == 0 )| TRUE | evaluated 9 times by 2 tests |  | FALSE | never evaluated | 
 | 0-9 | 
| 104 | result = close (fd); executed 9 times by 2 tests:  result = close (fd); | 9 | 
| 105 | else | - | 
| 106 | { | - | 
| 107 | int e = | - | 
| 108 | (*__errno_location ()) | - | 
| 109 | ; | - | 
| 110 | close (fd); | - | 
| 111 |  | - | 
| 112 | (*__errno_location ()) | - | 
| 113 | = e; | - | 
| 114 | } never executed: end of block | 0 | 
| 115 | } | - | 
| 116 |  | - | 
| 117 | return executed 9 times by 2 testsresult;:  return result; executed 9 times by 2 tests:  return result; | 9 | 
| 118 | } | - | 
|  |  |  |