OpenCoverage

md5sum.c #1

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/src/md5sum.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* Compute checksums of files or strings.-
2 Copyright (C) 1995-2018 Free Software Foundation, Inc.-
3-
4 This program is free software: you can redistribute it and/or modify-
5 it under the terms of the GNU General Public License as published by-
6 the Free Software Foundation, either version 3 of the License, or-
7 (at your option) any later version.-
8-
9 This program is distributed in the hope that it will be useful,-
10 but WITHOUT ANY WARRANTY; without even the implied warranty of-
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
12 GNU General Public License for more details.-
13-
14 You should have received a copy of the GNU General Public License-
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */-
16-
17/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>. */-
18-
19#include <config.h>-
20-
21#include <getopt.h>-
22#include <sys/types.h>-
23-
24#include "system.h"-
25#include "argmatch.h"-
26#include "quote.h"-
27#include "xdectoint.h"-
28#include "xstrtol.h"-
29-
30#if HASH_ALGO_BLAKE2-
31# include "blake2/b2sum.h"-
32#endif-
33#if HASH_ALGO_MD5-
34# include "md5.h"-
35#endif-
36#if HASH_ALGO_SHA1-
37# include "sha1.h"-
38#endif-
39#if HASH_ALGO_SHA256 || HASH_ALGO_SHA224-
40# include "sha256.h"-
41#endif-
42#if HASH_ALGO_SHA512 || HASH_ALGO_SHA384-
43# include "sha512.h"-
44#endif-
45#include "die.h"-
46#include "error.h"-
47#include "fadvise.h"-
48#include "stdio--.h"-
49#include "xbinary-io.h"-
50-
51/* The official name of this program (e.g., no 'g' prefix). */-
52#if HASH_ALGO_MD5-
53# define PROGRAM_NAME "md5sum"-
54# define DIGEST_TYPE_STRING "MD5"-
55# define DIGEST_STREAM md5_stream-
56# define DIGEST_BITS 128-
57# define DIGEST_REFERENCE "RFC 1321"-
58# define DIGEST_ALIGN 4-
59#elif HASH_ALGO_BLAKE2-
60# define PROGRAM_NAME "b2sum"-
61# define DIGEST_TYPE_STRING "BLAKE2"-
62# define DIGEST_STREAM blake2fns[b2_algorithm]-
63# define DIGEST_BITS 512-
64# define DIGEST_REFERENCE "RFC 7693"-
65# define DIGEST_ALIGN 8-
66#elif HASH_ALGO_SHA1-
67# define PROGRAM_NAME "sha1sum"-
68# define DIGEST_TYPE_STRING "SHA1"-
69# define DIGEST_STREAM sha1_stream-
70# define DIGEST_BITS 160-
71# define DIGEST_REFERENCE "FIPS-180-1"-
72# define DIGEST_ALIGN 4-
73#elif HASH_ALGO_SHA256-
74# define PROGRAM_NAME "sha256sum"-
75# define DIGEST_TYPE_STRING "SHA256"-
76# define DIGEST_STREAM sha256_stream-
77# define DIGEST_BITS 256-
78# define DIGEST_REFERENCE "FIPS-180-2"-
79# define DIGEST_ALIGN 4-
80#elif HASH_ALGO_SHA224-
81# define PROGRAM_NAME "sha224sum"-
82# define DIGEST_TYPE_STRING "SHA224"-
83# define DIGEST_STREAM sha224_stream-
84# define DIGEST_BITS 224-
85# define DIGEST_REFERENCE "RFC 3874"-
86# define DIGEST_ALIGN 4-
87#elif HASH_ALGO_SHA512-
88# define PROGRAM_NAME "sha512sum"-
89# define DIGEST_TYPE_STRING "SHA512"-
90# define DIGEST_STREAM sha512_stream-
91# define DIGEST_BITS 512-
92# define DIGEST_REFERENCE "FIPS-180-2"-
93# define DIGEST_ALIGN 8-
94#elif HASH_ALGO_SHA384-
95# define PROGRAM_NAME "sha384sum"-
96# define DIGEST_TYPE_STRING "SHA384"-
97# define DIGEST_STREAM sha384_stream-
98# define DIGEST_BITS 384-
99# define DIGEST_REFERENCE "FIPS-180-2"-
100# define DIGEST_ALIGN 8-
101#else-
102# error "Can't decide which hash algorithm to compile."-
103#endif-
104-
105#if HASH_ALGO_BLAKE2-
106# define AUTHORS \-
107 proper_name ("Padraig Brady"), \-
108 proper_name ("Samuel Neves")-
109#else-
110# define AUTHORS \-
111 proper_name ("Ulrich Drepper"), \-
112 proper_name ("Scott Miller"), \-
113 proper_name ("David Madore")-
114# define DIGEST_HEX_BYTES (DIGEST_BITS / 4)-
115#endif-
116#define DIGEST_BIN_BYTES (DIGEST_BITS / 8)-
117-
118-
119/* The minimum length of a valid digest line. This length does-
120 not include any newline character at the end of a line. */-
121#if HASH_ALGO_BLAKE2-
122# define MIN_DIGEST_LINE_LENGTH 3 /* With -l 8. */-
123#else-
124# define MIN_DIGEST_LINE_LENGTH \-
125 (DIGEST_HEX_BYTES /* length of hexadecimal message digest */ \-
126 + 1 /* blank */ \-
127 + 1 /* minimum filename length */ )-
128#endif-
129-
130/* True if any of the files read were the standard input. */-
131static bool have_read_stdin;-
132-
133/* The minimum length of a valid checksum line for the selected algorithm. */-
134static size_t min_digest_line_length;-
135-
136/* Set to the length of a digest hex string for the selected algorithm. */-
137static size_t digest_hex_bytes;-
138-
139/* With --check, don't generate any output.-
140 The exit code indicates success or failure. */-
141static bool status_only = false;-
142-
143/* With --check, print a message to standard error warning about each-
144 improperly formatted checksum line. */-
145static bool warn = false;-
146-
147/* With --check, ignore missing files. */-
148static bool ignore_missing = false;-
149-
150/* With --check, suppress the "OK" printed for each verified file. */-
151static bool quiet = false;-
152-
153/* With --check, exit with a non-zero return code if any line is-
154 improperly formatted. */-
155static bool strict = false;-
156-
157/* Whether a BSD reversed format checksum is detected. */-
158static int bsd_reversed = -1;-
159-
160#if HASH_ALGO_BLAKE2-
161static char const *const algorithm_in_string[] =-
162{-
163 "blake2b", NULL-
164};-
165static char const *const algorithm_out_string[] =-
166{-
167 "BLAKE2b", NULL-
168};-
169enum Algorithm-
170{-
171 BLAKE2b-
172};-
173verify (ARRAY_CARDINALITY (algorithm_in_string) == 2);-
174verify (ARRAY_CARDINALITY (algorithm_out_string) == 2);-
175-
176static enum Algorithm b2_algorithm;-
177static uintmax_t b2_length;-
178static blake2fn blake2fns[]=-
179{-
180 blake2b_stream-
181};-
182static uintmax_t blake2_max_len[]=-
183{-
184 BLAKE2B_OUTBYTES-
185};-
186#endif /* HASH_ALGO_BLAKE2 */-
187-
188/* For long options that have no equivalent short option, use a-
189 non-character as a pseudo short option, starting with CHAR_MAX + 1. */-
190enum-
191{-
192 IGNORE_MISSING_OPTION = CHAR_MAX + 1,-
193 STATUS_OPTION,-
194 QUIET_OPTION,-
195 STRICT_OPTION,-
196 TAG_OPTION-
197};-
198-
199static struct option const long_options[] =-
200{-
201#if HASH_ALGO_BLAKE2-
202 { "length", required_argument, NULL, 'l'},-
203#endif-
204 { "binary", no_argument, NULL, 'b' },-
205 { "check", no_argument, NULL, 'c' },-
206 { "ignore-missing", no_argument, NULL, IGNORE_MISSING_OPTION},-
207 { "quiet", no_argument, NULL, QUIET_OPTION },-
208 { "status", no_argument, NULL, STATUS_OPTION },-
209 { "text", no_argument, NULL, 't' },-
210 { "warn", no_argument, NULL, 'w' },-
211 { "strict", no_argument, NULL, STRICT_OPTION },-
212 { "tag", no_argument, NULL, TAG_OPTION },-
213 { GETOPT_HELP_OPTION_DECL },-
214 { GETOPT_VERSION_OPTION_DECL },-
215 { NULL, 0, NULL, 0 }-
216};-
217-
218void-
219usage (int status)-
220{-
221 if (status != EXIT_SUCCESS)
status != 0Description
TRUEevaluated 24 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 112 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
24-112
222 emit_try_help ();
executed 24 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
24
223 else-
224 {-
225 printf (_("\-
226Usage: %s [OPTION]... [FILE]...\n\-
227Print or check %s (%d-bit) checksums.\n\-
228"),-
229 program_name,-
230 DIGEST_TYPE_STRING,-
231 DIGEST_BITS);-
232-
233 emit_stdin_note ();-
234 if (O_BINARY)
dead code: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode (default unless reading tty stdin)\n" , 5) , stdout ) ;
-
235 fputs (_("\
dead code: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode (default unless reading tty stdin)\n" , 5) , stdout ) ;
-
236\n\
dead code: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode (default unless reading tty stdin)\n" , 5) , stdout ) ;
-
237 -b, --binary read in binary mode (default unless reading tty stdin)\n\
dead code: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode (default unless reading tty stdin)\n" , 5) , stdout ) ;
-
238"
dead code: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode (default unless reading tty stdin)\n" , 5) , stdout ) ;
), stdout);
dead code: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode (default unless reading tty stdin)\n" , 5) , stdout ) ;
-
239 else-
240 fputs (_("\
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
241\n\
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
242 -b, --binary read in binary mode\n\
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
243"
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
), stdout);
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), "\n -b, --binary read in binary mode\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
244-
245 printf (_("\-
246 -c, --check read %s sums from the FILEs and check them\n"),-
247 DIGEST_TYPE_STRING);-
248#if HASH_ALGO_BLAKE2-
249 fputs (_("\-
250 -l, --length digest length in bits; must not exceed the maximum for\n\-
251 the blake2 algorithm and must be a multiple of 8\n\-
252"), stdout);-
253#endif-
254 fputs (_("\-
255 --tag create a BSD-style checksum\n\-
256"), stdout);-
257 if (O_BINARY)
dead code: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default if reading tty stdin)\n" , 5) , stdout ) ;
-
258 fputs (_("\
dead code: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default if reading tty stdin)\n" , 5) , stdout ) ;
-
259 -t, --text read in text mode (default if reading tty stdin)\n\
dead code: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default if reading tty stdin)\n" , 5) , stdout ) ;
-
260"
dead code: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default if reading tty stdin)\n" , 5) , stdout ) ;
), stdout);
dead code: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default if reading tty stdin)\n" , 5) , stdout ) ;
-
261 else-
262 fputs (_("\
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default)\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
263 -t, --text read in text mode (default)\n\
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default)\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
264"
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default)\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
), stdout);
executed 112 times by 7 tests: fputs_unlocked ( dcgettext (((void *)0), " -t, --text read in text mode (default)\n" , 5) , stdout ) ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
265 fputs (_("\-
266\n\-
267The following five options are useful only when verifying checksums:\n\-
268 --ignore-missing don't fail or report status for missing files\n\-
269 --quiet don't print OK for each successfully verified file\n\-
270 --status don't output anything, status code shows success\n\-
271 --strict exit non-zero for improperly formatted checksum lines\n\-
272 -w, --warn warn about improperly formatted checksum lines\n\-
273\n\-
274"), stdout);-
275 fputs (HELP_OPTION_DESCRIPTION, stdout);-
276 fputs (VERSION_OPTION_DESCRIPTION, stdout);-
277 printf (_("\-
278\n\-
279The sums are computed as described in %s. When checking, the input\n\-
280should be a former output of this program. The default mode is to print a\n\-
281line with checksum, a space, a character indicating input mode ('*' for binary,\-
282\n' ' for text or where binary is insignificant), and name for each FILE.\n"),-
283 DIGEST_REFERENCE);-
284 emit_ancillary_info (PROGRAM_NAME);-
285 }
executed 112 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
112
286-
287 exit (status);
executed 136 times by 7 tests: exit (status);
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
136
288}-
289-
290#define ISWHITE(c) ((c) == ' ' || (c) == '\t')-
291-
292/* Given a file name, S of length S_LEN, that is not NUL-terminated,-
293 modify it in place, performing the equivalent of this sed substitution:-
294 's/\\n/\n/g;s/\\\\/\\/g' i.e., replacing each "\\n" string with a newline-
295 and each "\\\\" with a single backslash, NUL-terminate it and return S.-
296 If S is not a valid escaped file name, i.e., if it ends with an odd number-
297 of backslashes or if it contains a backslash followed by anything other-
298 than "n" or another backslash, return NULL. */-
299-
300static char *-
301filename_unescape (char *s, size_t s_len)-
302{-
303 char *dst = s;-
304-
305 for (size_t i = 0; i < s_len; i++)
i < s_lenDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
3-8
306 {-
307 switch (s[i])-
308 {-
309 case '\\':
executed 3 times by 1 test: case '\\':
Executed by:
  • md5sum
3
310 if (i == s_len - 1)
i == s_len - 1Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
0-3
311 {-
312 /* File name ends with an unescaped backslash: invalid. */-
313 return NULL;
never executed: return ((void *)0) ;
0
314 }-
315 ++i;-
316 switch (s[i])-
317 {-
318 case 'n':
executed 1 time by 1 test: case 'n':
Executed by:
  • md5sum
1
319 *dst++ = '\n';-
320 break;
executed 1 time by 1 test: break;
Executed by:
  • md5sum
1
321 case '\\':
executed 2 times by 1 test: case '\\':
Executed by:
  • md5sum
2
322 *dst++ = '\\';-
323 break;
executed 2 times by 1 test: break;
Executed by:
  • md5sum
2
324 default:
never executed: default:
0
325 /* Only '\' or 'n' may follow a backslash. */-
326 return NULL;
never executed: return ((void *)0) ;
0
327 }-
328 break;
executed 3 times by 1 test: break;
Executed by:
  • md5sum
3
329-
330 case '\0':
never executed: case '\0':
0
331 /* The file name may not contain a NUL. */-
332 return NULL;
never executed: return ((void *)0) ;
0
333-
334 default:
executed 5 times by 1 test: default:
Executed by:
  • md5sum
5
335 *dst++ = s[i];-
336 break;
executed 5 times by 1 test: break;
Executed by:
  • md5sum
5
337 }-
338 }-
339 if (dst < s + s_len)
dst < s + s_lenDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
FALSEnever evaluated
0-3
340 *dst = '\0';
executed 3 times by 1 test: *dst = '\0';
Executed by:
  • md5sum
3
341-
342 return s;
executed 3 times by 1 test: return s;
Executed by:
  • md5sum
3
343}-
344-
345/* Return true if S is a NUL-terminated string of DIGEST_HEX_BYTES hex digits.-
346 Otherwise, return false. */-
347static bool _GL_ATTRIBUTE_PURE-
348hex_digits (unsigned char const *s)-
349{-
350 for (unsigned int i = 0; i < digest_hex_bytes; i++)
i < digest_hex_bytesDescription
TRUEevaluated 3682 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 78 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
78-3682
351 {-
352 if (!isxdigit (*s))
! ((*__ctype_b...nt) _ISxdigit)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 3680 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
2-3680
353 return false;
executed 2 times by 1 test: return 0 ;
Executed by:
  • md5sum
2
354 ++s;-
355 }
executed 3680 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
3680
356 return *s == '\0';
executed 78 times by 3 tests: return *s == '\0';
Executed by:
  • b2sum
  • md5sum
  • sha1sum
78
357}-
358-
359/* Split the checksum string S (of length S_LEN) from a BSD 'md5' or-
360 'sha1' command into two parts: a hexadecimal digest, and the file-
361 name. S is modified. Return true if successful. */-
362-
363static bool-
364bsd_split_3 (char *s, size_t s_len, unsigned char **hex_digest,-
365 char **file_name, bool escaped_filename)-
366{-
367 size_t i;-
368-
369 if (s_len == 0)
s_len == 0Description
TRUEevaluated 4 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
4-37
370 return false;
executed 4 times by 3 tests: return 0 ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
4
371-
372 /* Find end of filename. */-
373 i = s_len - 1;-
374 while (i && s[i] != ')')
iDescription
TRUEevaluated 2310 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
s[i] != ')'Description
TRUEevaluated 2273 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-2310
375 i--;
executed 2273 times by 3 tests: i--;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
2273
376-
377 if (s[i] != ')')
s[i] != ')'Description
TRUEnever evaluated
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-37
378 return false;
never executed: return 0 ;
0
379-
380 *file_name = s;-
381-
382 if (escaped_filename && filename_unescape (s, i) == NULL)
escaped_filenameDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 34 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
filename_unesc...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
0-34
383 return false;
never executed: return 0 ;
0
384-
385 s[i++] = '\0';-
386-
387 while (ISWHITE (s[i]))
(s[i]) == ' 'Description
TRUEevaluated 23 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
(s[i]) == '\t'Description
TRUEnever evaluated
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-37
388 i++;
executed 23 times by 3 tests: i++;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
23
389-
390 if (s[i] != '=')
s[i] != '='Description
TRUEnever evaluated
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-37
391 return false;
never executed: return 0 ;
0
392-
393 i++;-
394-
395 while (ISWHITE (s[i]))
(s[i]) == ' 'Description
TRUEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
(s[i]) == '\t'Description
TRUEnever evaluated
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-37
396 i++;
executed 37 times by 3 tests: i++;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
37
397-
398 *hex_digest = (unsigned char *) &s[i];-
399-
400 return hex_digits (*hex_digest);
executed 37 times by 3 tests: return hex_digits (*hex_digest);
Executed by:
  • b2sum
  • md5sum
  • sha1sum
37
401}-
402-
403/* Split the string S (of length S_LEN) into three parts:-
404 a hexadecimal digest, binary flag, and the file name.-
405 S is modified. Return true if successful. */-
406-
407static bool-
408split_3 (char *s, size_t s_len,-
409 unsigned char **hex_digest, int *binary, char **file_name)-
410{-
411 bool escaped_filename = false;-
412 size_t algo_name_len;-
413-
414 size_t i = 0;-
415 while (ISWHITE (s[i]))
(s[i]) == ' 'Description
TRUEnever evaluated
FALSEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
(s[i]) == '\t'Description
TRUEnever evaluated
FALSEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-95
416 ++i;
never executed: ++i;
0
417-
418 if (s[i] == '\\')
s[i] == '\\'Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 92 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
3-92
419 {-
420 ++i;-
421 escaped_filename = true;-
422 }
executed 3 times by 1 test: end of block
Executed by:
  • md5sum
3
423-
424 /* Check for BSD-style checksum line. */-
425-
426 algo_name_len = strlen (DIGEST_TYPE_STRING);-
427 if (STREQ_LEN (s + i, DIGEST_TYPE_STRING, algo_name_len))
never executed: __result = (((const unsigned char *) (const char *) ( s + i ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "BLAKE2" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
( (__extension..._len ))) == 0)Description
TRUEevaluated 44 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 51 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__builtin_cons...lgo_name_len )Description
TRUEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
__builtin_constant_p ( s + i )Description
TRUEnever evaluated
FALSEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
strlen ( s + i...go_name_len ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...p ( "BLAKE2" )Description
TRUEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
strlen ( "BLAK...go_name_len ))Description
TRUEnever evaluated
FALSEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-95
428 {-
429 i += algo_name_len;-
430#if HASH_ALGO_BLAKE2-
431 /* Terminate and match algorithm name. */-
432 char const *algo_name = &s[i - algo_name_len];-
433 /* Skip algorithm variants. */-
434 while (s[i] && ! ISWHITE (s[i]) && s[i] != '-' && s[i] != '(')
s[i]Description
TRUEevaluated 44 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • b2sum
(s[i]) == ' 'Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 38 times by 1 test
Evaluated by:
  • b2sum
(s[i]) == '\t'Description
TRUEnever evaluated
FALSEevaluated 38 times by 1 test
Evaluated by:
  • b2sum
s[i] != '-'Description
TRUEevaluated 27 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 11 times by 1 test
Evaluated by:
  • b2sum
s[i] != '('Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 6 times by 1 test
Evaluated by:
  • b2sum
0-44
435 ++i;
executed 21 times by 1 test: ++i;
Executed by:
  • b2sum
21
436 bool length_specified = s[i] == '-';-
437 bool openssl_format = s[i] == '('; /* and no length_specified */-
438 s[i++] = '\0';-
439 ptrdiff_t algo = argmatch (algo_name, algorithm_out_string, NULL, 0);-
440 if (algo < 0)
algo < 0Description
TRUEnever evaluated
FALSEevaluated 25 times by 1 test
Evaluated by:
  • b2sum
0-25
441 return false;
never executed: return 0 ;
0
442 else-
443 b2_algorithm = algo;
executed 25 times by 1 test: b2_algorithm = algo;
Executed by:
  • b2sum
25
444 if (openssl_format)
openssl_formatDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 19 times by 1 test
Evaluated by:
  • b2sum
6-19
445 s[--i] = '(';
executed 6 times by 1 test: s[--i] = '(';
Executed by:
  • b2sum
6
446-
447 if (length_specified)
length_specifiedDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 14 times by 1 test
Evaluated by:
  • b2sum
11-14
448 {-
449 unsigned long int tmp_ulong;-
450 if (xstrtoul (s + i, NULL, 0, &tmp_ulong, NULL) == LONGINT_OK
xstrtoul (s + ... == LONGINT_OKDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 1 time by 1 test
Evaluated by:
  • b2sum
1-10
451 && 0 < tmp_ulong && tmp_ulong <= blake2_max_len[b2_algorithm] * 8
0 < tmp_ulongDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • b2sum
FALSEnever evaluated
tmp_ulong <= b...algorithm] * 8Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • b2sum
FALSEnever evaluated
0-10
452 && tmp_ulong % 8 == 0)
tmp_ulong % 8 == 0Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • b2sum
FALSEnever evaluated
0-10
453 b2_length = tmp_ulong;
executed 10 times by 1 test: b2_length = tmp_ulong;
Executed by:
  • b2sum
10
454 else-
455 return false;
executed 1 time by 1 test: return 0 ;
Executed by:
  • b2sum
1
456-
457 while (ISDIGIT (s[i]))
((unsigned int...]) - '0' <= 9)Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 10 times by 1 test
Evaluated by:
  • b2sum
10-30
458 ++i;
executed 30 times by 1 test: ++i;
Executed by:
  • b2sum
30
459 }
executed 10 times by 1 test: end of block
Executed by:
  • b2sum
10
460 else-
461 b2_length = blake2_max_len[b2_algorithm] * 8;
executed 14 times by 1 test: b2_length = blake2_max_len[b2_algorithm] * 8;
Executed by:
  • b2sum
14
462-
463 digest_hex_bytes = b2_length / 4;-
464#endif-
465 if (s[i] == ' ')
s[i] == ' 'Description
TRUEevaluated 20 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 23 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
20-23
466 ++i;
executed 20 times by 3 tests: ++i;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
20
467 if (s[i] == '(')
s[i] == '('Description
TRUEevaluated 41 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • b2sum
2-41
468 {-
469 ++i;-
470 *binary = 0;-
471 return bsd_split_3 (s + i, s_len - i,
executed 41 times by 3 tests: return bsd_split_3 (s + i, s_len - i, hex_digest, file_name, escaped_filename);
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
472 hex_digest, file_name, escaped_filename);
executed 41 times by 3 tests: return bsd_split_3 (s + i, s_len - i, hex_digest, file_name, escaped_filename);
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
473 }-
474 return false;
executed 2 times by 1 test: return 0 ;
Executed by:
  • b2sum
2
475 }-
476-
477 /* Ignore this line if it is too short.-
478 Each line must have at least 'min_digest_line_length - 1' (or one more, if-
479 the first is a backslash) more characters to contain correct message digest-
480 information. */-
481 if (s_len - i < min_digest_line_length + (s[i] == '\\'))
s_len - i < mi...(s[i] == '\\')Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 47 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
4-47
482 return false;
executed 4 times by 1 test: return 0 ;
Executed by:
  • md5sum
4
483-
484 *hex_digest = (unsigned char *) &s[i];-
485-
486#if HASH_ALGO_BLAKE2-
487 /* Auto determine length. */-
488 unsigned char const *hp = *hex_digest;-
489 digest_hex_bytes = 0;-
490 while (isxdigit (*hp++))
((*__ctype_b_l...nt) _ISxdigit)Description
TRUEevaluated 320 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 4 times by 1 test
Evaluated by:
  • b2sum
4-320
491 digest_hex_bytes++;
executed 320 times by 1 test: digest_hex_bytes++;
Executed by:
  • b2sum
320
492 if (digest_hex_bytes < 2 || digest_hex_bytes % 2
digest_hex_bytes < 2Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • b2sum
digest_hex_bytes % 2Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • b2sum
0-4
493 || blake2_max_len[b2_algorithm] * 2 < digest_hex_bytes)
blake2_max_len...gest_hex_bytesDescription
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • b2sum
0-4
494 return false;
never executed: return 0 ;
0
495 b2_length = digest_hex_bytes * 4;-
496#endif-
497-
498 /* The first field has to be the n-character hexadecimal-
499 representation of the message digest. If it is not followed-
500 immediately by a white space it's an error. */-
501 i += digest_hex_bytes;-
502 if (!ISWHITE (s[i]))
(s[i]) == ' 'Description
TRUEevaluated 43 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
FALSEevaluated 4 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
(s[i]) == '\t'Description
TRUEnever evaluated
FALSEevaluated 4 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
0-43
503 return false;
executed 4 times by 2 tests: return 0 ;
Executed by:
  • md5sum
  • sha1sum
4
504-
505 s[i++] = '\0';-
506-
507 if (! hex_digits (*hex_digest))
! hex_digits (*hex_digest)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 41 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
2-41
508 return false;
executed 2 times by 1 test: return 0 ;
Executed by:
  • md5sum
2
509-
510 /* If "bsd reversed" format detected. */-
511 if ((s_len - i == 1) || (s[i] != ' ' && s[i] != '*'))
(s_len - i == 1)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 38 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
s[i] != ' 'Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 34 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
s[i] != '*'Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
2-38
512 {-
513 /* Don't allow mixing bsd and standard formats,-
514 to minimize security issues with attackers-
515 renaming files with leading spaces.-
516 This assumes that with bsd format checksums-
517 that the first file name does not have-
518 a leading ' ' or '*'. */-
519 if (bsd_reversed == 0)
bsd_reversed == 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
2-3
520 return false;
executed 2 times by 1 test: return 0 ;
Executed by:
  • md5sum
2
521 bsd_reversed = 1;-
522 }
executed 3 times by 1 test: end of block
Executed by:
  • md5sum
3
523 else if (bsd_reversed != 1)
bsd_reversed != 1Description
TRUEevaluated 34 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
2-34
524 {-
525 bsd_reversed = 0;-
526 *binary = (s[i++] == '*');-
527 }
executed 34 times by 2 tests: end of block
Executed by:
  • b2sum
  • md5sum
34
528-
529 /* All characters between the type indicator and end of line are-
530 significant -- that includes leading and trailing white space. */-
531 *file_name = &s[i];-
532-
533 if (escaped_filename)
escaped_filenameDescription
TRUEnever evaluated
FALSEevaluated 39 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
0-39
534 return filename_unescape (&s[i], s_len - i) != NULL;
never executed: return filename_unescape (&s[i], s_len - i) != ((void *)0) ;
0
535-
536 return true;
executed 39 times by 2 tests: return 1 ;
Executed by:
  • b2sum
  • md5sum
39
537}-
538-
539/* If ESCAPE is true, then translate each NEWLINE byte to the string, "\\n",-
540 and each backslash to "\\\\". */-
541static void-
542print_filename (char const *file, bool escape)-
543{-
544 if (! escape)
! escapeDescription
TRUEevaluated 1865 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 10 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
10-1865
545 {-
546 fputs (file, stdout);-
547 return;
executed 1865 times by 7 tests: return;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
1865
548 }-
549-
550 while (*file)
*fileDescription
TRUEevaluated 45 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 10 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
10-45
551 {-
552 switch (*file)-
553 {-
554 case '\n':
executed 6 times by 2 tests: case '\n':
Executed by:
  • md5sum
  • sha1sum
6
555 fputs ("\\n", stdout);-
556 break;
executed 6 times by 2 tests: break;
Executed by:
  • md5sum
  • sha1sum
6
557-
558 case '\\':
executed 6 times by 2 tests: case '\\':
Executed by:
  • md5sum
  • sha1sum
6
559 fputs ("\\\\", stdout);-
560 break;
executed 6 times by 2 tests: break;
Executed by:
  • md5sum
  • sha1sum
6
561-
562 default:
executed 33 times by 2 tests: default:
Executed by:
  • md5sum
  • sha1sum
33
563 putchar (*file);-
564 break;
executed 33 times by 2 tests: break;
Executed by:
  • md5sum
  • sha1sum
33
565 }-
566 file++;-
567 }
executed 45 times by 2 tests: end of block
Executed by:
  • md5sum
  • sha1sum
45
568}
executed 10 times by 2 tests: end of block
Executed by:
  • md5sum
  • sha1sum
10
569-
570/* An interface to the function, DIGEST_STREAM.-
571 Operate on FILENAME (it may be "-").-
572-
573 *BINARY indicates whether the file is binary. BINARY < 0 means it-
574 depends on whether binary mode makes any difference and the file is-
575 a terminal; in that case, clear *BINARY if the file was treated as-
576 text because it was a terminal.-
577-
578 Put the checksum in *BIN_RESULT, which must be properly aligned.-
579 Put true in *MISSING if the file can't be opened due to ENOENT.-
580 Return true if successful. */-
581-
582static bool-
583digest_file (const char *filename, int *binary, unsigned char *bin_result,-
584 bool *missing)-
585{-
586 FILE *fp;-
587 int err;-
588 bool is_stdin = STREQ (filename, "-");
never executed: __result = (((const unsigned char *) (const char *) ( filename ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "-" ))[3] - __s2[3]);
never executed: end of block
executed 13 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 1886 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEnever evaluated
__result == 0Description
TRUEevaluated 13 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 1873 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
__s2_len > 1Description
TRUEnever evaluated
FALSEevaluated 13 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-1886
589-
590 *missing = false;-
591-
592 if (is_stdin)
is_stdinDescription
TRUEevaluated 13 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 1873 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
13-1873
593 {-
594 have_read_stdin = true;-
595 fp = stdin;-
596 if (O_BINARY && *binary)
dead code: *binary
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
597 {
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
598 if (*binary < 0)
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
599 *binary = ! isatty (STDIN_FILENO);
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
600 if (*binary)
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
601 xset_binary_mode (STDIN_FILENO, O_BINARY);
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
602 }
dead code: { if (*binary < 0) *binary = ! isatty ( 0 ); if (*binary) xset_binary_mode ( 0 , 0 ); }
-
603 }
executed 13 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
13
604 else-
605 {-
606 fp = fopen (filename, (O_BINARY && *binary ? "rb" : "r"));-
607 if (fp == NULL)
fp == ((void *)0)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 1867 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
6-1867
608 {-
609 if (ignore_missing && errno == ENOENT)
ignore_missingDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
(*__errno_location ()) == 2Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
FALSEnever evaluated
0-4
610 {-
611 *missing = true;-
612 return true;
executed 4 times by 1 test: return 1 ;
Executed by:
  • md5sum
4
613 }-
614 error (0, errno, "%s", quotef (filename));-
615 return false;
executed 2 times by 1 test: return 0 ;
Executed by:
  • md5sum
2
616 }-
617 }
executed 1867 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
1867
618-
619 fadvise (fp, FADVISE_SEQUENTIAL);-
620-
621#if HASH_ALGO_BLAKE2-
622 err = DIGEST_STREAM (fp, bin_result, b2_length / 8);-
623#else-
624 err = DIGEST_STREAM (fp, bin_result);-
625#endif-
626 if (err)
errDescription
TRUEnever evaluated
FALSEevaluated 1880 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-1880
627 {-
628 error (0, errno, "%s", quotef (filename));-
629 if (fp != stdin)
fp != stdinDescription
TRUEnever evaluated
FALSEnever evaluated
0
630 fclose (fp);
never executed: rpl_fclose (fp);
0
631 return false;
never executed: return 0 ;
0
632 }-
633-
634 if (!is_stdin && fclose (fp) != 0)
!is_stdinDescription
TRUEevaluated 1867 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 13 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
rpl_fclose (fp) != 0Description
TRUEnever evaluated
FALSEevaluated 1867 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-1867
635 {-
636 error (0, errno, "%s", quotef (filename));-
637 return false;
never executed: return 0 ;
0
638 }-
639-
640 return true;
executed 1880 times by 7 tests: return 1 ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
1880
641}-
642-
643static bool-
644digest_check (const char *checkfile_name)-
645{-
646 FILE *checkfile_stream;-
647 uintmax_t n_misformatted_lines = 0;-
648 uintmax_t n_improperly_formatted_lines = 0;-
649 uintmax_t n_mismatched_checksums = 0;-
650 uintmax_t n_open_or_read_failures = 0;-
651 bool properly_formatted_lines = false;-
652 bool matched_checksums = false;-
653 unsigned char bin_buffer_unaligned[DIGEST_BIN_BYTES + DIGEST_ALIGN];-
654 /* Make sure bin_buffer is properly aligned. */-
655 unsigned char *bin_buffer = ptr_align (bin_buffer_unaligned, DIGEST_ALIGN);-
656 uintmax_t line_number;-
657 char *line;-
658 size_t line_chars_allocated;-
659 bool is_stdin = STREQ (checkfile_name, "-");
never executed: __result = (((const unsigned char *) (const char *) ( checkfile_name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "-" ))[3] - __s2[3]);
never executed: end of block
executed 1 time by 1 test: end of block
Executed by:
  • md5sum
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 41 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
__result == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__s2_len > 1Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-41
660-
661 if (is_stdin)
is_stdinDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
1-40
662 {-
663 have_read_stdin = true;-
664 checkfile_name = _("standard input");-
665 checkfile_stream = stdin;-
666 }
executed 1 time by 1 test: end of block
Executed by:
  • md5sum
1
667 else-
668 {-
669 checkfile_stream = fopen (checkfile_name, "r");-
670 if (checkfile_stream == NULL)
checkfile_stre...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-40
671 {-
672 error (0, errno, "%s", quotef (checkfile_name));-
673 return false;
never executed: return 0 ;
0
674 }-
675 }
executed 40 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
40
676-
677 line_number = 0;-
678 line = NULL;-
679 line_chars_allocated = 0;-
680 do-
681 {-
682 char *filename IF_LINT ( = NULL);-
683 int binary;-
684 unsigned char *hex_digest IF_LINT ( = NULL);-
685 ssize_t line_length;-
686-
687 ++line_number;-
688 if (line_number == 0)
line_number == 0Description
TRUEnever evaluated
FALSEevaluated 134 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-134
689 die (EXIT_FAILURE, 0, _("%s: too many checksum lines"),
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, 0, dcgettext (((void *)0), \"%s: too many checksum lines\", 5), quotearg_n_style_colon (0, shell_escape_quoting_style, checkfile_name)), assume (false))" ")"); int _gl_dummy; }...)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , 0, dcgettext (((void *)0), "%s: too many checksum lines" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, checkfile_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
690 quotef (checkfile_name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, 0, dcgettext (((void *)0), \"%s: too many checksum lines\", 5), quotearg_n_style_colon (0, shell_escape_quoting_style, checkfile_name)), assume (false))" ")"); int _gl_dummy; }...)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , 0, dcgettext (((void *)0), "%s: too many checksum lines" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, checkfile_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
691-
692 line_length = getline (&line, &line_chars_allocated, checkfile_stream);-
693 if (line_length <= 0)
line_length <= 0Description
TRUEevaluated 39 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
39-95
694 break;
executed 39 times by 3 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
39
695-
696 /* Ignore comment lines, which begin with a '#' character. */-
697 if (line[0] == '#')
line[0] == '#'Description
TRUEnever evaluated
FALSEevaluated 95 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-95
698 continue;
never executed: continue;
0
699-
700 /* Remove any trailing newline. */-
701 if (line[line_length - 1] == '\n')
line[line_length - 1] == '\n'Description
TRUEevaluated 93 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
2-93
702 line[--line_length] = '\0';
executed 93 times by 3 tests: line[--line_length] = '\0';
Executed by:
  • b2sum
  • md5sum
  • sha1sum
93
703-
704 if (! (split_3 (line, line_length, &hex_digest, &binary, &filename)
split_3 (line,...ry, &filename)Description
TRUEevaluated 76 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
19-76
705 && ! (is_stdin && STREQ (filename, "-"))))
never executed: __result = (((const unsigned char *) (const char *) ( filename ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "-" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
is_stdinDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 74 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
( __extension_...)))); }) == 0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-74
706 {-
707 ++n_misformatted_lines;-
708-
709 if (warn)
warnDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 18 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
1-18
710 {-
711 error (0, 0,-
712 _("%s: %" PRIuMAX-
713 ": improperly formatted %s checksum line"),-
714 quotef (checkfile_name), line_number,-
715 DIGEST_TYPE_STRING);-
716 }
executed 1 time by 1 test: end of block
Executed by:
  • md5sum
1
717-
718 ++n_improperly_formatted_lines;-
719 }
executed 19 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
19
720 else-
721 {-
722 static const char bin2hex[] = { '0', '1', '2', '3',-
723 '4', '5', '6', '7',-
724 '8', '9', 'a', 'b',-
725 'c', 'd', 'e', 'f' };-
726 bool ok;-
727 bool missing;-
728 /* Only escape in the edge case producing multiple lines,-
729 to ease automatic processing of status output. */-
730 bool needs_escape = ! status_only && strchr (filename, '\n');
! status_onlyDescription
TRUEevaluated 71 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
(__extension__...ame , '\n' )))Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 70 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__builtin_constant_p ( '\n' )Description
TRUEevaluated 71 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
!__builtin_con...p ( filename )Description
TRUEevaluated 71 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
( '\n' ) == '\0'Description
TRUEnever evaluated
FALSEevaluated 71 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-71
731-
732 properly_formatted_lines = true;-
733-
734 ok = digest_file (filename, &binary, bin_buffer, &missing);-
735-
736 if (!ok)
!okDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 74 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
2-74
737 {-
738 ++n_open_or_read_failures;-
739 if (!status_only)
!status_onlyDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
FALSEnever evaluated
0-2
740 {-
741 if (needs_escape)
needs_escapeDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
0-2
742 putchar ('\\');
never executed: putchar_unlocked ('\\');
0
743 print_filename (filename, needs_escape);-
744 printf (": %s\n", _("FAILED open or read"));-
745 }
executed 2 times by 1 test: end of block
Executed by:
  • md5sum
2
746 }
executed 2 times by 1 test: end of block
Executed by:
  • md5sum
2
747 else if (ignore_missing && missing)
ignore_missingDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 66 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
missingDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
4-66
748 {-
749 /* Ignore missing files with --ignore-missing. */-
750 ;-
751 }
executed 4 times by 1 test: end of block
Executed by:
  • md5sum
4
752 else-
753 {-
754 size_t digest_bin_bytes = digest_hex_bytes / 2;-
755 size_t cnt;-
756-
757 /* Compare generated binary number with text representation-
758 in check file. Ignore case of hex digits. */-
759 for (cnt = 0; cnt < digest_bin_bytes; ++cnt)
cnt < digest_bin_bytesDescription
TRUEevaluated 1554 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 60 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
60-1554
760 {-
761 if (tolower (hex_digest[2 * cnt])
never executed: end of block
never executed: __res = tolower ( hex_digest[2 * cnt] );
executed 1554 times by 3 tests: __res = (*__ctype_tolower_loc ())[(int) ( hex_digest[2 * cnt] )];
Executed by:
  • b2sum
  • md5sum
  • sha1sum
sizeof ( hex_d...2 * cnt] ) > 1Description
TRUEnever evaluated
FALSEevaluated 1554 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__builtin_cons...est[2 * cnt] )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__...fer[cnt] >> 4]Description
TRUEevaluated 10 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 1544 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0-1554
762 != bin2hex[bin_buffer[cnt] >> 4]
(__extension__...fer[cnt] >> 4]Description
TRUEevaluated 10 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 1544 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
10-1544
763 || (tolower (hex_digest[2 * cnt + 1])
never executed: end of block
never executed: __res = tolower ( hex_digest[2 * cnt + 1] );
executed 1544 times by 3 tests: __res = (*__ctype_tolower_loc ())[(int) ( hex_digest[2 * cnt + 1] )];
Executed by:
  • b2sum
  • md5sum
  • sha1sum
sizeof ( hex_d...cnt + 1] ) > 1Description
TRUEnever evaluated
FALSEevaluated 1544 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__builtin_cons...2 * cnt + 1] )Description
TRUEnever evaluated
FALSEnever evaluated
( (__extension...[cnt] & 0xf]))Description
TRUEnever evaluated
FALSEevaluated 1544 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0-1544
764 != (bin2hex[bin_buffer[cnt] & 0xf])))
( (__extension...[cnt] & 0xf]))Description
TRUEnever evaluated
FALSEevaluated 1544 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-1544
765 break;
executed 10 times by 2 tests: break;
Executed by:
  • md5sum
  • sha1sum
