systemctl-edit: fix abort in find_paths_to_edit()
authorAnita Zhang <the.anitazha@gmail.com>
Thu, 14 Jan 2021 08:02:09 +0000 (00:02 -0800)
committerAnita Zhang <the.anitazha@gmail.com>
Thu, 14 Jan 2021 23:05:27 +0000 (15:05 -0800)
commit98199724cb9fdad910e8f4b222d39d9d1e77f1c4
tree1e772205ac943d72ddbdf227d36e4c02f22c8848
parent983cbd91a8b5e87b9e2507d1179d969d784d2b67
systemctl-edit: fix abort in find_paths_to_edit()

After 85c5d313b5c92115f5c77663e736bcf21e99f02f, if you, for example,
create a drop-in for -.slice without a corresponding -.slice file, you will
get the following:

  # put some valid stuff in /etc/systemd/system/-.slice.d/override.conf

  [root@image ~]# systemctl daemon-reload
  [root@image ~]# systemctl edit -- -.slice
  Assertion 'path' failed at src/systemctl/systemctl-edit.c:425, function
  find_paths_to_edit(). Aborting.
  Aborted

The aforementioned commit sets the ret_dropin_paths argument for
unit_find_paths(). Thus, unit_find_paths() returns 1 in the example above
because it finds a relevant drop-in. However find_paths_to_edit() was written
to expect 1 only if the unit file itself exists (it does not in this example).

To make this behave more like the version of `systemctl edit` prior to
this commit, add an additional check so the code enters the
"unit file not found" code branch.
src/systemctl/systemctl-edit.c