From: Richard Jones Date: Mon, 18 Jan 2010 10:58:06 +0000 (+0000) Subject: hivex: Store filename in hive handle. X-Git-Tag: 1.1.0~57 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=29db5aec5cc523f75a62279322b2001544529b89;p=hivex.git hivex: Store filename in hive handle. --- diff --git a/hivex/hivex.c b/hivex/hivex.c index 6129017..a760300 100644 --- a/hivex/hivex.c +++ b/hivex/hivex.c @@ -89,6 +89,7 @@ static char *windows_utf16_to_utf8 (/* const */ char *input, size_t len); struct hive_h { + char *filename; int fd; size_t size; int msglvl; @@ -281,6 +282,10 @@ hivex_open (const char *filename, int flags) if (h->msglvl >= 2) fprintf (stderr, "hivex_open: created handle %p\n", h); + h->filename = strdup (filename); + if (h->filename == NULL) + goto error; + h->fd = open (filename, O_RDONLY); if (h->fd == -1) goto error; @@ -482,6 +487,7 @@ hivex_open (const char *filename, int flags) munmap (h->addr, h->size); if (h->fd >= 0) close (h->fd); + free (h->filename); free (h); } errno = err; @@ -496,6 +502,7 @@ hivex_close (hive_h *h) free (h->bitmap); munmap (h->addr, h->size); r = close (h->fd); + free (h->filename); free (h); return r;