10
766 }
executed 1544 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
1544
767 if (cnt != digest_bin_bytes)
cnt != digest_bin_bytesDescription
TRUEevaluated 10 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 60 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
10-60
768 ++n_mismatched_checksums;
executed 10 times by 2 tests: ++n_mismatched_checksums;
Executed by:
  • md5sum
  • sha1sum
10
769 else-
770 matched_checksums = true;
executed 60 times by 3 tests: matched_checksums = 1 ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
60
771-
772 if (!status_only)
!status_onlyDescription
TRUEevaluated 65 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
5-65
773 {-
774 if (cnt != digest_bin_bytes || ! quiet)
cnt != digest_bin_bytesDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 60 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
! quietDescription
TRUEevaluated 58 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
2-60
775 {-
776 if (needs_escape)
needs_escapeDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
1-62
777 putchar ('\\');
executed 1 time by 1 test: putchar_unlocked ('\\');
Executed by:
  • md5sum
1
778 print_filename (filename, needs_escape);-
779 }
executed 63 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
63
780-
781 if (cnt != digest_bin_bytes)
cnt != digest_bin_bytesDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 60 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
5-60
782 printf (": %s\n", _("FAILED"));
executed 5 times by 1 test: printf (": %s\n", dcgettext (((void *)0), "FAILED" , 5) );
Executed by:
  • md5sum
5
783 else if (!quiet)
!quietDescription
TRUEevaluated 58 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 2 times by 1 test
Evaluated by:
  • md5sum
2-58
784 printf (": %s\n", _("OK"));
executed 58 times by 3 tests: printf (": %s\n", dcgettext (((void *)0), "OK" , 5) );
Executed by:
  • b2sum
  • md5sum
  • sha1sum
58
785 }
executed 65 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
65
786 }
executed 70 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
70
787 }-
788 }-
789 while (!feof (checkfile_stream) && !ferror (checkfile_stream));
!feof_unlocked...ckfile_stream)Description
TRUEevaluated 93 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
!ferror_unlock...ckfile_stream)Description
TRUEevaluated 93 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEnever evaluated
0-93
790-
791 free (line);-
792-
793 if (ferror (checkfile_stream))
ferror_unlocke...ckfile_stream)Description
TRUEnever evaluated
FALSEevaluated 41 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-41
794 {-
795 error (0, 0, _("%s: read error"), quotef (checkfile_name));-
796 return false;
never executed: return 0 ;
0
797 }-
798-
799 if (!is_stdin && fclose (checkfile_stream) != 0)
!is_stdinDescription
TRUEevaluated 40 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
rpl_fclose (ch...e_stream) != 0Description
TRUEnever evaluated
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
0-40
800 {-
801 error (0, errno, "%s", quotef (checkfile_name));-
802 return false;
never executed: return 0 ;
0
803 }-
804-
805 if (! properly_formatted_lines)
! properly_formatted_linesDescription
TRUEevaluated 8 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 33 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
8-33
806 {-
807 /* Warn if no tests are found. */-
808 error (0, 0, _("%s: no properly formatted %s checksum lines found"),-
809 quotef (checkfile_name), DIGEST_TYPE_STRING);-
810 }
executed 8 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
8
811 else-
812 {-
813 if (!status_only)
!status_onlyDescription
TRUEevaluated 28 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
5-28
814 {-
815 if (n_misformatted_lines != 0)
n_misformatted_lines != 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 22 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
6-22
816 error (0, 0,
executed 6 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " line is improperly formatted" , "WARNING: %" "l" "u" " lines are improperly formatted" , select_plural (n_misformatted_lines) , 5) ), n_misformatted_lines);
Executed by:
  • md5sum
