| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | | - |
| 15 | char * | - |
| 16 | openat_proc_name (char buf[(( | - |
| 17 | 4096 | - |
| 18 | ) < (4096 - 64) ? ( | - |
| 19 | 4096 | - |
| 20 | ) : (4096 - 64))], int fd, char const *file) | - |
| 21 | { | - |
| 22 | char *result = buf; | - |
| 23 | int dirlen; | - |
| 24 | | - |
| 25 | | - |
| 26 | if (!*file| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 27 | { | - |
| 28 | buf[0] = '\0'; | - |
| 29 | return never executed: return buf; buf;never executed: return buf; | 0 |
| 30 | } | - |
| 31 | | - |
| 32 | | - |
| 33 | | - |
| 34 | { | - |
| 35 | enum { | - |
| 36 | PROC_SELF_FD_DIR_SIZE_BOUND | - |
| 37 | = (sizeof "/proc/self/fd/%d/" - (sizeof "%d" - 1) | - |
| 38 | + (((((sizeof (int) * 8) - (! ((__typeof__ (int)) 0 < (__typeof__ (int)) -1))) * 146 + 484) / 485) + (! ((__typeof__ (int)) 0 < (__typeof__ (int)) -1)))) | - |
| 39 | }; | - |
| 40 | | - |
| 41 | static int proc_status = 0; | - |
| 42 | if (! proc_status| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 43 | { | - |
| 44 | int proc_self_fd = open ("/proc/self/fd", | - |
| 45 | | - |
| 46 | 00 | - |
| 47 | | | - |
| 48 | 0200000 | - |
| 49 | | | - |
| 50 | 0400 | - |
| 51 | | | - |
| 52 | 04000 | - |
| 53 | ); | - |
| 54 | if (proc_self_fd < 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 55 | proc_status = -1; never executed: proc_status = -1; | 0 |
| 56 | else | - |
| 57 | { | - |
| 58 | | - |
| 59 | | - |
| 60 | | - |
| 61 | | - |
| 62 | | - |
| 63 | char dotdot_buf[PROC_SELF_FD_DIR_SIZE_BOUND + sizeof "../fd" - 1]; | - |
| 64 | sprintf (dotdot_buf, "/proc/self/fd/%d/" "../fd", proc_self_fd); | - |
| 65 | proc_status = access (dotdot_buf, | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 66 | 0| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 67 | )| TRUE | never evaluated | | FALSE | never evaluated |
? -1 : 1; | 0 |
| 68 | close (proc_self_fd); | - |
| 69 | } never executed: end of block | 0 |
| 70 | } | - |
| 71 | | - |
| 72 | if (proc_status < 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 73 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 74 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 75 | ; never executed: return ((void *)0) ; | 0 |
| 76 | else | - |
| 77 | { | - |
| 78 | size_t bufsize = PROC_SELF_FD_DIR_SIZE_BOUND + strlen (file); | - |
| 79 | if (((| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 80 | 4096| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 81 | ) < (4096 - 64)| TRUE | never evaluated | | FALSE | never evaluated |
? (| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 82 | 4096| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 83 | ) : (4096 - 64)) < bufsize| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 84 | { | - |
| 85 | result = malloc (bufsize); | - |
| 86 | if (! result| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 87 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 88 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 89 | ; never executed: return ((void *)0) ; | 0 |
| 90 | } never executed: end of block | 0 |
| 91 | | - |
| 92 | dirlen = sprintf (result, "/proc/self/fd/%d/", fd); | - |
| 93 | } never executed: end of block | 0 |
| 94 | } | - |
| 95 | strcpy (result + dirlen, file); | - |
| 96 | return never executed: return result; result;never executed: return result; | 0 |
| 97 | } | - |
| | |