diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2014-06-09 15:48:11 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2014-06-16 14:33:44 +0000 |
commit | c01d44f22983b5e61271c728e8e209e73d69fe16 (patch) | |
tree | e098af4681db109913c787e080a997a06e8e4d50 /system-version-manager/system-version-manager | |
parent | 29dd6a7f8520a146f2f1ebeb3bdef695b8a49666 (diff) | |
download | tbdiff-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-x | system-version-manager/system-version-manager | 4 |
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(): |