6
817 (ngettext
executed 6 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " line is improperly formatted" , "WARNING: %" "l" "u" " lines are improperly formatted" , select_plural (n_misformatted_lines) , 5) ), n_misformatted_lines);
Executed by:
  • md5sum
6
818 ("WARNING: %" PRIuMAX " line is improperly formatted",
executed 6 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " line is improperly formatted" , "WARNING: %" "l" "u" " lines are improperly formatted" , select_plural (n_misformatted_lines) , 5) ), n_misformatted_lines);
Executed by:
  • md5sum
6
819 "WARNING: %" PRIuMAX " lines are improperly formatted",
executed 6 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " line is improperly formatted" , "WARNING: %" "l" "u" " lines are improperly formatted" , select_plural (n_misformatted_lines) , 5) ), n_misformatted_lines);
Executed by:
  • md5sum
6
820 select_plural (n_misformatted_lines))),
executed 6 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " line is improperly formatted" , "WARNING: %" "l" "u" " lines are improperly formatted" , select_plural (n_misformatted_lines) , 5) ), n_misformatted_lines);
Executed by:
  • md5sum
6
821 n_misformatted_lines);
executed 6 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " line is improperly formatted" , "WARNING: %" "l" "u" " lines are improperly formatted" , select_plural (n_misformatted_lines) , 5) ), n_misformatted_lines);
Executed by:
  • md5sum
