| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssh/src/openbsd-compat/mktemp.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||
| 7 | static int | - | ||||||||||||||||||||||||
| 8 | mktemp_internal(char *path, int slen, int mode) | - | ||||||||||||||||||||||||
| 9 | { | - | ||||||||||||||||||||||||
| 10 | char *start, *cp, *ep; | - | ||||||||||||||||||||||||
| 11 | const char *tempchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | - | ||||||||||||||||||||||||
| 12 | unsigned int r, tries; | - | ||||||||||||||||||||||||
| 13 | struct stat sb; | - | ||||||||||||||||||||||||
| 14 | size_t len; | - | ||||||||||||||||||||||||
| 15 | int fd; | - | ||||||||||||||||||||||||
| 16 | - | |||||||||||||||||||||||||
| 17 | len = strlen(path); | - | ||||||||||||||||||||||||
| 18 | if (len == 0
| 0 | ||||||||||||||||||||||||
| 19 | - | |||||||||||||||||||||||||
| 20 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 21 | = | - | ||||||||||||||||||||||||
| 22 | 22 | - | ||||||||||||||||||||||||
| 23 | ; | - | ||||||||||||||||||||||||
| 24 | return never executed: (-1);return(-1);never executed: return(-1); | 0 | ||||||||||||||||||||||||
| 25 | } | - | ||||||||||||||||||||||||
| 26 | ep = path + len - slen; | - | ||||||||||||||||||||||||
| 27 | - | |||||||||||||||||||||||||
| 28 | tries = 1; | - | ||||||||||||||||||||||||
| 29 | for (start = ep; start > path
| 0 | ||||||||||||||||||||||||
| 30 | if (tries < 0x7fffffff / (sizeof("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") - 1)
| 0 | ||||||||||||||||||||||||
| 31 | tries *= (sizeof("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") - 1); never executed: tries *= (sizeof("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") - 1); | 0 | ||||||||||||||||||||||||
| 32 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 33 | tries *= 2; | - | ||||||||||||||||||||||||
| 34 | - | |||||||||||||||||||||||||
| 35 | do { | - | ||||||||||||||||||||||||
| 36 | for (cp = start; cp != ep
| 0 | ||||||||||||||||||||||||
| 37 | r = arc4random_uniform((sizeof("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") - 1)); | - | ||||||||||||||||||||||||
| 38 | *cp = tempchars[r]; | - | ||||||||||||||||||||||||
| 39 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 40 | - | |||||||||||||||||||||||||
| 41 | switch (mode) { | - | ||||||||||||||||||||||||
| 42 | case never executed: 0:case 0:never executed: case 0: | 0 | ||||||||||||||||||||||||
| 43 | if (lstat(path, &sb) != 0
| 0 | ||||||||||||||||||||||||
| 44 | return never executed: (return( (*__errno_location ()) == 2 ? 0 : -1);never executed: return( (*__errno_location ()) == 2 ? 0 : -1); | 0 | ||||||||||||||||||||||||
| 45 | (*
never executed: return( (*__errno_location ()) == 2 ? 0 : -1); | 0 | ||||||||||||||||||||||||
| 46 | ==
never executed: return( (*__errno_location ()) == 2 ? 0 : -1); | 0 | ||||||||||||||||||||||||
| 47 | 2
never executed: return( (*__errno_location ()) == 2 ? 0 : -1); | 0 | ||||||||||||||||||||||||
| 48 | ? 0 : -1); never executed: return( (*__errno_location ()) == 2 ? 0 : -1); | 0 | ||||||||||||||||||||||||
| 49 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 50 | case never executed: 1:case 1:never executed: case 1: | 0 | ||||||||||||||||||||||||
| 51 | fd = open(path, | - | ||||||||||||||||||||||||
| 52 | 0100 | - | ||||||||||||||||||||||||
| 53 | | | - | ||||||||||||||||||||||||
| 54 | 0200 | - | ||||||||||||||||||||||||
| 55 | | | - | ||||||||||||||||||||||||
| 56 | 02 | - | ||||||||||||||||||||||||
| 57 | , | - | ||||||||||||||||||||||||
| 58 | 0400 | - | ||||||||||||||||||||||||
| 59 | | | - | ||||||||||||||||||||||||
| 60 | 0200 | - | ||||||||||||||||||||||||
| 61 | ); | - | ||||||||||||||||||||||||
| 62 | if (fd != -1
| 0 | ||||||||||||||||||||||||
| 63 | (*
| 0 | ||||||||||||||||||||||||
| 64 | !=
| 0 | ||||||||||||||||||||||||
| 65 | 17
| 0 | ||||||||||||||||||||||||
| 66 | ) | - | ||||||||||||||||||||||||
| 67 | return never executed: (fd);return(fd);never executed: return(fd); | 0 | ||||||||||||||||||||||||
| 68 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 69 | case never executed: 2:case 2:never executed: case 2: | 0 | ||||||||||||||||||||||||
| 70 | if (mkdir(path,
| 0 | ||||||||||||||||||||||||
| 71 | 0400
| 0 | ||||||||||||||||||||||||
| 72 | |
| 0 | ||||||||||||||||||||||||
| 73 | 0200
| 0 | ||||||||||||||||||||||||
| 74 | |
| 0 | ||||||||||||||||||||||||
| 75 | 0100
| 0 | ||||||||||||||||||||||||
| 76 | ) == 0
| 0 | ||||||||||||||||||||||||
| 77 | return never executed: (0);return(0);never executed: return(0); | 0 | ||||||||||||||||||||||||
| 78 | if ( | - | ||||||||||||||||||||||||
| 79 | (*
| 0 | ||||||||||||||||||||||||
| 80 | !=
| 0 | ||||||||||||||||||||||||
| 81 | 17
| 0 | ||||||||||||||||||||||||
| 82 | ) | - | ||||||||||||||||||||||||
| 83 | return never executed: (-1);return(-1);never executed: return(-1); | 0 | ||||||||||||||||||||||||
| 84 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 85 | } | - | ||||||||||||||||||||||||
| 86 | } never executed: while (--end of block
| 0 | ||||||||||||||||||||||||
| 87 | - | |||||||||||||||||||||||||
| 88 | - | |||||||||||||||||||||||||
| 89 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 90 | = | - | ||||||||||||||||||||||||
| 91 | 17 | - | ||||||||||||||||||||||||
| 92 | ; | - | ||||||||||||||||||||||||
| 93 | return never executed: (-1);return(-1);never executed: return(-1); | 0 | ||||||||||||||||||||||||
| 94 | } | - | ||||||||||||||||||||||||
| 95 | int | - | ||||||||||||||||||||||||
| 96 | mkstemp(char *path) | - | ||||||||||||||||||||||||
| 97 | { | - | ||||||||||||||||||||||||
| 98 | return never executed: (mktemp_internal(path, 0, 1));return(mktemp_internal(path, 0, 1));never executed: return(mktemp_internal(path, 0, 1)); | 0 | ||||||||||||||||||||||||
| 99 | } | - | ||||||||||||||||||||||||
| 100 | - | |||||||||||||||||||||||||
| 101 | int | - | ||||||||||||||||||||||||
| 102 | mkstemps(char *path, int slen) | - | ||||||||||||||||||||||||
| 103 | { | - | ||||||||||||||||||||||||
| 104 | return never executed: (mktemp_internal(path, slen, 1));return(mktemp_internal(path, slen, 1));never executed: return(mktemp_internal(path, slen, 1)); | 0 | ||||||||||||||||||||||||
| 105 | } | - | ||||||||||||||||||||||||
| 106 | - | |||||||||||||||||||||||||
| 107 | char * | - | ||||||||||||||||||||||||
| 108 | mkdtemp(char *path) | - | ||||||||||||||||||||||||
| 109 | { | - | ||||||||||||||||||||||||
| 110 | int error; | - | ||||||||||||||||||||||||
| 111 | - | |||||||||||||||||||||||||
| 112 | error = mktemp_internal(path, 0, 2); | - | ||||||||||||||||||||||||
| 113 | return never executed: (errorreturn(error ? ((void *)0) : path);
never executed: return(error ? ((void *)0) : path); | 0 | ||||||||||||||||||||||||
| 114 | ((void *)0) never executed: return(error ? ((void *)0) : path); | 0 | ||||||||||||||||||||||||
| 115 | : path); never executed: return(error ? ((void *)0) : path); | 0 | ||||||||||||||||||||||||
| 116 | } | - | ||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |