Bug 980372 - "hivex-commit" should fail with a relative path
Summary: "hivex-commit" should fail with a relative path
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: libguestfs
Version: 6.5
Hardware: Unspecified
OS: Linux
Target Milestone: rc
: ---
Assignee: Richard W.M. Jones
QA Contact: Virtualization Bugs
Depends On: 981683
TreeView+ depends on / blocked
Reported: 2013-07-02 07:47 UTC by bfan
Modified: 2013-11-21 04:45 UTC (History)
2 users (show)

Fixed In Version: libguestfs-1.20.9-7.el6
Doc Type: Bug Fix
Doc Text:
Cause: Using hivex-commit command in guestfish. Consequence: Using hivex-commit with a relative path parameter would succeed, but it should give an error. (It writes the hive to an inaccessible place, so it's useless for end users) Fix: hivex-commit fixed Result: Using hivex-commit with a relative path parameter will now fail with an error. You must use an absolute path; or a NULL path (means: overwrite the original).
Clone Of: 905322
: 981683 (view as bug list)
Last Closed: 2013-11-21 04:45:38 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2013:1536 0 normal SHIPPED_LIVE Moderate: libguestfs security, bug fix, and enhancement update 2013-11-21 00:40:55 UTC

Description bfan 2013-07-02 07:47:24 UTC
+++ This bug was initially created as a clone of Bug #905322 +++

Description of problem:
Command "hivex-commit" need a absolute path as its parameter, it's different with "hivex-open" which just need a relative path.

"/WINDOWS/system32/config/software" is exist, and that folder is writable. it's like hivex-commit didn't correctly follow the link, its path is not start from "/sysroot/"  

Version-Release number of selected component (if applicable):
><fs> version
major: 1
minor: 20
release: 1
extra: rhel=7,release=6.el7,libvirt

How reproducible:

Steps to Reproduce:
1. launch libguestfs with a windows guest
[root#] guestfish -a Win2003-32-hvm.raw
><fs> run
><fs> mount /dev/sda1 /

2. open a registry hive file with write model
><fs> hivex-open /WINDOWS/system32/config/software write:true

3. commit changes to the hive file with relative path, it's failed
><fs> hivex-commit /WINDOWS/system32/config/software
libguestfs: error: hivex_commit: failed: No such file or directory

4. commit changes to the hive file with absolute path, it's passed
><fs> hivex-commit /sysroot/WINDOWS/system32/config/software

Actual results:
hivex-commit with relatived path failed

Expected results:
hivex-commit with relatived path can pass

Additional info:

--- Additional comment from RHEL Product and Program Management on 2013-01-29 02:27:34 EST ---

Since this bug report was entered in bugzilla, the release flag has been
set to ? to ensure that it is properly evaluated for this release.

--- Additional comment from Richard W.M. Jones on 2013-01-29 05:38:13 EST ---

Fixed upstream in:

Comment 1 bfan 2013-07-02 09:13:56 UTC
Sorry, may something wrong during my test.
Actually it works, not a bug, please close it.

Comment 2 Richard W.M. Jones 2013-07-05 13:14:29 UTC
In fact there is a bug here.

Test script.  You'll need 'minimal' from
and note that you have to uncomment only *one* of the three hivex-commit
lines in the script.

guestfish -x -N fs -m /dev/sda1 <<EOF
upload /mnt/scratch/minimal /minimal
hivex-open /minimal write:true
#hivex-commit ""
#hivex-commit "/minimal"
hivex-commit "minimal"

The first case (NULL) should always succeed and it does.

The second case (absolute path "/minimal") should succeed
and it does.

The third case (relative path "minimal") should fail because
relative paths shouldn't be allowed.  It doesn't fail, so that is
a bug.

Comment 5 bfan 2013-09-17 07:50:58 UTC
Verified with libguestfs-1.20.11-1.el6.x86_64

Test according to #C2
(1) successed
guestfish -x -N fs -m /dev/sda1 <<EOF
upload /mnt/scratch/minimal /minimal
hivex-open /minimal write:true
hivex-commit ""
#hivex-commit "/minimal"
#hivex-commit "minimal"

(2) successed
guestfish -x -N fs -m /dev/sda1 <<EOF
upload /mnt/scratch/minimal /minimal
hivex-open /minimal write:true
#hivex-commit ""
hivex-commit "/minimal"
#hivex-commit "minimal"

(3) libguestfs: error: hivex_commit: do_hivex_commit: path must start with a / character
guestfish -x -N fs -m /dev/sda1 <<EOF
upload /mnt/scratch/minimal /minimal
hivex-open /minimal write:true
#hivex-commit ""
#hivex-commit "/minimal"
hivex-commit "minimal"

So change the status to verified

Comment 7 errata-xmlrpc 2013-11-21 04:45:38 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.