6
822-
823 if (n_open_or_read_failures != 0)
n_open_or_read_failures != 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
1-27
824 error (0, 0,
executed 1 time by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " listed file could not be read" , "WARNING: %" "l" "u" " listed files could not be read" , select_plural (n_open_or_read_failures) , 5) ), n_open_or_read_failures);
Executed by:
  • md5sum
1
825 (ngettext
executed 1 time by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " listed file could not be read" , "WARNING: %" "l" "u" " listed files could not be read" , select_plural (n_open_or_read_failures) , 5) ), n_open_or_read_failures);
Executed by:
  • md5sum
1
826 ("WARNING: %" PRIuMAX " listed file could not be read",
executed 1 time by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " listed file could not be read" , "WARNING: %" "l" "u" " listed files could not be read" , select_plural (n_open_or_read_failures) , 5) ), n_open_or_read_failures);
Executed by:
  • md5sum
1
827 "WARNING: %" PRIuMAX " listed files could not be read",
executed 1 time by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " listed file could not be read" , "WARNING: %" "l" "u" " listed files could not be read" , select_plural (n_open_or_read_failures) , 5) ), n_open_or_read_failures);
Executed by:
  • md5sum
1
828 select_plural (n_open_or_read_failures))),
executed 1 time by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " listed file could not be read" , "WARNING: %" "l" "u" " listed files could not be read" , select_plural (n_open_or_read_failures) , 5) ), n_open_or_read_failures);
Executed by:
  • md5sum
