virsysinfo: Trim newline when decoding OEM strings

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>
This commit is contained in:
Michal Privoznik 2024-07-18 15:13:30 +02:00
parent b103200bf3
commit 185065b645
2 changed files with 3 additions and 1 deletions

View File

@ -915,6 +915,8 @@ virSysinfoDMIDecodeOEMString(size_t i,
if (err && *err != '\0')
return -1;
virStringTrimOptionalNewline(*str);
return 0;
}

View 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;