From: Mike Yuan Date: Wed, 19 Jun 2024 16:59:15 +0000 (+0200) Subject: shared/install: propagate all errors in install_info_apply() X-Git-Tag: v257-rc1~1093^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a159aa07e1548367d2fde80cb0d45b869c591864;p=thirdparty%2Fsystemd.git shared/install: propagate all errors in install_info_apply() Currently, install_info_apply() only updates r if it's 0, meaning that if one of the earlier install_info_symlink_alias/wants() calls returns > 0, errors generated by later calls will be discarded. Fix that. --- diff --git a/src/shared/install.c b/src/shared/install.c index 421266eb36b..639372ae5bc 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -2152,15 +2152,15 @@ static int install_info_apply( r = install_info_symlink_alias(scope, info, lp, config_path, force, changes, n_changes); q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->wanted_by, ".wants/", changes, n_changes); - if (r == 0) + if (q != 0 && r >= 0) r = q; q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->required_by, ".requires/", changes, n_changes); - if (r == 0) + if (q != 0 && r >= 0) r = q; q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->upheld_by, ".upholds/", changes, n_changes); - if (r == 0) + if (q != 0 && r >= 0) r = q; return r;