{ NULL, NULL },
};
-struct pakfire_jail_mountpoint {
+typedef struct pakfire_jail_mountpoint {
char source[PATH_MAX];
char target[PATH_MAX];
int flags;
-};
+} pakfire_jail_mountpoint;
struct pakfire_jail {
pakfire_ctx* ctx;
pakfire_env* env;
// Mountpoints
- struct pakfire_jail_mountpoint mountpoints[MAX_MOUNTPOINTS];
+ pakfire_jail_mountpoint mountpoints[MAX_MOUNTPOINTS];
unsigned int num_mountpoints;
};
-struct pakfire_jail_exec {
- struct pakfire_jail* jail;
+typedef struct pakfire_jail_exec {
+ pakfire_jail* jail;
sd_event* loop;
int flags;
pakfire_jail_output_callback output;
void* output_data;
} callbacks;
-};
+} pakfire_jail_exec;
static int pakfire_jail_exec_has_flag(
- const struct pakfire_jail_exec* ctx, const enum pakfire_jail_exec_flags flag) {
+ const pakfire_jail_exec* ctx, const enum pakfire_jail_exec_flags flag) {
return ctx->flags & flag;
}
-static void pakfire_jail_free(struct pakfire_jail* jail) {
+static void pakfire_jail_free(pakfire_jail* jail) {
if (jail->cgroup)
pakfire_cgroup_unref(jail->cgroup);
if (jail->pakfire)
free(jail);
}
-static const char* pakfire_jail_uuid(struct pakfire_jail* jail) {
+static const char* pakfire_jail_uuid(pakfire_jail* jail) {
if (!*jail->__uuid)
uuid_unparse_lower(jail->uuid, jail->__uuid);
return jail->__uuid;
}
-int pakfire_jail_create(struct pakfire_jail** jail, struct pakfire* pakfire) {
- struct pakfire_jail* self = NULL;
+int pakfire_jail_create(pakfire_jail** jail, struct pakfire* pakfire) {
+ pakfire_jail* self = NULL;
int r;
// Allocate a new jail
return r;
}
-struct pakfire_jail* pakfire_jail_ref(struct pakfire_jail* jail) {
+pakfire_jail* pakfire_jail_ref(pakfire_jail* jail) {
++jail->nrefs;
return jail;
}
-struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail) {
+pakfire_jail* pakfire_jail_unref(pakfire_jail* jail) {
if (--jail->nrefs > 0)
return jail;
// Resource Limits
-int pakfire_jail_nice(struct pakfire_jail* jail, int nice) {
+int pakfire_jail_nice(pakfire_jail* jail, int nice) {
// Check if nice level is in range
if (nice < -19 || nice > 20)
return -EINVAL;
return 0;
}
-int pakfire_jail_set_cgroup(struct pakfire_jail* jail, pakfire_cgroup* cgroup) {
+int pakfire_jail_set_cgroup(pakfire_jail* jail, pakfire_cgroup* cgroup) {
// Free any previous cgroup
if (jail->cgroup) {
pakfire_cgroup_unref(jail->cgroup);
// Timeout
int pakfire_jail_set_timeout(
- struct pakfire_jail* jail, unsigned int timeout) {
+ pakfire_jail* jail, unsigned int timeout) {
// Store value
jail->timeout = timeout;
Pipes
*/
-static int pakfire_jail_setup_pipe(struct pakfire_jail* self, int (*fds)[2], const int flags) {
+static int pakfire_jail_setup_pipe(pakfire_jail* self, int (*fds)[2], const int flags) {
int r;
// Setup the pipe
return 0;
}
-static void pakfire_jail_close_pipe(struct pakfire_jail* self, int fds[2]) {
+static void pakfire_jail_close_pipe(pakfire_jail* self, int fds[2]) {
for (unsigned int i = 0; i < 2; i++)
if (fds[i] >= 0)
close(fds[i]);
This is a convenience function to fetch the reading end of a pipe and
closes the write end.
*/
-static int pakfire_jail_get_pipe_to_read(struct pakfire_jail* self, int (*fds)[2]) {
+static int pakfire_jail_get_pipe_to_read(pakfire_jail* self, int (*fds)[2]) {
// Give the variables easier names to avoid confusion
int* fd_read = &(*fds)[0];
int* fd_write = &(*fds)[1];
return -EBADF;
}
-static int pakfire_jail_get_pipe_to_write(struct pakfire_jail* self, int (*fds)[2]) {
+static int pakfire_jail_get_pipe_to_write(pakfire_jail* self, int (*fds)[2]) {
// Give the variables easier names to avoid confusion
int* fd_read = &(*fds)[0];
int* fd_write = &(*fds)[1];
}
static int pakfire_jail_stdin(sd_event_source* source, int fd, unsigned int events, void* data) {
- struct pakfire_jail_exec* exec = data;
- struct pakfire_jail* self = exec->jail;
+ pakfire_jail_exec* exec = data;
+ pakfire_jail* self = exec->jail;
ssize_t bytes_written = 0;
ssize_t bytes_read = 0;
return 0;
}
-static int pakfire_jail_output(struct pakfire_jail* self, int fd, unsigned int events, FILE* f) {
+static int pakfire_jail_output(pakfire_jail* self, int fd, unsigned int events, FILE* f) {
ssize_t bytes_written = 0;
ssize_t bytes_read = 0;
char buffer[4096];
}
static int pakfire_jail_stdout(sd_event_source* source, int fd, unsigned int events, void* data) {
- struct pakfire_jail_exec* exec = data;
+ pakfire_jail_exec* exec = data;
return pakfire_jail_output(exec->jail, fd, events, exec->streams.stdout);
}
static int pakfire_jail_stderr(sd_event_source* source, int fd, unsigned int events, void* data) {
- struct pakfire_jail_exec* exec = data;
+ pakfire_jail_exec* exec = data;
return pakfire_jail_output(exec->jail, fd, events, exec->streams.stderr);
}
static int pakfire_jail_drain(sd_event_source* source, void* data) {
- struct pakfire_jail_exec* exec = data;
- struct pakfire_jail* self = exec->jail;
+ pakfire_jail_exec* exec = data;
+ pakfire_jail* self = exec->jail;
int r;
DEBUG(self->ctx, "Draining the pipes...\n");
static void pakfire_jail_log_redirect(void* data, int priority, const char* file,
int line, const char* fn, const char* format, va_list args) {
- struct pakfire_jail_exec* ctx = data;
+ pakfire_jail_exec* ctx = data;
switch (priority) {
case LOG_INFO:
Passes any log messages on to the context logger
*/
static int pakfire_jail_INFO(pakfire_ctx* ctx, void* data, const char* line, size_t length) {
- struct pakfire_jail* jail = data;
+ pakfire_jail* jail = data;
INFO(jail->ctx, "%.*s", (int)length, line);
return 0;
}
static int pakfire_jail_WARN(pakfire_ctx* ctx, void* data, const char* line, size_t length) {
- struct pakfire_jail* jail = data;
+ pakfire_jail* jail = data;
ERROR(jail->ctx, "%.*s", (int)length, line);
return 0;
}
static int pakfire_jail_ERROR(pakfire_ctx* ctx, void* data, const char* line, size_t length) {
- struct pakfire_jail* jail = data;
+ pakfire_jail* jail = data;
ERROR(jail->ctx, "%.*s", (int)length, line);
return 0;
#ifdef ENABLE_DEBUG
static int pakfire_jail_DEBUG(pakfire_ctx* ctx, void* data, const char* line, size_t length) {
- struct pakfire_jail* jail = data;
+ pakfire_jail* jail = data;
DEBUG(jail->ctx, "%.*s", (int)length, line);
return 0;
#endif /* ENABLE_DEBUG */
static int pakfire_jail_output_stdout(pakfire_ctx* ctx, void* data, const char* line, size_t length) {
- struct pakfire_jail_exec* exec = data;
+ pakfire_jail_exec* exec = data;
// Do nothing if we don't have a callback
if (!exec->callbacks.output)
}
static int pakfire_jail_output_stderr(pakfire_ctx* ctx, void* data, const char* line, size_t length) {
- struct pakfire_jail_exec* exec = data;
+ pakfire_jail_exec* exec = data;
// Do nothing if we don't have a callback
if (!exec->callbacks.output)
// Capabilities
// Logs all capabilities of the current process
-static int pakfire_jail_show_capabilities(struct pakfire_jail* jail) {
+static int pakfire_jail_show_capabilities(pakfire_jail* jail) {
cap_t caps = NULL;
char* name = NULL;
cap_flag_value_t value_e;
return r;
}
-static int pakfire_jail_set_capabilities(struct pakfire_jail* jail) {
+static int pakfire_jail_set_capabilities(pakfire_jail* jail) {
cap_t caps = NULL;
char* name = NULL;
int r;
// Syscall Filter
-static int pakfire_jail_limit_syscalls(struct pakfire_jail* jail) {
+static int pakfire_jail_limit_syscalls(pakfire_jail* jail) {
const int syscalls[] = {
// The kernel's keyring isn't namespaced
SCMP_SYS(keyctl),
// Mountpoints
-int pakfire_jail_bind(struct pakfire_jail* self,
+int pakfire_jail_bind(pakfire_jail* self,
const char* source, const char* target, int flags) {
- struct pakfire_jail_mountpoint* mp = NULL;
+ pakfire_jail_mountpoint* mp = NULL;
int r;
// Check if there is any space left
return 0;
}
-static int pakfire_jail_mount_networking(struct pakfire_jail* jail) {
+static int pakfire_jail_mount_networking(pakfire_jail* jail) {
int r;
const char* paths[] = {
/*
Mounts everything that we require in the new namespace
*/
-static int pakfire_jail_mount(struct pakfire_jail* jail, struct pakfire_jail_exec* ctx) {
- struct pakfire_jail_mountpoint* mp = NULL;
+static int pakfire_jail_mount(pakfire_jail* jail, pakfire_jail_exec* ctx) {
+ pakfire_jail_mountpoint* mp = NULL;
int flags = 0;
int r;
// Networking
-static int pakfire_jail_setup_loopback(struct pakfire_jail* jail) {
+static int pakfire_jail_setup_loopback(pakfire_jail* jail) {
struct nl_sock* nl = NULL;
struct nl_cache* cache = NULL;
struct rtnl_link* link = NULL;
// UID/GID Mapping
-static int pakfire_jail_setup_uid_mapping(struct pakfire_jail* jail, pid_t pid) {
+static int pakfire_jail_setup_uid_mapping(pakfire_jail* jail, pid_t pid) {
char path[PATH_MAX];
int r;
return r;
}
-static int pakfire_jail_setup_gid_mapping(struct pakfire_jail* jail, pid_t pid) {
+static int pakfire_jail_setup_gid_mapping(pakfire_jail* jail, pid_t pid) {
char path[PATH_MAX];
int r;
return r;
}
-static int pakfire_jail_setgroups(struct pakfire_jail* jail, pid_t pid) {
+static int pakfire_jail_setgroups(pakfire_jail* jail, pid_t pid) {
char path[PATH_MAX];
int r;
return r;
}
-static int pakfire_jail_send_signal(struct pakfire_jail* jail, int fd) {
+static int pakfire_jail_send_signal(pakfire_jail* jail, int fd) {
const uint64_t val = 1;
int r = 0;
return r;
}
-static int pakfire_jail_wait_for_signal(struct pakfire_jail* jail, int fd) {
+static int pakfire_jail_wait_for_signal(pakfire_jail* jail, int fd) {
uint64_t val = 0;
int r = 0;
*/
static int pakfire_jail_terminate(sd_event_source* source,
const struct signalfd_siginfo* si, void* data) {
- struct pakfire_jail_exec* exec = data;
- struct pakfire_jail* self = exec->jail;
+ pakfire_jail_exec* exec = data;
+ pakfire_jail* self = exec->jail;
int r;
// Log action
Called when the timer has expired.
*/
static int pakfire_jail_timer(sd_event_source* s, uint64_t usec, void* data) {
- struct pakfire_jail_exec* ctx = data;
- struct pakfire_jail* jail = ctx->jail;
+ pakfire_jail_exec* ctx = data;
+ pakfire_jail* jail = ctx->jail;
int r;
DEBUG(jail->ctx, "Timer has fired...\n");
Called when the child process has exited.
*/
static int pakfire_jail_exited(sd_event_source* source, const siginfo_t* si, void* data) {
- struct pakfire_jail_exec* ctx = data;
- struct pakfire_jail* jail = ctx->jail;
+ pakfire_jail_exec* ctx = data;
+ pakfire_jail* jail = ctx->jail;
int r = 0;
switch (si->si_code) {
return sd_event_exit(ctx->loop, r);
}
-struct pakfire_jail_command {
- struct pakfire_jail* jail;
+typedef struct pakfire_jail_command {
+ pakfire_jail* jail;
const char** argv;
pakfire_env* env;
-};
+} pakfire_jail_command;
static int pakfire_jail_launch_command(pakfire_ctx* ctx, void* data) {
- struct pakfire_jail_command* command = data;
+ pakfire_jail_command* command = data;
pakfire_env* env = NULL;
char** envp = NULL;
int r;
/*
Performs the initialisation that needs to happen in the parent part
*/
-static int pakfire_jail_parent(struct pakfire_jail* jail, struct pakfire_jail_exec* ctx) {
+static int pakfire_jail_parent(pakfire_jail* jail, pakfire_jail_exec* ctx) {
int fd = -EBADF;
int r;
return 0;
}
-static int pakfire_jail_switch_root(struct pakfire_jail* jail, const char* root) {
+static int pakfire_jail_switch_root(pakfire_jail* jail, const char* root) {
int r;
// Change to the new root
return 0;
}
-static int pakfire_jail_connect_null(struct pakfire_jail* self, int fileno) {
+static int pakfire_jail_connect_null(pakfire_jail* self, int fileno) {
int fd = -EBADF;
int flags = 0;
int r;
return r;
}
-static int pakfire_jail_child(struct pakfire_jail* jail, struct pakfire_jail_exec* ctx) {
+static int pakfire_jail_child(pakfire_jail* jail, pakfire_jail_exec* ctx) {
int r;
// Redirect any logging to our log pipe
}
// Run a command in the jail
-static int __pakfire_jail_exec(struct pakfire_jail* jail,
+static int __pakfire_jail_exec(pakfire_jail* jail,
pakfire_jail_main_callback callback, void* data, int flags,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data,
return -EINVAL;
// Initialize context for this call
- struct pakfire_jail_exec ctx = {
+ pakfire_jail_exec ctx = {
.jail = jail,
.flags = flags,
.pidfd = -EBADF,
return r;
}
-int pakfire_jail_exec(struct pakfire_jail* jail,
+int pakfire_jail_execute(pakfire_jail* jail,
pakfire_jail_main_callback callback, void* data, int flags) {
return __pakfire_jail_exec(jail, callback, data, flags, NULL, NULL, NULL, NULL, NULL, NULL);
}
-int pakfire_jail_exec_command(struct pakfire_jail* jail,
+int pakfire_jail_execute_command(pakfire_jail* jail,
const char* argv[], pakfire_env* env, int flags) {
- struct pakfire_jail_command command = {
+ pakfire_jail_command command = {
.jail = jail,
.argv = argv,
.env = env,
NULL, NULL, NULL, NULL, NULL, NULL);
}
-int pakfire_jail_exec_capture_output(struct pakfire_jail* jail,
+int pakfire_jail_execute_capture_output(pakfire_jail* jail,
const char* argv[], pakfire_env* env, int flags, char** output, size_t* length) {
- struct pakfire_jail_command command = {
+ pakfire_jail_command command = {
.jail = jail,
.argv = argv,
.env = env,
}
int pakfire_jail_communicate(
- struct pakfire_jail* jail, const char* argv[], pakfire_env* env, int flags,
+ pakfire_jail* jail, const char* argv[], pakfire_env* env, int flags,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data) {
- struct pakfire_jail_command command = {
+ pakfire_jail_command command = {
.jail = jail,
.argv = argv,
.env = env,
input_callback, input_data, output_callback, output_data, NULL, NULL);
}
-int pakfire_jail_exec_script(struct pakfire_jail* jail,
+int pakfire_jail_execute_script(pakfire_jail* jail,
const char* script, const size_t size, const char* args[], pakfire_env* env,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data) {
*/
int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], pakfire_env* env,
int flags, char** output, size_t* output_length) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r;
// Create a new jail
goto ERROR;
// Execute the command
- r = pakfire_jail_exec_capture_output(jail, argv, env, flags, output, output_length);
+ r = pakfire_jail_execute_capture_output(jail, argv, env, flags, output, output_length);
ERROR:
if (jail)
int pakfire_jail_run_script(struct pakfire* pakfire, const char* script, const size_t length,
const char* argv[], pakfire_env* env, int flags) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r;
// Create a new jail
goto ERROR;
// Execute the command
- r = pakfire_jail_exec_script(jail, script, length, argv, env, NULL, NULL, NULL, NULL);
+ r = pakfire_jail_execute_script(jail, script, length, argv, env, NULL, NULL, NULL, NULL);
ERROR:
if (jail)
return r;
}
-int pakfire_jail_shell(struct pakfire_jail* jail, pakfire_env* e) {
+int pakfire_jail_shell(pakfire_jail* jail, pakfire_env* e) {
pakfire_env* env = NULL;
int r;
}
// Execute /bin/bash
- r = pakfire_jail_exec_command(jail, argv, env, PAKFIRE_JAIL_INTERACTIVE);
+ r = pakfire_jail_execute_command(jail, argv, env, PAKFIRE_JAIL_INTERACTIVE);
if (r < 0)
goto ERROR;
ssize_t pakfire_jail_send_filelist(pakfire_ctx* ctx,
void* data, char* buffer, size_t length) {
- struct pakfire_jail_filelist* input = data;
+ pakfire_jail_filelist* input = data;
pakfire_file* file = NULL;
int r;
#include <pakfire/env.h>
#include <pakfire/pakfire.h>
-struct pakfire_jail;
+typedef struct pakfire_jail pakfire_jail;
// Input callback
typedef pakfire_buffer_input_callback pakfire_jail_input_callback;
typedef int (*pakfire_jail_output_callback)(pakfire_ctx* ctx, void* data,
const enum pakfire_jail_output_stream stream, const char* line, size_t length);
-int pakfire_jail_create(struct pakfire_jail** jail, struct pakfire* pakfire);
+int pakfire_jail_create(pakfire_jail** jail, struct pakfire* pakfire);
-struct pakfire_jail* pakfire_jail_ref(struct pakfire_jail* jail);
-struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail);
+pakfire_jail* pakfire_jail_ref(pakfire_jail* jail);
+pakfire_jail* pakfire_jail_unref(pakfire_jail* jail);
// Mountpoints
-int pakfire_jail_bind(struct pakfire_jail* jail,
+int pakfire_jail_bind(pakfire_jail* jail,
const char* source, const char* target, int flags);
// Resource Limits
-int pakfire_jail_nice(struct pakfire_jail* jail, int nice);
+int pakfire_jail_nice(pakfire_jail* jail, int nice);
// Timeout
-int pakfire_jail_set_timeout(struct pakfire_jail* jail, unsigned int timeout);
+int pakfire_jail_set_timeout(pakfire_jail* jail, unsigned int timeout);
typedef int (*pakfire_jail_main_callback)(pakfire_ctx* ctx, void* data);
PAKFIRE_JAIL_HAS_LOOP_DEVICES = (1 << 3),
};
-int pakfire_jail_exec(struct pakfire_jail* jail,
+int pakfire_jail_execute(pakfire_jail* jail,
pakfire_jail_main_callback callback, void* data, int flags);
-int pakfire_jail_exec_command(struct pakfire_jail* jail,
+int pakfire_jail_execute_command(pakfire_jail* jail,
const char* argv[], pakfire_env* env, int flags);
-int pakfire_jail_exec_capture_output(struct pakfire_jail* jail,
+int pakfire_jail_execute_capture_output(pakfire_jail* jail,
const char* argv[], pakfire_env* env, int flags, char** output, size_t* length);
// Resource limits
-int pakfire_jail_set_cgroup(struct pakfire_jail* jail, pakfire_cgroup* cgroup);
+int pakfire_jail_set_cgroup(pakfire_jail* jail, pakfire_cgroup* cgroup);
int pakfire_jail_communicate(
- struct pakfire_jail* jail, const char* argv[], pakfire_env* env, int flags,
+ pakfire_jail* jail, const char* argv[], pakfire_env* env, int flags,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data);
int pakfire_jail_run_script(struct pakfire* pakfire,
const char* script, const size_t length, const char* argv[], pakfire_env* env, int flags);
-int pakfire_jail_exec_script(struct pakfire_jail* jail,
+int pakfire_jail_execute_script(pakfire_jail* jail,
const char* script, const size_t size, const char* args[], pakfire_env* env,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data);
-int pakfire_jail_shell(struct pakfire_jail* jail, pakfire_env* env);
+int pakfire_jail_shell(pakfire_jail* jail, pakfire_env* env);
int pakfire_jail_ldconfig(struct pakfire* pakfire);
int pakfire_jail_run_systemd_tmpfiles(struct pakfire* pakfire);
// Stream a filelist
-struct pakfire_jail_filelist {
+typedef struct pakfire_jail_filelist {
pakfire_filelist* filelist;
size_t i;
// Buffer for the path
char buffer[PATH_MAX];
const char* p;
-};
+} pakfire_jail_filelist;
ssize_t pakfire_jail_send_filelist(pakfire_ctx* ctx,
void* data, char* buffer, size_t length);
};
static int test_create(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
// Create a new jail
ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire));
}
static int test_exit_code(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
const char* argv[] = {
ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire));
// Check if we receive the correct exit code
- ASSERT_EQUALS(pakfire_jail_exec_command(jail, argv, NULL, 0), 123);
+ ASSERT_EQUALS(pakfire_jail_execute_command(jail, argv, NULL, 0), 123);
// Success
r = EXIT_SUCCESS;
}
static int test_segv(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
const char* argv[] = {
ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire));
// Check if we receive the correct exit code
- ASSERT(pakfire_jail_exec_command(jail, argv, NULL, 0) == 139);
+ ASSERT(pakfire_jail_execute_command(jail, argv, NULL, 0) == 139);
// Success
r = EXIT_SUCCESS;
}
static int test_exec(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
char* output = NULL;
size_t length = 0;
ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire));
// Try to execute something
- ASSERT_SUCCESS(pakfire_jail_exec_capture_output(jail, cmd_hello_world, NULL, 0, &output, &length));
+ ASSERT_SUCCESS(pakfire_jail_execute_capture_output(jail, cmd_hello_world, NULL, 0, &output, &length));
// We should have some output
ASSERT_STRING_EQUALS(output, "Hello World!\n");
static int test_launch_into_cgroup(const struct test* t) {
pakfire_cgroup* cgroup = NULL;
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
// Create a new cgroup
ASSERT_SUCCESS(pakfire_jail_set_cgroup(jail, cgroup));
// Run command
- ASSERT(pakfire_jail_exec_command(jail, cmd_hello_world, NULL, 0) == 0);
+ ASSERT(pakfire_jail_execute_command(jail, cmd_hello_world, NULL, 0) == 0);
r = EXIT_SUCCESS;
}
static int test_nice(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
char* output = NULL;
size_t length = 0;
int r = EXIT_FAILURE;
ASSERT_SUCCESS(pakfire_jail_nice(jail, 5));
// Check if the nice level has been set
- ASSERT_SUCCESS(pakfire_jail_exec_capture_output(jail, argv, NULL, 0, &output, &length));
+ ASSERT_SUCCESS(pakfire_jail_execute_capture_output(jail, argv, NULL, 0, &output, &length));
ASSERT_STRING_EQUALS(output, "5\n");
// Success
static int test_memory_limit(const struct test* t) {
pakfire_cgroup* cgroup = NULL;
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
ASSERT_SUCCESS(pakfire_cgroup_set_memory_limit(cgroup, 100 * 1024 * 1024));
// Try to exhaust all memory
- ASSERT_FAILURE(pakfire_jail_exec_command(jail, cmd_exhaust_memory, NULL, 0));
+ ASSERT_FAILURE(pakfire_jail_execute_command(jail, cmd_exhaust_memory, NULL, 0));
// A fork bomb should also exhaust all memory
- ASSERT_FAILURE(pakfire_jail_exec_command(jail, cmd_fork_bomb, NULL, 0));
+ ASSERT_FAILURE(pakfire_jail_execute_command(jail, cmd_fork_bomb, NULL, 0));
// Success
r = EXIT_SUCCESS;
static int test_pid_limit(const struct test* t) {
pakfire_cgroup* cgroup = NULL;
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
// Create cgroup
ASSERT_SUCCESS(pakfire_cgroup_set_pid_limit(cgroup, 100));
// Try to fork as many processes as possible
- ASSERT_FAILURE(pakfire_jail_exec_command(jail, cmd_fork_bomb, NULL, 0));
+ ASSERT_FAILURE(pakfire_jail_execute_command(jail, cmd_fork_bomb, NULL, 0));
// Success
r = EXIT_SUCCESS;
}
static int test_bind(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
const char* source = "/";
ASSERT_SUCCESS(pakfire_jail_bind(jail, source, target, MS_RDONLY));
// Check if the mount actually works
- ASSERT_SUCCESS(pakfire_jail_exec_command(jail, argv, NULL, 0));
+ ASSERT_SUCCESS(pakfire_jail_execute_command(jail, argv, NULL, 0));
// Success
r = EXIT_SUCCESS;
}
static int test_communicate(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
// How many lines to send?
}
static int test_send_one_signal(const struct test* t,
- struct pakfire_jail* jail, const char* signal) {
+ pakfire_jail* jail, const char* signal) {
const char* argv[] = {
"/command", "send-signal", signal, NULL,
};
// Perform the command
- return pakfire_jail_exec_command(jail, argv, NULL, 0);
+ return pakfire_jail_execute_command(jail, argv, NULL, 0);
}
static int test_send_signal(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
// Create a new jail
}
static int test_timeout(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
const char* argv[] = {
ASSERT_SUCCESS(pakfire_jail_set_timeout(jail, 1));
// Check if we receive the correct exit code
- ASSERT(pakfire_jail_exec_command(jail, argv, NULL, 0) == 139);
+ ASSERT(pakfire_jail_execute_command(jail, argv, NULL, 0) == 139);
// Success
r = EXIT_SUCCESS;
}
static int test_callback(const struct test* t) {
- struct pakfire_jail* jail = NULL;
+ pakfire_jail* jail = NULL;
int r = EXIT_FAILURE;
int i = 123;
ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire));
// Check if we receive the correct exit code
- ASSERT(pakfire_jail_exec(jail, __callback, &i, 0) == 123);
+ ASSERT(pakfire_jail_execute(jail, __callback, &i, 0) == 123);
// Success
r = EXIT_SUCCESS;