1
829 n_open_or_read_failures);
executed 1 time by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " listed file could not be read" , "WARNING: %" "l" "u" " listed files could not be read" , select_plural (n_open_or_read_failures) , 5) ), n_open_or_read_failures);
Executed by:
  • md5sum
1
830-
831 if (n_mismatched_checksums != 0)
n_mismatched_checksums != 0Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 25 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
3-25
832 error (0, 0,
executed 3 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " computed checksum did NOT match" , "WARNING: %" "l" "u" " computed checksums did NOT match" , select_plural (n_mismatched_checksums) , 5) ), n_mismatched_checksums);
Executed by:
  • md5sum
3
833 (ngettext
executed 3 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " computed checksum did NOT match" , "WARNING: %" "l" "u" " computed checksums did NOT match" , select_plural (n_mismatched_checksums) , 5) ), n_mismatched_checksums);
Executed by:
  • md5sum
3
834 ("WARNING: %" PRIuMAX " computed checksum did NOT match",
executed 3 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " computed checksum did NOT match" , "WARNING: %" "l" "u" " computed checksums did NOT match" , select_plural (n_mismatched_checksums) , 5) ), n_mismatched_checksums);
Executed by:
  • md5sum
3
835 "WARNING: %" PRIuMAX " computed checksums did NOT match",
executed 3 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " computed checksum did NOT match" , "WARNING: %" "l" "u" " computed checksums did NOT match" , select_plural (n_mismatched_checksums) , 5) ), n_mismatched_checksums);
Executed by:
  • md5sum
