summaryrefslogtreecommitdiff
path: root/src/timedate
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-02-24 13:16:15 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-02-24 23:50:21 +0900
commit2be6c4758e3c27a3f502735881a355e5bfae97b0 (patch)
tree7f50eb3f6905976cdefb994d99702e73f87668fa /src/timedate
parentb34b57a738b8d475b2ae2ec40c6685f9a50697ee (diff)
downloadsystemd-2be6c4758e3c27a3f502735881a355e5bfae97b0.tar.gz
timedate: do not ignore fix_system argument in SetLocalRTC method
Fixes #18391.
Diffstat (limited to 'src/timedate')
-rw-r--r--src/timedate/timedated.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index 563f470f54..1257d950ae 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -725,7 +725,7 @@ static int method_set_local_rtc(sd_bus_message *m, void *userdata, sd_bus_error
if (r < 0)
return r;
- if (lrtc == c->local_rtc)
+ if (lrtc == c->local_rtc && !fix_system)
return sd_bus_reply_method_return(m, NULL);
r = bus_verify_polkit_async(
@@ -742,13 +742,15 @@ static int method_set_local_rtc(sd_bus_message *m, void *userdata, sd_bus_error
if (r == 0)
return 1;
- c->local_rtc = lrtc;
+ if (lrtc != c->local_rtc) {
+ c->local_rtc = lrtc;
- /* 1. Write new configuration file */
- r = context_write_data_local_rtc(c);
- if (r < 0) {
- log_error_errno(r, "Failed to set RTC to %s: %m", lrtc ? "local" : "UTC");
- return sd_bus_error_set_errnof(error, r, "Failed to set RTC to %s: %m", lrtc ? "local" : "UTC");
+ /* 1. Write new configuration file */
+ r = context_write_data_local_rtc(c);
+ if (r < 0) {
+ log_error_errno(r, "Failed to set RTC to %s: %m", lrtc ? "local" : "UTC");
+ return sd_bus_error_set_errnof(error, r, "Failed to set RTC to %s: %m", lrtc ? "local" : "UTC");
+ }
}
/* 2. Tell the kernel our timezone */