OpenCoverage

randread.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gl/lib/randread.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6struct randread_source-
7{-
8-
9-
10 FILE *source;-
11-
12-
13-
14-
15-
16-
17 void (*handler) (void const *);-
18 void const *handler_arg;-
19-
20-
21-
22-
23 union-
24 {-
25-
26 char c[(2 * ((1 << 8) * sizeof (isaac_word)))];-
27-
28-
29 struct isaac-
30 {-
31-
32 size_t buffered;-
33-
34-
35 struct isaac_state state;-
36-
37-
38 union-
39 {-
40 isaac_word w[(1 << 8)];-
41 unsigned char b[((1 << 8) * sizeof (isaac_word))];-
42 } data;-
43 } isaac;-
44 } buf;-
45};-
46-
47-
48-
49-
50static void __attribute__ ((__noreturn__))-
51randread_error (void const *file_name)-
52{-
53 if (file_name
file_nameDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
54 error (exit_failure,
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
55 (*__errno_location ())
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
56 ,
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
57
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
58 (*__errno_location ())
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
59 == 0 ?
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
60 dcgettext (((void *)0),
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
61 "%s: end of file"
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
62 , 5)
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
63 :
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
64 dcgettext (((void *)0),
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
65 "%s: read error"
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
66 , 5)
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
67 ,
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
68 quote (file_name));
never executed: error (exit_failure, (*__errno_location ()) , (*__errno_location ()) == 0 ? dcgettext (((void *)0), "%s: end of file" , 5) : dcgettext (((void *)0), "%s: read error" , 5) , quote (file_name));
0
69 abort ();
never executed: abort ();
0
70}-
71-
72-
73-
74-
75static struct randread_source *-
76simple_new (FILE *source, void const *handler_arg)-
77{-
78 struct randread_source *s = xmalloc (sizeof *s);-
79 s->source = source;-
80 s->handler = randread_error;-
81 s->handler_arg = handler_arg;-
82 return
executed 655 times by 7 tests: return s;
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
s;
executed 655 times by 7 tests: return s;
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
655
83}-
84-
85-
86-
87-
88-
89static void-
90get_nonce (void *buffer, size_t bufsize, size_t bytes_bound)-
91{-
92 char *buf = buffer;-
93 ssize_t seeded = 0;-
94-
95-
96 int fd = open ("/dev/urandom", -
97 00 -
98 | -
99 0-
100 );-
101 if (0 <= fd
0 <= fdDescription
TRUEevaluated 649 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
FALSEnever evaluated
)
0-649
102 {-
103 seeded = read (fd, buf, ((bufsize) < (bytes_bound) ? (bufsize) : (bytes_bound)));-
104 if (seeded < 0
seeded < 0Description
TRUEnever evaluated
FALSEevaluated 649 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
0-649
105 seeded = 0;
never executed: seeded = 0;
0
106 close (fd);-
107 }
executed 649 times by 7 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
649
108 if (seeded < bufsize
seeded < bufsizeDescription
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • shred
  • shuf
) { struct timeval v; size_t nbytes = ((
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
sizeof v) < (bufsize - seeded)
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
? (sizeof v) : (bufsize - seeded)); gettimeofday (&v,
0-618
109 ((void *)0)-
110 ); memcpy (buf + seeded, &v, nbytes); seeded += nbytes; }
executed 618 times by 6 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
;
618
111 if (seeded < bufsize
seeded < bufsizeDescription
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • shred
  • shuf
) { pid_t v; size_t nbytes = ((
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
sizeof v) < (bufsize - seeded)
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
? (sizeof v) : (bufsize - seeded)); v = getpid (); memcpy (buf + seeded, &v, nbytes); seeded += nbytes; }
executed 618 times by 6 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
;
0-618
112 if (seeded < bufsize
seeded < bufsizeDescription
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • shred
  • shuf
) { pid_t v; size_t nbytes = ((
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
sizeof v) < (bufsize - seeded)
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
? (sizeof v) : (bufsize - seeded)); v = getppid (); memcpy (buf + seeded, &v, nbytes); seeded += nbytes; }
executed 618 times by 6 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
;
0-618
113 if (seeded < bufsize
seeded < bufsizeDescription
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • shred
  • shuf
) { uid_t v; size_t nbytes = ((
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
sizeof v) < (bufsize - seeded)
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
? (sizeof v) : (bufsize - seeded)); v = getuid (); memcpy (buf + seeded, &v, nbytes); seeded += nbytes; }
executed 618 times by 6 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
;
0-618
114 if (seeded < bufsize
seeded < bufsizeDescription
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • shred
  • shuf
) { uid_t v; size_t nbytes = ((
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
sizeof v) < (bufsize - seeded)
(sizeof v) < (...size - seeded)Description
TRUEevaluated 618 times by 6 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
FALSEnever evaluated
? (sizeof v) : (bufsize - seeded)); v = getgid (); memcpy (buf + seeded, &v, nbytes); seeded += nbytes; }
executed 618 times by 6 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shuf
  • sort
;
0-618
115-
116-
117-
118-
119-
120-
121-
122}
executed 649 times by 7 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
649
123struct randread_source *-
124randread_new (char const *name, size_t bytes_bound)-
125{-
126 if (bytes_bound == 0
bytes_bound == 0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • shuf
FALSEevaluated 651 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
4-651
127 return
executed 4 times by 1 test: return simple_new ( ((void *)0) , ((void *)0) );
Executed by:
  • shuf
simple_new (
executed 4 times by 1 test: return simple_new ( ((void *)0) , ((void *)0) );
Executed by:
  • shuf
4
128 ((void *)0)
executed 4 times by 1 test: return simple_new ( ((void *)0) , ((void *)0) );
Executed by:
  • shuf
4
129 ,
executed 4 times by 1 test: return simple_new ( ((void *)0) , ((void *)0) );
Executed by:
  • shuf
4
130 ((void *)0)
executed 4 times by 1 test: return simple_new ( ((void *)0) , ((void *)0) );
Executed by:
  • shuf
4
131 );
executed 4 times by 1 test: return simple_new ( ((void *)0) , ((void *)0) );
Executed by:
  • shuf
4
132 else-
133 {-
134 FILE *source = -
135 ((void *)0)-
136 ;-
137 struct randread_source *s;-
138-
139 if (name
nameDescription
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • shred
  • sort
FALSEevaluated 649 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
2-649
140 if (! (source = fopen_safer (name, "rb"))
! (source = fo... (name, "rb"))Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • shred
  • sort
)
0-2
141 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
142 ((void *)0)
never executed: return ((void *)0) ;
0
143 ;
never executed: return ((void *)0) ;
0
144-
145 s = simple_new (source, name);-
146-
147 if (source
sourceDescription
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • shred
  • sort
FALSEevaluated 649 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
2-649
148 setvbuf (source, s->buf.c,
executed 2 times by 2 tests: setvbuf (source, s->buf.c, 0 , ((sizeof s->buf.c) < (bytes_bound) ? (sizeof s->buf.c) : (bytes_bound)));
Executed by:
  • shred
  • sort
2
149 0
executed 2 times by 2 tests: setvbuf (source, s->buf.c, 0 , ((sizeof s->buf.c) < (bytes_bound) ? (sizeof s->buf.c) : (bytes_bound)));
Executed by:
  • shred
  • sort
2
150 , ((sizeof s->buf.c) < (bytes_bound) ? (sizeof s->buf.c) : (bytes_bound)));
executed 2 times by 2 tests: setvbuf (source, s->buf.c, 0 , ((sizeof s->buf.c) < (bytes_bound) ? (sizeof s->buf.c) : (bytes_bound)));
Executed by:
  • shred
  • sort
2
151 else-
152 {-
153 s->buf.isaac.buffered = 0;-
154 get_nonce (s->buf.isaac.state.m, sizeof s->buf.isaac.state.m,-
155 bytes_bound);-
156 isaac_seed (&s->buf.isaac.state);-
157 }
executed 649 times by 7 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
649
158-
159 return
executed 651 times by 7 tests: return s;
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
s;
executed 651 times by 7 tests: return s;
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
651
160 }-
161}-
162void-
163randread_set_handler (struct randread_source *s, void (*handler) (void const *))-
164{-
165 s->handler = handler;-
166}
never executed: end of block
0
167-
168void-
169randread_set_handler_arg (struct randread_source *s, void const *handler_arg)-
170{-
171 s->handler_arg = handler_arg;-
172}
never executed: end of block
0
173-
174-
175-
176-
177-
178static void-
179readsource (struct randread_source *s, unsigned char *p, size_t size)-
180{-
181 while (-
182 1-
183 )-
184 {-
185 size_t inbytes = fread_unlocked (p,sizeof *p,size,s->source);-
186 int fread_errno = -
187 (*__errno_location ())-
188 ;-
189 p += inbytes;-
190 size -= inbytes;-
191 if (size == 0
size == 0Description
TRUEevaluated 18 times by 2 tests
Evaluated by:
  • shred
  • sort
FALSEnever evaluated
)
0-18
192 break;
executed 18 times by 2 tests: break;
Executed by:
  • shred
  • sort
18
193 -
194 (*__errno_location ()) -
195 = (ferror_unlocked (s->source) ? fread_errno : 0);-
196 s->handler (s->handler_arg);-
197 }
never executed: end of block
0
198}
executed 18 times by 2 tests: end of block
Executed by:
  • shred
  • sort
18
199-
200-
201-
202-
203-
204static void-
205readisaac (struct isaac *isaac, void *p, size_t size)-
206{-
207 size_t inbytes = isaac->buffered;-
208-
209 while (-
210 1-
211 )-
212 {-
213 char *char_p = p;-
214-
215 if (size <= inbytes
size <= inbytesDescription
TRUEevaluated 6236 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
FALSEevaluated 685 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
685-6236
216 {-
217 memcpy (p, isaac->data.b + ((1 << 8) * sizeof (isaac_word)) - inbytes, size);-
218 isaac->buffered = inbytes - size;-
219 return;
executed 6236 times by 7 tests: return;
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
6236
220 }-
221-
222 memcpy (p, isaac->data.b + ((1 << 8) * sizeof (isaac_word)) - inbytes, inbytes);-
223 p = char_p + inbytes;-
224 size -= inbytes;-
225-
226-
227-
228 if (-
229 1-
230 )-
231 {-
232 isaac_word *wp = p;-
233 while (((
((1 << 8) * si...word)) <= sizeDescription
TRUEevaluated 1023 times by 1 test
Evaluated by:
  • shred
FALSEevaluated 669 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
1 << 8) * sizeof (isaac_word)) <= size
((1 << 8) * si...word)) <= sizeDescription
TRUEevaluated 1023 times by 1 test
Evaluated by:
  • shred
FALSEevaluated 669 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
669-1023
234 {-
235 isaac_refill (&isaac->state, wp);-
236 wp += (1 << 8);-
237 size -= ((1 << 8) * sizeof (isaac_word));-
238 if (size == 0
size == 0Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • shred
FALSEevaluated 1007 times by 1 test
Evaluated by:
  • shred
)
16-1007
239 {-
240 isaac->buffered = 0;-
241 return;
executed 16 times by 1 test: return;
Executed by:
  • shred
16
242 }-
243 }
executed 1007 times by 1 test: end of block
Executed by:
  • shred
1007
244 p = wp;-
245 }
executed 669 times by 7 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
669
246-
247 isaac_refill (&isaac->state, isaac->data.w);-
248 inbytes = ((1 << 8) * sizeof (isaac_word));-
249 }
executed 669 times by 7 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
669
250}
never executed: end of block
0
251-
252-
253-
254-
255-
256void-
257randread (struct randread_source *s, void *buf, size_t size)-
258{-
259 if (s->source
s->sourceDescription
TRUEevaluated 18 times by 2 tests
Evaluated by:
  • shred
  • sort
FALSEevaluated 6252 times by 7 tests
Evaluated by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
)
18-6252
260 readsource (s, buf, size);
executed 18 times by 2 tests: readsource (s, buf, size);
Executed by:
  • shred
  • sort
18
261 else-
262 readisaac (&s->buf.isaac, buf, size);
executed 6252 times by 7 tests: readisaac (&s->buf.isaac, buf, size);
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • shuf
  • sort
6252
263}-
264-
265-
266-
267-
268-
269-
270-
271int-
272randread_free (struct randread_source *s)-
273{-
274 FILE *source = s->source;-
275 explicit_bzero (s, sizeof *s);-
276 free (s);-
277 return
executed 635 times by 6 tests: return (source ? rpl_fclose (source) : 0);
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • sort
(source ?
executed 635 times by 6 tests: return (source ? rpl_fclose (source) : 0);
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • sort
635
278 rpl_fclose
executed 635 times by 6 tests: return (source ? rpl_fclose (source) : 0);
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • sort
635
279 (source) : 0);
executed 635 times by 6 tests: return (source ? rpl_fclose (source) : 0);
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • sort
635
280}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.1.2