Fix memory leak

Signed-off-by: Zbigniew Jasinski <z.jasinski@samsung.com>
Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
This commit is contained in:
Zbigniew Jasinski 2014-05-30 17:45:34 +03:00 committed by Dmitry Kasatkin
parent 3a1ef5f5c7
commit 1a4c9ed2d6

View File

@ -163,43 +163,43 @@ static inline off_t get_fdsize(int fd)
static int add_file_hash(const char *file, EVP_MD_CTX *ctx)
{
uint8_t *data;
int err, bs = DATA_SIZE;
int err = -1, bs = DATA_SIZE;
off_t size, len;
FILE *fp;
data = malloc(bs);
if (!data) {
log_err("malloc failed\n");
return -1;
}
fp = fopen(file, "r");
if (!fp) {
log_err("Unable to open %s\n", file);
return -1;
}
data = malloc(bs);
if (!data) {
log_err("malloc failed\n");
goto out;
}
for (size = get_fdsize(fileno(fp)); size; size -= len) {
len = MIN(size, bs);
err = fread(data, len, 1, fp);
if (!err) {
if (!fread(data, len, 1, fp)) {
if (ferror(fp)) {
log_err("fread() error\n\n");
return -1;
goto out;
}
break;
}
err = EVP_DigestUpdate(ctx, data, len);
if (!err) {
if (!EVP_DigestUpdate(ctx, data, len)) {
log_err("EVP_DigestUpdate() failed\n");
return 1;
err = 1;
goto out;
}
}
err = 0;
out:
fclose(fp);
free(data);
return 0;
return err;
}
static int add_dir_hash(const char *file, EVP_MD_CTX *ctx)