Chromium Code Reviews| Index: src/trusted/validator/ncfileutil.c |
| diff --git a/src/trusted/validator/ncfileutil.c b/src/trusted/validator/ncfileutil.c |
| index bb7e6279fe31ab0e95d20dd704176651c1394afb..9bca72ce4cce8c8cb3449c0412954a8e17fad6eb 100644 |
| --- a/src/trusted/validator/ncfileutil.c |
| +++ b/src/trusted/validator/ncfileutil.c |
| @@ -186,6 +186,15 @@ static int nc_load(ncfile *ncf, int fd) { |
| return -1; |
| } |
| + /* Keep a copy of the header around for the validator */ |
| + ncf->eheader = calloc(1, sizeof(Elf_Ehdr)); |
| + if (ncf->eheader == NULL) { |
| + ncf->error_fn("nc_load(%s): calloc(1, sizeof(Elf_Ehdr)) failed\n", |
| + ncf->fname); |
| + return -1; |
| + } |
| + memcpy(ncf->eheader, &h, sizeof(Elf_Ehdr)); |
|
bsy
2011/09/21 22:32:17
*ncf->eheader = h; is clearer.
jasonwkim
2011/09/26 21:35:52
done
|
| + |
| /* success! */ |
| return 0; |
| } |
| @@ -212,7 +221,7 @@ ncfile *nc_loadfile_depending(const char *filename, |
| if (nc_load(ncf, fd) < 0) { |
| close(fd); |
| - free(ncf); |
| + nc_freefile(ncf); |
| return NULL; |
| } |
| close(fd); |
| @@ -230,7 +239,10 @@ ncfile *nc_loadfile_with_error_fn(const char *filename, |
| void nc_freefile(ncfile *ncf) { |
| - if (ncf->data != NULL) free(ncf->data); |
| + if (ncf->data != NULL) free(ncf->data); |
|
bsy
2011/09/21 22:32:17
NULL check is not needed, since free(NULL) is defi
jasonwkim
2011/09/26 21:35:52
fixed
|
| + if (ncf->eheader != NULL) free(ncf->eheader); |
| + if (ncf->pheaders != NULL) free(ncf->pheaders); |
| + if (ncf->sheaders != NULL) free(ncf->sheaders); |
| free(ncf); |
| } |