diff options
Diffstat (limited to 'coreutils/md5_sha1_sum.c')
-rw-r--r-- | coreutils/md5_sha1_sum.c | 80 |
1 files changed, 69 insertions, 11 deletions
diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c index 3b897c18f..050d46701 100644 --- a/coreutils/md5_sha1_sum.c +++ b/coreutils/md5_sha1_sum.c | |||
@@ -6,6 +6,64 @@ | |||
6 | * Licensed under GPLv2 or later, see file LICENSE in this source tree. | 6 | * Licensed under GPLv2 or later, see file LICENSE in this source tree. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | //usage:#define md5sum_trivial_usage | ||
10 | //usage: "[FILE]..." | ||
11 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: md5sum -c [-sw] [FILE]") | ||
12 | //usage:#define md5sum_full_usage "\n\n" | ||
13 | //usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums" | ||
14 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" | ||
15 | //usage: "\nOptions:" | ||
16 | //usage: "\n -c Check sums against given list" | ||
17 | //usage: "\n -s Don't output anything, status code shows success" | ||
18 | //usage: "\n -w Warn about improperly formatted checksum lines" | ||
19 | //usage: ) | ||
20 | //usage: | ||
21 | //usage:#define md5sum_example_usage | ||
22 | //usage: "$ md5sum < busybox\n" | ||
23 | //usage: "6fd11e98b98a58f64ff3398d7b324003\n" | ||
24 | //usage: "$ md5sum busybox\n" | ||
25 | //usage: "6fd11e98b98a58f64ff3398d7b324003 busybox\n" | ||
26 | //usage: "$ md5sum -c -\n" | ||
27 | //usage: "6fd11e98b98a58f64ff3398d7b324003 busybox\n" | ||
28 | //usage: "busybox: OK\n" | ||
29 | //usage: "^D\n" | ||
30 | //usage: | ||
31 | //usage:#define sha1sum_trivial_usage | ||
32 | //usage: "[FILE]..." | ||
33 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha1sum -c [-sw] [FILE]") | ||
34 | //usage:#define sha1sum_full_usage "\n\n" | ||
35 | //usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums" | ||
36 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" | ||
37 | //usage: "\nOptions:" | ||
38 | //usage: "\n -c Check sums against given list" | ||
39 | //usage: "\n -s Don't output anything, status code shows success" | ||
40 | //usage: "\n -w Warn about improperly formatted checksum lines" | ||
41 | //usage: ) | ||
42 | //usage: | ||
43 | //usage:#define sha256sum_trivial_usage | ||
44 | //usage: "[FILE]..." | ||
45 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha256sum -c [-sw] [FILE]") | ||
46 | //usage:#define sha256sum_full_usage "\n\n" | ||
47 | //usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA256 checksums" | ||
48 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" | ||
49 | //usage: "\nOptions:" | ||
50 | //usage: "\n -c Check sums against given list" | ||
51 | //usage: "\n -s Don't output anything, status code shows success" | ||
52 | //usage: "\n -w Warn about improperly formatted checksum lines" | ||
53 | //usage: ) | ||
54 | //usage: | ||
55 | //usage:#define sha512sum_trivial_usage | ||
56 | //usage: "[FILE]..." | ||
57 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha512sum -c [-sw] [FILE]") | ||
58 | //usage:#define sha512sum_full_usage "\n\n" | ||
59 | //usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA512 checksums" | ||
60 | //usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" | ||
61 | //usage: "\nOptions:" | ||
62 | //usage: "\n -c Check sums against given list" | ||
63 | //usage: "\n -s Don't output anything, status code shows success" | ||
64 | //usage: "\n -w Warn about improperly formatted checksum lines" | ||
65 | //usage: ) | ||
66 | |||
9 | #include "libbb.h" | 67 | #include "libbb.h" |
10 | 68 | ||
11 | /* This is a NOEXEC applet. Be very careful! */ | 69 | /* This is a NOEXEC applet. Be very careful! */ |
@@ -42,7 +100,6 @@ static uint8_t *hash_file(const char *filename) | |||
42 | md5_ctx_t md5; | 100 | md5_ctx_t md5; |
43 | } context; | 101 | } context; |
44 | uint8_t *hash_value = NULL; | 102 | uint8_t *hash_value = NULL; |
45 | RESERVE_CONFIG_UBUFFER(in_buf, 4096); | ||
46 | void FAST_FUNC (*update)(void*, const void*, size_t); | 103 | void FAST_FUNC (*update)(void*, const void*, size_t); |
47 | void FAST_FUNC (*final)(void*, void*); | 104 | void FAST_FUNC (*final)(void*, void*); |
48 | char hash_algo; | 105 | char hash_algo; |
@@ -54,7 +111,7 @@ static uint8_t *hash_file(const char *filename) | |||
54 | 111 | ||
55 | hash_algo = applet_name[3]; | 112 | hash_algo = applet_name[3]; |
56 | 113 | ||
57 | /* figure specific hash algorithims */ | 114 | /* figure specific hash algorithms */ |
58 | if (ENABLE_MD5SUM && hash_algo == HASH_MD5) { | 115 | if (ENABLE_MD5SUM && hash_algo == HASH_MD5) { |
59 | md5_begin(&context.md5); | 116 | md5_begin(&context.md5); |
60 | update = (void*)md5_hash; | 117 | update = (void*)md5_hash; |
@@ -79,17 +136,18 @@ static uint8_t *hash_file(const char *filename) | |||
79 | xfunc_die(); /* can't reach this */ | 136 | xfunc_die(); /* can't reach this */ |
80 | } | 137 | } |
81 | 138 | ||
82 | while ((count = safe_read(src_fd, in_buf, 4096)) > 0) { | 139 | { |
83 | update(&context, in_buf, count); | 140 | RESERVE_CONFIG_UBUFFER(in_buf, 4096); |
84 | } | 141 | while ((count = safe_read(src_fd, in_buf, 4096)) > 0) { |
85 | 142 | update(&context, in_buf, count); | |
86 | if (count == 0) { | 143 | } |
87 | final(&context, in_buf); | 144 | if (count == 0) { |
88 | hash_value = hash_bin_to_hex(in_buf, hash_len); | 145 | final(&context, in_buf); |
146 | hash_value = hash_bin_to_hex(in_buf, hash_len); | ||
147 | } | ||
148 | RELEASE_CONFIG_BUFFER(in_buf); | ||
89 | } | 149 | } |
90 | 150 | ||
91 | RELEASE_CONFIG_BUFFER(in_buf); | ||
92 | |||
93 | if (src_fd != STDIN_FILENO) { | 151 | if (src_fd != STDIN_FILENO) { |
94 | close(src_fd); | 152 | close(src_fd); |
95 | } | 153 | } |