summaryrefslogtreecommitdiff
path: root/system-version-manager/system-version-manager
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-06-09 15:48:11 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2014-06-16 14:33:44 +0000
commitc01d44f22983b5e61271c728e8e209e73d69fe16 (patch)
treee098af4681db109913c787e080a997a06e8e4d50 /system-version-manager/system-version-manager
parent29dd6a7f8520a146f2f1ebeb3bdef695b8a49666 (diff)
downloadtbdiff-c01d44f22983b5e61271c728e8e209e73d69fe16.tar.gz
Actually use atomic_symlink_update for something
This function was added to ensure safe, automatic updates of the default system symlink, but for some reason, was never used. Instead it open-coded a vulnerable way of doing this, which could fail if an upgrade was aborted at the wrong time. So now we use atomic_symlink_update, which won't fail, and the worst that can happen is a temporary directory gets left around.
Diffstat (limited to 'system-version-manager/system-version-manager')
-rwxr-xr-xsystem-version-manager/system-version-manager4
1 files changed, 1 insertions, 3 deletions
diff --git a/system-version-manager/system-version-manager b/system-version-manager/system-version-manager
index 64ca5a4..bd31c66 100755
--- a/system-version-manager/system-version-manager
+++ b/system-version-manager/system-version-manager
@@ -144,10 +144,8 @@ class SystemVersionManager(object):
os.rename(temp_config, config)
default_path = os.path.join(self.mount_dir, 'systems', 'default')
- default_path_tmp = os.path.join(self.mount_dir, 'systems', 'default-tmp')
if os.path.islink(default_path):
- os.symlink(default, default_path_tmp)
- os.rename(default_path_tmp, default_path)
+ self._atomic_symlink_update(default, default_path)
def cmd_list(self):
for system in self._get_systems():