]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsysinfo: Trim newline when decoding OEM strings
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 18 Jul 2024 13:13:30 +0000 (15:13 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 25 Jul 2024 14:49:27 +0000 (16:49 +0200)
dmidecode always puts a newline character at the end of each
OEM string it prints. It's the dmi_oem_strings() function [1] that
iterates over strings and calls pr_attr() over each one which
puts "\n" at the end, unconditionally [2[.

Since it's not part of the string though, trim it.

1: https://git.savannah.nongnu.org/cgit/dmidecode.git/tree/dmidecode.c#n2431
2: https://git.savannah.nongnu.org/cgit/dmidecode.git/tree/dmioutput.c#n63

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
src/util/virsysinfo.c
tests/sysinfotest.c

index 0d9083c8918dc7581714d61ae29753a083cd7626..cdc2a7d87b51d47d03577ecfdcce84cbeff83b8d 100644 (file)
@@ -915,6 +915,8 @@ virSysinfoDMIDecodeOEMString(size_t i,
     if (err && *err != '\0')
         return -1;
 
+    virStringTrimOptionalNewline(*str);
+
     return 0;
 }
 
index 287c40c6f99fe7b70d3a23c02d673516ed889e8e..09cfe6fa456d798b4917e8eecd10fc68cc77c954 100644 (file)
@@ -66,7 +66,7 @@ testDMIDecodeDryRun(const char *const*args G_GNUC_UNUSED,
         if (STREQ(args[3], "3")) {
             *output = g_strdup("Ha ha ha try parsing\\n\n"
                                "      String 3: this correctly\n"
-                               "      String 4:then");
+                               "      String 4:then\n");
         } else {
             *error = g_strdup_printf("No OEM string number %s", args[3]);
             *status = EXIT_FAILURE;