diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/basic/missing.h | 4 | ||||
| -rw-r--r-- | src/machine/machine-dbus.c | 8 | ||||
| -rw-r--r-- | src/machine/machinectl.c | 16 | ||||
| -rw-r--r-- | src/sysctl/sysctl.c | 4 | 
4 files changed, 24 insertions, 8 deletions
| diff --git a/src/basic/missing.h b/src/basic/missing.h index ed6cd80c75..34ab0254dd 100644 --- a/src/basic/missing.h +++ b/src/basic/missing.h @@ -977,7 +977,11 @@ static inline int raw_clone(unsigned long flags, void *child_stack) {  }  static inline pid_t raw_getpid(void) { +#if defined(__alpha__) +        return (pid_t) syscall(__NR_getxpid); +#else          return (pid_t) syscall(__NR_getpid); +#endif  }  #if !HAVE_DECL_RENAMEAT2 diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c index dc42ffdc52..7658d7146d 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -825,13 +825,13 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro          if (r < 0)                  return r; -        if (!path_is_absolute(src) || !path_is_safe(src)) -                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Source path must be absolute and not contain ../."); +        if (!path_is_absolute(src)) +                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Source path must be absolute.");          if (isempty(dest))                  dest = src; -        else if (!path_is_absolute(dest) || !path_is_safe(dest)) -                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Destination path must be absolute and not contain ../."); +        else if (!path_is_absolute(dest)) +                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Destination path must be absolute.");          r = bus_verify_polkit_async(                          message, diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index 7cb6ce77ac..66ed41087c 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -1073,6 +1073,8 @@ static int terminate_machine(int argc, char *argv[], void *userdata) {  static int copy_files(int argc, char *argv[], void *userdata) {          _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; +        _cleanup_free_ char *abs_host_path = NULL; +        char *dest, *host_path, *container_path;          sd_bus *bus = userdata;          bool copy_from;          int r; @@ -1082,6 +1084,16 @@ static int copy_files(int argc, char *argv[], void *userdata) {          polkit_agent_open_if_enabled();          copy_from = streq(argv[0], "copy-from"); +        dest = argv[3] ?: argv[2]; +        host_path = copy_from ? dest : argv[2]; +        container_path = copy_from ? argv[2] : dest; + +        if (!path_is_absolute(host_path)) { +                abs_host_path = path_make_absolute_cwd(host_path); +                if (!abs_host_path) +                        return log_oom(); +                host_path = abs_host_path; +        }          r = sd_bus_call_method(                          bus, @@ -1093,8 +1105,8 @@ static int copy_files(int argc, char *argv[], void *userdata) {                          NULL,                          "sss",                          argv[1], -                        argv[2], -                        argv[3]); +                        copy_from ? container_path : host_path, +                        copy_from ? host_path : container_path);          if (r < 0) {                  log_error("Failed to copy: %s", bus_error_message(&error, -r));                  return r; diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index fe277a2015..618844382f 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -51,8 +51,8 @@ static int apply_all(Hashmap *sysctl_options) {                  k = sysctl_write(property, value);                  if (k < 0) { -                        log_full_errno(k == -ENOENT ? LOG_DEBUG : LOG_WARNING, k, -                                       "Failed to write '%s' to '%s': %m", value, property); +                        log_full_errno(k == -ENOENT ? LOG_INFO : LOG_WARNING, k, +                                       "Couldn't write '%s' to '%s', ignoring: %m", value, property);                          if (r == 0 && k != -ENOENT)                                  r = k; | 