3
836 select_plural (n_mismatched_checksums))),
executed 3 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " computed checksum did NOT match" , "WARNING: %" "l" "u" " computed checksums did NOT match" , select_plural (n_mismatched_checksums) , 5) ), n_mismatched_checksums);
Executed by:
  • md5sum
3
837 n_mismatched_checksums);
executed 3 times by 1 test: error (0, 0, ( dcngettext (((void *)0), "WARNING: %" "l" "u" " computed checksum did NOT match" , "WARNING: %" "l" "u" " computed checksums did NOT match" , select_plural (n_mismatched_checksums) , 5) ), n_mismatched_checksums);
Executed by:
  • md5sum
3
838-
839 if (ignore_missing && ! matched_checksums)
ignore_missingDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 23 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
! matched_checksumsDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
1-23
840 error (0, 0, _("%s: no file was verified"),
executed 1 time by 1 test: error (0, 0, dcgettext (((void *)0), "%s: no file was verified" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, checkfile_name));
Executed by:
  • md5sum
1
841 quotef (checkfile_name));
executed 1 time by 1 test: error (0, 0, dcgettext (((void *)0), "%s: no file was verified" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, checkfile_name));
Executed by:
  • md5sum
1
842 }
executed 28 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
28
843 }
executed 33 times by 3 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
33
844-
845 return (properly_formatted_lines
executed 41 times by 3 tests: return (properly_formatted_lines && matched_checksums && n_mismatched_checksums == 0 && n_open_or_read_failures == 0 && (!strict || n_improperly_formatted_lines == 0));
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
846 && matched_checksums
executed 41 times by 3 tests: return (properly_formatted_lines && matched_checksums && n_mismatched_checksums == 0 && n_open_or_read_failures == 0 && (!strict || n_improperly_formatted_lines == 0));
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
847 && n_mismatched_checksums == 0
executed 41 times by 3 tests: return (properly_formatted_lines && matched_checksums && n_mismatched_checksums == 0 && n_open_or_read_failures == 0 && (!strict || n_improperly_formatted_lines == 0));
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
848 && n_open_or_read_failures == 0
executed 41 times by 3 tests: return (properly_formatted_lines && matched_checksums && n_mismatched_checksums == 0 && n_open_or_read_failures == 0 && (!strict || n_improperly_formatted_lines == 0));
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
849 && (!strict || n_improperly_formatted_lines == 0));
executed 41 times by 3 tests: return (properly_formatted_lines && matched_checksums && n_mismatched_checksums == 0 && n_open_or_read_failures == 0 && (!strict || n_improperly_formatted_lines == 0));
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
850}-
851-
852int-
853main (int argc, char **argv)-
854{-
855 unsigned char bin_buffer_unaligned[DIGEST_BIN_BYTES + DIGEST_ALIGN];-
856 /* Make sure bin_buffer is properly aligned. */-
857 unsigned char *bin_buffer = ptr_align (bin_buffer_unaligned, DIGEST_ALIGN);-
858 bool do_check = false;-
859 int opt;-
860 bool ok = true;-
861 int binary = -1;-
862 bool prefix_tag = false;-
863-
864 /* Setting values of global variables. */-
865 initialize_main (&argc, &argv);-
866 set_program_name (argv[0]);-
867 setlocale (LC_ALL, "");-
868 bindtextdomain (PACKAGE, LOCALEDIR);-
869 textdomain (PACKAGE);-
870-
871 atexit (close_stdout);-
872-
873 /* Line buffer stdout to ensure lines are written atomically and immediately-
874 so that processes running in parallel do not intersperse their output. */-
875 setvbuf (stdout, NULL, _IOLBF, 0);-
876-
877#if HASH_ALGO_BLAKE2-
878 const char* short_opts = "l:bctw";-
879 const char* b2_length_str = "";-
880#else-
881 const char* short_opts = "bctw";-
882#endif-
883-
884 while ((opt = getopt_long (argc, argv, short_opts, long_options, NULL)) != -1)
(opt = getopt_... *)0) )) != -1Description
TRUEevaluated 634 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 357 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
357-634
885 switch (opt)-
886 {-
887#if HASH_ALGO_BLAKE2-
888 case 'l':
executed 17 times by 1 test: case 'l':
Executed by:
  • b2sum
17
889 b2_length = xdectoumax (optarg, 0, UINTMAX_MAX, "",-
890 _("invalid length"), 0);-
891 b2_length_str = optarg;-
892 if (b2_length % 8 != 0)
b2_length % 8 != 0Description
TRUEnever evaluated
FALSEevaluated 15 times by 1 test
Evaluated by:
  • b2sum
0-15
893 {-
894 error (0, 0, _("invalid length: %s"), quote (b2_length_str));-
895 die (EXIT_FAILURE, 0, _("length is not a multiple of 8"));-
896 }
never executed: end of block
0
897 break;
executed 15 times by 1 test: break;
Executed by:
  • b2sum
15
898#endif-
899 case 'b':
executed 14 times by 7 tests: case 'b':
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
14
900 binary = 1;-
901 break;
executed 14 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
14
902 case 'c':
executed 56 times by 7 tests: case 'c':
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
56
903 do_check = true;-
904 break;
executed 56 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
56
905 case STATUS_OPTION:
executed 12 times by 7 tests: case STATUS_OPTION:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
12
906 status_only = true;-
907 warn = false;-
908 quiet = false;-
909 break;
executed 12 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
12
910 case 't':
executed 283 times by 7 tests: case 't':
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
283
911 binary = 0;-
912 break;
executed 283 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
283
913 case 'w':
executed 15 times by 7 tests: case 'w':
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
15
914 status_only = false;-
915 warn = true;-
916 quiet = false;-
917 break;
executed 15 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
15
918 case IGNORE_MISSING_OPTION:
executed 13 times by 7 tests: case IGNORE_MISSING_OPTION:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
13
919 ignore_missing = true;-
920 break;
executed 13 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
13
921 case QUIET_OPTION:
executed 10 times by 7 tests: case QUIET_OPTION:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
10
922 status_only = false;-
923 warn = false;-
924 quiet = true;-
925 break;
executed 10 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
10
926 case STRICT_OPTION:
executed 20 times by 7 tests: case STRICT_OPTION:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
20
927 strict = true;-
928 break;
executed 20 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
20
929 case TAG_OPTION:
executed 29 times by 7 tests: case TAG_OPTION:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
29
930 prefix_tag = true;-
931 binary = 1;-
932 break;
executed 29 times by 7 tests: break;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
29
933 case_GETOPT_HELP_CHAR;
never executed: break;
executed 112 times by 7 tests: case GETOPT_HELP_CHAR:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-112
934 case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
executed 32 times by 7 tests: exit ( 0 );
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
never executed: break;
executed 32 times by 7 tests: case GETOPT_VERSION_CHAR:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-32
935 default:
executed 21 times by 7 tests: default:
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
21
936 usage (EXIT_FAILURE);-
937 }
never executed: end of block
0
938-
939 min_digest_line_length = MIN_DIGEST_LINE_LENGTH;-
940#if HASH_ALGO_BLAKE2-
941 if (b2_length > blake2_max_len[b2_algorithm] * 8)
b2_length > bl...algorithm] * 8Description
TRUEnever evaluated
FALSEevaluated 21 times by 1 test
Evaluated by:
  • b2sum
