git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Require PCRE library.
[libguestfs.git]
/
src
/
inspect_fs_windows.c
diff --git
a/src/inspect_fs_windows.c
b/src/inspect_fs_windows.c
index
9a2e1fb
..
60d9c0f
100644
(file)
--- a/
src/inspect_fs_windows.c
+++ b/
src/inspect_fs_windows.c
@@
-29,9
+29,7
@@
#include <errno.h>
#include <endian.h>
#include <errno.h>
#include <endian.h>
-#ifdef HAVE_PCRE
#include <pcre.h>
#include <pcre.h>
-#endif
#ifdef HAVE_HIVEX
#include <hivex.h>
#ifdef HAVE_HIVEX
#include <hivex.h>
@@
-46,7
+44,7
@@
#include "guestfs-internal-actions.h"
#include "guestfs_protocol.h"
#include "guestfs-internal-actions.h"
#include "guestfs_protocol.h"
-#if defined(HAVE_
PCRE) && defined(HAVE_
HIVEX)
+#if defined(HAVE_HIVEX)
/* Compile all the regular expressions once when the shared library is
* loaded. PCRE is thread safe so we're supposedly OK here if
/* Compile all the regular expressions once when the shared library is
* loaded. PCRE is thread safe so we're supposedly OK here if
@@
-159,11
+157,6
@@
check_windows_arch (guestfs_h *g, struct inspect_fs *fs)
static int
check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs)
{
static int
check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs)
{
- const char *basename = "software";
- char tmpdir_basename[strlen (g->tmpdir) + strlen (basename) + 2];
- snprintf (tmpdir_basename, sizeof tmpdir_basename, "%s/%s",
- g->tmpdir, basename);
-
size_t len = strlen (fs->windows_systemroot) + 64;
char software[len];
snprintf (software, len, "%s/system32/config/software",
size_t len = strlen (fs->windows_systemroot) + 64;
char software[len];
snprintf (software, len, "%s/system32/config/software",
@@
-176,15
+169,17
@@
check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs)
*/
return 0;
*/
return 0;
+ char *software_hive = NULL;
int ret = -1;
hive_h *h = NULL;
hive_value_h *values = NULL;
int ret = -1;
hive_h *h = NULL;
hive_value_h *values = NULL;
- if (guestfs___download_to_tmp (g, software_path, basename,
- MAX_REGISTRY_SIZE) == -1)
+ software_hive = guestfs___download_to_tmp (g, fs, software_path, "software",
+ MAX_REGISTRY_SIZE);
+ if (software_hive == NULL)
goto out;
goto out;
- h = hivex_open (
tmpdir_basenam
e, g->verbose ? HIVEX_OPEN_VERBOSE : 0);
+ h = hivex_open (
software_hiv
e, g->verbose ? HIVEX_OPEN_VERBOSE : 0);
if (h == NULL) {
perrorf (g, "hivex_open");
goto out;
if (h == NULL) {
perrorf (g, "hivex_open");
goto out;
@@
-268,6
+263,7
@@
check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs)
if (h) hivex_close (h);
free (values);
free (software_path);
if (h) hivex_close (h);
free (values);
free (software_path);
+ free (software_hive);
return ret;
}
return ret;
}
@@
-275,11
+271,6
@@
check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs)
static int
check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs)
{
static int
check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs)
{
- const char *basename = "system";
- char tmpdir_basename[strlen (g->tmpdir) + strlen (basename) + 2];
- snprintf (tmpdir_basename, sizeof tmpdir_basename, "%s/%s",
- g->tmpdir, basename);
-
size_t len = strlen (fs->windows_systemroot) + 64;
char system[len];
snprintf (system, len, "%s/system32/config/system",
size_t len = strlen (fs->windows_systemroot) + 64;
char system[len];
snprintf (system, len, "%s/system32/config/system",
@@
-292,6
+283,7
@@
check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs)
*/
return 0;
*/
return 0;
+ char *system_hive = NULL;
int ret = -1;
hive_h *h = NULL;
hive_node_h root, node;
int ret = -1;
hive_h *h = NULL;
hive_node_h root, node;
@@
-299,11
+291,13
@@
check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs)
int32_t dword;
size_t i, count;
int32_t dword;
size_t i, count;
- if (guestfs___download_to_tmp (g, system_path, basename,
- MAX_REGISTRY_SIZE) == -1)
+ system_hive =
+ guestfs___download_to_tmp (g, fs, system_path, "system",
+ MAX_REGISTRY_SIZE);
+ if (system_hive == NULL)
goto out;
goto out;
- h = hivex_open (
tmpdir_basenam
e, g->verbose ? HIVEX_OPEN_VERBOSE : 0);
+ h = hivex_open (
system_hiv
e, g->verbose ? HIVEX_OPEN_VERBOSE : 0);
if (h == NULL) {
perrorf (g, "hivex_open");
goto out;
if (h == NULL) {
perrorf (g, "hivex_open");
goto out;
@@
-449,6
+443,7
@@
check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs)
if (h) hivex_close (h);
free (values);
free (system_path);
if (h) hivex_close (h);
free (values);
free (system_path);
+ free (system_hive);
return ret;
}
return ret;
}
@@
-532,4
+527,4
@@
guestfs___case_sensitive_path_silently (guestfs_h *g, const char *path)
return ret;
}
return ret;
}
-#endif /* defined(HAVE_
PCRE) && defined(HAVE_
HIVEX) */
+#endif /* defined(HAVE_HIVEX) */