systemctl: properly initialize and free sd_bus_error in "systemctl cat"
We need to properly initialize all error structs before use and free them after use. Also, there's no point in flushing stdout if we output a \n anyway...
This commit is contained in:
+1
-2
@@ -1254,8 +1254,7 @@ static int service_load(Unit *u) {
|
||||
s->notify_access = NOTIFY_MAIN;
|
||||
|
||||
if (s->type == SERVICE_DBUS || s->bus_name) {
|
||||
r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_REQUIRES,
|
||||
SPECIAL_DBUS_SOCKET, NULL, true);
|
||||
r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, NULL, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -3743,20 +3743,19 @@ static int show_all(
|
||||
}
|
||||
|
||||
static int cat(sd_bus *bus, char **args) {
|
||||
_cleanup_free_ char *unit = NULL, *n = NULL;
|
||||
int r = 0;
|
||||
char **name;
|
||||
|
||||
_cleanup_free_ char *unit = NULL, *n = NULL;
|
||||
|
||||
assert(bus);
|
||||
assert(args);
|
||||
|
||||
pager_open_if_enabled();
|
||||
|
||||
STRV_FOREACH(name, args+1) {
|
||||
_cleanup_free_ char *fragment_path = NULL;
|
||||
_cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
_cleanup_strv_free_ char **dropin_paths = NULL;
|
||||
sd_bus_error error;
|
||||
_cleanup_free_ char *fragment_path = NULL;
|
||||
char **path;
|
||||
|
||||
n = unit_name_mangle(*name);
|
||||
@@ -3800,6 +3799,7 @@ static int cat(sd_bus *bus, char **args) {
|
||||
if (!isempty(fragment_path)) {
|
||||
fprintf(stdout, "# %s\n", fragment_path);
|
||||
fflush(stdout);
|
||||
|
||||
r = sendfile_full(STDOUT_FILENO, fragment_path);
|
||||
if (r < 0) {
|
||||
log_warning("Failed to cat %s: %s", fragment_path, strerror(-r));
|
||||
@@ -3812,6 +3812,7 @@ static int cat(sd_bus *bus, char **args) {
|
||||
isempty(fragment_path) && path == dropin_paths ? "" : "\n",
|
||||
*path);
|
||||
fflush(stdout);
|
||||
|
||||
r = sendfile_full(STDOUT_FILENO, *path);
|
||||
if (r < 0) {
|
||||
log_warning("Failed to cat %s: %s", *path, strerror(-r));
|
||||
|
||||
Reference in New Issue
Block a user