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 |