0-21
942 {-
943 error (0, 0, _("invalid length: %s"), quote (b2_length_str));-
944 die (EXIT_FAILURE, 0,-
945 _("maximum digest length for %s is %"PRIuMAX" bits"),-
946 quote (algorithm_in_string[b2_algorithm]),-
947 blake2_max_len[b2_algorithm] * 8);-
948 }
never executed: end of block
0
949 if (b2_length == 0 && ! do_check)
b2_length == 0Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 8 times by 1 test
Evaluated by:
  • b2sum
! do_checkDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 6 times by 1 test
Evaluated by:
  • b2sum
6-13
950 b2_length = blake2_max_len[b2_algorithm] * 8;
executed 7 times by 1 test: b2_length = blake2_max_len[b2_algorithm] * 8;
Executed by:
  • b2sum
7
951 digest_hex_bytes = b2_length / 4;-
952#else-
953 digest_hex_bytes = DIGEST_HEX_BYTES;-
954#endif-
955-
956 if (prefix_tag && !binary)
prefix_tagDescription
TRUEevaluated 22 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
FALSEevaluated 335 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
!binaryDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 21 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
1-335
957 {-
958 /* This could be supported in a backwards compatible way-
959 by prefixing the output line with a space in text mode.-
960 However that's invasive enough that it was agreed to-
961 not support this mode with --tag, as --text use cases-
962 are adequately supported by the default output format. */-
963 error (0, 0, _("--tag does not support --text mode"));-
964 usage (EXIT_FAILURE);-
965 }
never executed: end of block
0
966-
967 if (prefix_tag && do_check)
prefix_tagDescription
TRUEevaluated 21 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
FALSEevaluated 335 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
do_checkDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 20 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
1-335
968 {-
969 error (0, 0, _("the --tag option is meaningless when "-
970 "verifying checksums"));-
971 usage (EXIT_FAILURE);-
972 }
never executed: end of block
0
973-
974 if (0 <= binary && do_check)
0 <= binaryDescription
TRUEevaluated 288 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 67 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
do_checkDescription
TRUEnever evaluated
FALSEevaluated 288 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-288
975 {-
976 error (0, 0, _("the --binary and --text options are meaningless when "-
977 "verifying checksums"));-
978 usage (EXIT_FAILURE);-
979 }
never executed: end of block
0
980-
981 if (ignore_missing && !do_check)
ignore_missingDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 349 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
!do_checkDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 5 times by 1 test
Evaluated by:
  • md5sum
