[git commit] md5/sha1sum: better fix for small resource leak
Denys Vlasenko
vda.linux at googlemail.com
Sat Apr 16 16:56:36 UTC 2011
commit: http://git.busybox.net/busybox/commit/?id=43a3d50e14902e746ee53b7cfb63fe190bd5387f
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
coreutils/md5_sha1_sum.c | 25 +++++++++++--------------
1 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c
index 8270d97..050d467 100644
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -100,22 +100,18 @@ static uint8_t *hash_file(const char *filename)
md5_ctx_t md5;
} context;
uint8_t *hash_value = NULL;
- RESERVE_CONFIG_UBUFFER(in_buf, 4096);
void FAST_FUNC (*update)(void*, const void*, size_t);
void FAST_FUNC (*final)(void*, void*);
char hash_algo;
src_fd = open_or_warn_stdin(filename);
if (src_fd < 0) {
- if (ENABLE_FEATURE_CLEAN_UP) {
- RELEASE_CONFIG_BUFFER(in_buf);
- }
return NULL;
}
hash_algo = applet_name[3];
- /* figure specific hash algorithims */
+ /* figure specific hash algorithms */
if (ENABLE_MD5SUM && hash_algo == HASH_MD5) {
md5_begin(&context.md5);
update = (void*)md5_hash;
@@ -140,17 +136,18 @@ static uint8_t *hash_file(const char *filename)
xfunc_die(); /* can't reach this */
}
- while ((count = safe_read(src_fd, in_buf, 4096)) > 0) {
- update(&context, in_buf, count);
- }
-
- if (count == 0) {
- final(&context, in_buf);
- hash_value = hash_bin_to_hex(in_buf, hash_len);
+ {
+ RESERVE_CONFIG_UBUFFER(in_buf, 4096);
+ while ((count = safe_read(src_fd, in_buf, 4096)) > 0) {
+ update(&context, in_buf, count);
+ }
+ if (count == 0) {
+ final(&context, in_buf);
+ hash_value = hash_bin_to_hex(in_buf, hash_len);
+ }
+ RELEASE_CONFIG_BUFFER(in_buf);
}
- RELEASE_CONFIG_BUFFER(in_buf);
-
if (src_fd != STDIN_FILENO) {
close(src_fd);
}
--
1.7.3.4
More information about the busybox-cvs
mailing list