fix: address basestrap findings (format safety, umask removal, non-list guard)

This commit is contained in:
2026-07-07 19:30:26 +02:00
parent 809f8bcafa
commit ab6c1c7192
@@ -63,24 +63,22 @@ def pretty_status_message():
return custom_status_message return custom_status_message
if not group_packages: if not group_packages:
if (total_packages > 0): if (total_packages > 0):
# Outside the context of an operation return _("Processing packages (%(count)d / %(total)d)") % {
s = _("Processing packages (%(count)d / %(total)d)")
else:
s = _("Install packages.")
elif mode_packages is INSTALL:
s = _n("Installing one package.",
"Installing %(num)d packages.", group_packages)
elif mode_packages is REMOVE:
s = _n("Removing one package.",
"Removing %(num)d packages.", group_packages)
else:
# No mode, generic description
s = _("Install packages.")
return s % {"num": group_packages,
"count": completed_packages, "count": completed_packages,
"total": total_packages} "total": total_packages}
else:
return _("Install packages.")
elif mode_packages is INSTALL:
return _n("Installing one package.",
"Installing %(num)d packages.", group_packages) % {
"num": group_packages}
elif mode_packages is REMOVE:
return _n("Removing one package.",
"Removing %(num)d packages.", group_packages) % {
"num": group_packages}
else:
return _("Install packages.")
@@ -378,20 +376,17 @@ class PMPacman(PackageManager):
return args return args
def setup_requirements(self, rootdir): def setup_requirements(self, rootdir):
cal_umask = os.umask(0)
try:
for target in self.pacman_requirements: for target in self.pacman_requirements:
dest = rootdir + target["dest"] dest = rootdir + target["dest"]
if not os.path.exists(dest): if not os.path.exists(dest):
mod = int(target["mode"],8) mod = int(target["mode"],8)
os.mkdir(dest, mode=mod) os.mkdir(dest)
os.chmod(dest, mod)
libcalamares.utils.debug("Mode: {!s}".format(oct(mod))) libcalamares.utils.debug("Mode: {!s}".format(oct(mod)))
libcalamares.utils.debug("Created: {!s}".format(dest)) libcalamares.utils.debug("Created: {!s}".format(dest))
path = join(rootdir, "run") path = join(rootdir, "run")
os.chmod(path, 0o755) os.chmod(path, 0o755)
finally:
os.umask(cal_umask)
def copy_file(self, rootdir, f): def copy_file(self, rootdir, f):
if os.path.exists(join("/",f)): if os.path.exists(join("/",f)):
@@ -554,6 +549,7 @@ def run():
completed_packages = 0 completed_packages = 0
for op in operations: for op in operations:
for packagelist in op.values(): for packagelist in op.values():
if isinstance(packagelist, list):
total_packages += len(subst_locale(packagelist)) total_packages += len(subst_locale(packagelist))
if not total_packages: if not total_packages: