Richard W.M. Jones 56da6b36d3 daemon: btrfs: Simplify snapshot code and fix invalid memory access
The existing code had a bug which you can demonstrate by doing:

  $ guestfish -N fs:btrfs:10G -m /dev/sda1 \
  btrfs-subvolume-create /sub :
  btrfs-subvolume-snapshot /sub /snap1 : \
  btrfs-subvolume-snapshot /sub /snap123 : \
  btrfs-subvolume-snapshot /sub /snap123456 : \
  btrfs-subvolume-show /sub
  ...
  libguestfs: error: appliance closed the connection unexpectedly.
  This usually means the libguestfs appliance crashed.

As the code for parsing the output and creating the comma-separated
list of snapshots was unncessarily complicated in the first place,
simplify it.  This also fixes the bug.

This also adds a regression test.

Thanks: Arye Yurkovsky
Link: https://lists.libguestfs.org/archives/list/guestfs@lists.libguestfs.org/thread/QV5VDHIH7WRUNAE54K6OEOKJMWL6M7EM/
2025-11-24 10:44:44 +00:00
2025-11-04 15:59:02 +00:00
2025-05-10 18:29:40 +01:00
2011-11-08 14:43:07 +00:00
2025-02-16 17:00:46 +00:00
2025-02-16 17:00:46 +00:00
2025-02-16 17:00:46 +00:00
2025-02-16 16:57:43 +00:00
2025-02-16 17:00:46 +00:00
2025-11-18 22:12:33 +00:00
2025-11-20 21:00:29 +00:00
2025-02-16 17:00:46 +00:00
2025-11-03 15:53:50 -05:00
2025-02-16 17:00:46 +00:00
2018-02-22 15:06:13 +00:00
2021-04-08 11:36:40 +01:00
2023-11-16 10:38:59 +00:00
2013-01-24 15:00:49 +00:00
2025-03-22 12:41:39 +00:00
2020-01-14 16:21:22 +01:00
2025-11-04 16:20:10 +00:00
2019-11-13 12:49:55 +00:00
2025-02-16 17:00:46 +00:00
2025-02-16 17:00:46 +00:00

Libguestfs is tools and a library for accessing and modifying guest
disk images.  For more information see the home page:

  http://libguestfs.org/

For discussion, development, patches, etc. please use the mailing
list:

  https://lists.libguestfs.org

To find out how to build libguestfs from source, read:

  docs/guestfs-building.pod
  http://libguestfs.org/guestfs-building.1.html
  man docs/guestfs-building.1

Copyright (C) 2009-2025 Red Hat Inc.

The library is distributed under the LGPLv2+.  The programs are
distributed under the GPLv2+.  Please see the files COPYING and
COPYING.LIB for full license information.  The examples are under a
very liberal license.
Languages
C 42.7%
OCaml 35.5%
Shell 7.1%
Makefile 4%
Perl 2.6%
Other 8%