]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
varlinkctl: do not clobber format flags in verb_call
authorNick Rosbrook <enr0n@ubuntu.com>
Tue, 22 Oct 2024 16:03:50 +0000 (12:03 -0400)
committerNick Rosbrook <enr0n@ubuntu.com>
Tue, 22 Oct 2024 16:09:41 +0000 (12:09 -0400)
Currently, when SD_JSON_FORMAT_OFF is set in verb_call, the json format
flags are set to SD_JSON_FORMAT_PRETTY_AUTO|SD_JSON_FORMAT_COLOR_AUTO,
rather than or'ing those flags in. This means that other flags that may
have been set, e.g. SD_JSON_FORMAT_SEQ when --more is set, will be
clobbered.

Fix this by masking SD_JSON_FORMAT_OFF out, and then or'ing the new
flags in.

src/varlinkctl/varlinkctl.c

index f88a1050934fe585531cbd259ab4b384a7b0a037..f204b0f3c947e917042194302d3d46b9b6cff455 100644 (file)
@@ -539,8 +539,10 @@ static int verb_call(int argc, char *argv[], void *userdata) {
         parameter = argc > 3 && !streq(argv[3], "-") ? argv[3] : NULL;
 
         /* No JSON mode explicitly configured? Then default to the same as -j */
-        if (FLAGS_SET(arg_json_format_flags, SD_JSON_FORMAT_OFF))
-                arg_json_format_flags = SD_JSON_FORMAT_PRETTY_AUTO|SD_JSON_FORMAT_COLOR_AUTO;
+        if (FLAGS_SET(arg_json_format_flags, SD_JSON_FORMAT_OFF)) {
+                arg_json_format_flags &= ~SD_JSON_FORMAT_OFF;
+                arg_json_format_flags |= SD_JSON_FORMAT_PRETTY_AUTO|SD_JSON_FORMAT_COLOR_AUTO;
+        }
 
         /* For pipeable text tools it's kinda customary to finish output off in a newline character, and not
          * leave incomplete lines hanging around. */