1-349
982 {-
983 error (0, 0,-
984 _("the --ignore-missing option is meaningful only when "-
985 "verifying checksums"));-
986 usage (EXIT_FAILURE);-
987 }
never executed: end of block
0
988-
989 if (status_only && !do_check)
status_onlyDescription
TRUEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 349 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
!do_checkDescription
TRUEnever evaluated
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
0-349
990 {-
991 error (0, 0,-
992 _("the --status option is meaningful only when verifying checksums"));-
993 usage (EXIT_FAILURE);-
994 }
never executed: end of block
0
995-
996 if (warn && !do_check)
warnDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 353 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
!do_checkDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • md5sum
0-353
997 {-
998 error (0, 0,-
999 _("the --warn option is meaningful only when verifying checksums"));-
1000 usage (EXIT_FAILURE);-
1001 }
never executed: end of block
0
1002-
1003 if (quiet && !do_check)
quietDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 351 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
!do_checkDescription
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • md5sum
0-351
1004 {-
1005 error (0, 0,-
1006 _("the --quiet option is meaningful only when verifying checksums"));-
1007 usage (EXIT_FAILURE);-
1008 }
never executed: end of block
0
1009-
1010 if (strict & !do_check)
strict & !do_checkDescription
TRUEnever evaluated
FALSEevaluated 354 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-354
1011 {-
1012 error (0, 0,-
1013 _("the --strict option is meaningful only when verifying checksums"));-
1014 usage (EXIT_FAILURE);-
1015 }
never executed: end of block
0
1016-
1017 if (!O_BINARY && binary < 0)
binary < 0Description
TRUEevaluated 67 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 287 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
67-287
1018 binary = 0;
executed 67 times by 7 tests: binary = 0;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
67
1019-
1020 char **operand_lim = argv + argc;-
1021 if (optind == argc)
optind == argcDescription
TRUEevaluated 14 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 340 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
14-340
1022 *operand_lim++ = bad_cast ("-");
executed 14 times by 7 tests: *operand_lim++ = bad_cast ("-");
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
14
1023-
1024 for (char **operandp = argv + optind; operandp < operand_lim; operandp++)
operandp < operand_limDescription
TRUEevaluated 1851 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 354 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
354-1851
1025 {-
1026 char *file = *operandp;-
1027-
1028 if (do_check)
do_checkDescription
TRUEevaluated 41 times by 3 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
FALSEevaluated 1810 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
41-1810
1029 ok &= digest_check (file);
executed 41 times by 3 tests: ok &= digest_check (file);
Executed by:
  • b2sum
  • md5sum
  • sha1sum
41
1030 else-
1031 {-
1032 int file_is_binary = binary;-
1033 bool missing;-
1034-
1035 if (! digest_file (file, &file_is_binary, bin_buffer, &missing))
! digest_file ...fer, &missing)Description
TRUEnever evaluated
FALSEevaluated 1810 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-1810
1036 ok = false;
never executed: ok = 0 ;
0
1037 else-
1038 {-
1039 /* We don't really need to escape, and hence detect, the '\\'-
1040 char, and not doing so should be both forwards and backwards-
1041 compatible, since only escaped lines would have a '\\' char at-
1042 the start. However just in case users are directly comparing-
1043 against old (hashed) outputs, in the presence of files-
1044 containing '\\' characters, we decided to not simplify the-
1045 output in this case. */-
1046 bool needs_escape = strchr (file, '\\') || strchr (file, '\n');
(__extension__...ile , '\\' )))Description
TRUEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 1805 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
__builtin_constant_p ( '\\' )Description
TRUEevaluated 1810 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEnever evaluated
!__builtin_constant_p ( file )Description
TRUEevaluated 1810 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEnever evaluated
( '\\' ) == '\0'Description
TRUEnever evaluated
FALSEevaluated 1810 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
(__extension__...ile , '\n' )))Description
TRUEevaluated 4 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 1801 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
__builtin_constant_p ( '\n' )Description
TRUEevaluated 1805 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEnever evaluated
!__builtin_constant_p ( file )Description
TRUEevaluated 1805 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEnever evaluated
( '\n' ) == '\0'Description
TRUEnever evaluated
FALSEevaluated 1805 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-1810
1047-
1048 if (prefix_tag)
prefix_tagDescription
TRUEevaluated 20 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
FALSEevaluated 1790 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
20-1790
1049 {-
1050 if (needs_escape)
needs_escapeDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • md5sum
FALSEevaluated 16 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
4-16
1051 putchar ('\\');
executed 4 times by 1 test: putchar_unlocked ('\\');
Executed by:
  • md5sum
4
1052-
1053#if HASH_ALGO_BLAKE2-
1054 fputs (algorithm_out_string[b2_algorithm], stdout);-
1055 if (b2_length < blake2_max_len[b2_algorithm] * 8)
b2_length < bl...algorithm] * 8Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • b2sum
FALSEevaluated 5 times by 1 test
Evaluated by:
  • b2sum
5
1056 printf ("-%"PRIuMAX, b2_length);
executed 5 times by 1 test: printf ("-%" "l" "u" , b2_length);
Executed by:
  • b2sum
5
1057#else-
1058 fputs (DIGEST_TYPE_STRING, stdout);-
1059#endif-
1060 fputs (" (", stdout);-
1061 print_filename (file, needs_escape);-
1062 fputs (") = ", stdout);-
1063 }
executed 20 times by 2 tests: end of block
Executed by:
  • b2sum
  • md5sum
20
1064-
1065 /* Output a leading backslash if the file name contains-
1066 a newline or backslash. */-
1067 if (!prefix_tag && needs_escape)
!prefix_tagDescription
TRUEevaluated 1790 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 20 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
needs_escapeDescription
TRUEevaluated 5 times by 2 tests
Evaluated by:
  • md5sum
  • sha1sum
FALSEevaluated 1785 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
5-1790
1068 putchar ('\\');
executed 5 times by 2 tests: putchar_unlocked ('\\');
Executed by:
  • md5sum
  • sha1sum
5
1069-
1070 for (size_t i = 0; i < (digest_hex_bytes / 2); ++i)
i < (digest_hex_bytes / 2)Description
TRUEevaluated 30992 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 1810 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
1810-30992
1071 printf ("%02x", bin_buffer[i]);
executed 30992 times by 7 tests: printf ("%02x", bin_buffer[i]);
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
30992
1072-
1073 if (!prefix_tag)
!prefix_tagDescription
TRUEevaluated 1790 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 20 times by 2 tests
Evaluated by:
  • b2sum
  • md5sum
20-1790
1074 {-
1075 putchar (' ');-
1076-
1077 putchar (file_is_binary ? '*' : ' ');-
1078-
1079 print_filename (file, needs_escape);-
1080 }
executed 1790 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
1790
1081-
1082 putchar ('\n');-
1083 }
executed 1810 times by 7 tests: end of block
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
1810
1084 }-
1085 }-
1086-
1087 if (have_read_stdin && fclose (stdin) == EOF)
have_read_stdinDescription
TRUEevaluated 14 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
FALSEevaluated 340 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
rpl_fclose ( stdin ) == (-1)Description
TRUEnever evaluated
FALSEevaluated 14 times by 7 tests
Evaluated by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
0-340
1088 die (EXIT_FAILURE, errno, _("standard input"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"standard input\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "standard input" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "standard input" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1089-
1090 return ok ? EXIT_SUCCESS : EXIT_FAILURE;
executed 354 times by 7 tests: return ok ? 0 : 1 ;
Executed by:
  • b2sum
  • md5sum
  • sha1sum
  • sha224sum
  • sha256sum
  • sha384sum
  • sha512sum
354
1091}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2