1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-28 11:55:44 +03:00

Merge pull request #6255 from keszybz/property-escaping

Proper property escaping
This commit is contained in:
Lennart Poettering 2017-07-04 09:39:56 +02:00 committed by GitHub
commit 7c141f6b3d

View File

@ -725,13 +725,12 @@ int bus_print_property(const char *name, sd_bus_message *property, bool value, b
return r;
if (all || !isempty(s)) {
_cleanup_free_ char *escaped = NULL;
bool good;
escaped = xescape(s, "\n");
if (!escaped)
return -ENOMEM;
print_property(name, "%s", escaped);
/* This property has a single value, so we need to take
* care not to print a new line, everything else is OK. */
good = !strchr(s, '\n');
print_property(name, "%s", good ? s : "[unprintable]");
}
return 1;
@ -852,16 +851,16 @@ int bus_print_property(const char *name, sd_bus_message *property, bool value, b
return r;
while ((r = sd_bus_message_read_basic(property, SD_BUS_TYPE_STRING, &str)) > 0) {
_cleanup_free_ char *escaped = NULL;
bool good;
if (first && !value)
printf("%s=", name);
escaped = xescape(str, "\n ");
if (!escaped)
return -ENOMEM;
/* This property has multiple space-seperated values, so
* neither spaces not newlines can be allowed in a value. */
good = str[strcspn(str, " \n")] == '\0';
printf("%s%s", first ? "" : " ", escaped);
printf("%s%s", first ? "" : " ", good ? str : "[unprintable]");
first = false;
}