Format c/c++ files in src, tools and test
This commit is contained in:
parent
03ba13aec7
commit
5b695c9539
@ -3,19 +3,33 @@
|
||||
|
||||
const char *errno2str(int errno_) {
|
||||
switch (errno_) {
|
||||
case EPERM: return "EPERM";
|
||||
case ENOENT: return "ENOENT";
|
||||
case ESRCH: return "ESRCH";
|
||||
case ENOEXEC: return "ENOEXEC";
|
||||
case EBADF: return "EBADF";
|
||||
case ECHILD: return "ECHILD";
|
||||
case EAGAIN: return "EAGAIN";
|
||||
case ENOMEM: return "ENOMEM";
|
||||
case EACCES: return "EACCES";
|
||||
case EFAULT: return "EFAULT";
|
||||
case EBUSY: return "EBUSY";
|
||||
case EINVAL: return "EINVAL";
|
||||
case ENOSYS: return "ENOSYS";
|
||||
default: return "unknown";
|
||||
case EPERM:
|
||||
return "EPERM";
|
||||
case ENOENT:
|
||||
return "ENOENT";
|
||||
case ESRCH:
|
||||
return "ESRCH";
|
||||
case ENOEXEC:
|
||||
return "ENOEXEC";
|
||||
case EBADF:
|
||||
return "EBADF";
|
||||
case ECHILD:
|
||||
return "ECHILD";
|
||||
case EAGAIN:
|
||||
return "EAGAIN";
|
||||
case ENOMEM:
|
||||
return "ENOMEM";
|
||||
case EACCES:
|
||||
return "EACCES";
|
||||
case EFAULT:
|
||||
return "EFAULT";
|
||||
case EBUSY:
|
||||
return "EBUSY";
|
||||
case EINVAL:
|
||||
return "EINVAL";
|
||||
case ENOSYS:
|
||||
return "ENOSYS";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,7 @@
|
||||
|
||||
sgx_status_t occlum_ocall_sgx_init_quote(
|
||||
sgx_target_info_t *target_info,
|
||||
sgx_epid_group_id_t* epid_group_id)
|
||||
{
|
||||
sgx_epid_group_id_t *epid_group_id) {
|
||||
// Intel's manual:
|
||||
// It's suggested that the caller should wait (typically several seconds
|
||||
// to ten of seconds) and retry this API if SGX_ERROR_BUSY is returned.
|
||||
@ -20,8 +19,7 @@ sgx_status_t occlum_ocall_sgx_get_quote(
|
||||
sgx_quote_nonce_t *nonce,
|
||||
sgx_report_t *qe_report,
|
||||
sgx_quote_t *quote_buf,
|
||||
uint32_t quote_buf_len)
|
||||
{
|
||||
uint32_t quote_buf_len) {
|
||||
sgx_status_t ret = SGX_SUCCESS;
|
||||
|
||||
uint32_t real_quote_len;
|
||||
|
@ -16,7 +16,7 @@ typedef enum {
|
||||
#define COLOR_GREEN "\x1B[32m"
|
||||
|
||||
static level_t new_level(unsigned int level) {
|
||||
if (level >= 5) level = 5;
|
||||
if (level >= 5) { level = 5; }
|
||||
return (level_t) level;
|
||||
}
|
||||
|
||||
|
@ -11,8 +11,7 @@ ssize_t occlum_ocall_sendmsg(int sockfd,
|
||||
size_t msg_iovlen,
|
||||
const void *msg_control,
|
||||
size_t msg_controllen,
|
||||
int flags)
|
||||
{
|
||||
int flags) {
|
||||
struct msghdr msg = {
|
||||
(void *) msg_name,
|
||||
msg_namelen,
|
||||
@ -35,8 +34,7 @@ ssize_t occlum_ocall_recvmsg(int sockfd,
|
||||
size_t msg_controllen,
|
||||
size_t *msg_controllen_recv,
|
||||
int *msg_flags_recv,
|
||||
int flags)
|
||||
{
|
||||
int flags) {
|
||||
struct msghdr msg = {
|
||||
msg_name,
|
||||
msg_namelen,
|
||||
@ -47,7 +45,7 @@ ssize_t occlum_ocall_recvmsg(int sockfd,
|
||||
0,
|
||||
};
|
||||
ssize_t ret = recvmsg(sockfd, &msg, flags);
|
||||
if (ret < 0) return ret;
|
||||
if (ret < 0) { return ret; }
|
||||
|
||||
*msg_namelen_recv = msg.msg_namelen;
|
||||
*msg_controllen_recv = msg.msg_controllen;
|
||||
|
@ -13,7 +13,8 @@ int occlum_ocall_sched_getaffinity(size_t cpusize, unsigned char* buf) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
int occlum_ocall_sched_setaffinity(int host_tid, size_t cpusize, const unsigned char* buf) {
|
||||
int occlum_ocall_sched_setaffinity(int host_tid, size_t cpusize,
|
||||
const unsigned char *buf) {
|
||||
return syscall(__NR_sched_setaffinity, host_tid, cpusize, buf);
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,8 @@ void* exec_libos_thread(void* _thread_data) {
|
||||
int host_tid = gettid();
|
||||
int libos_tid = thread_data->libos_tid;
|
||||
int libos_exit_status = -1;
|
||||
sgx_status_t status = occlum_ecall_exec_thread(eid, &libos_exit_status, libos_tid, host_tid);
|
||||
sgx_status_t status = occlum_ecall_exec_thread(eid, &libos_exit_status, libos_tid,
|
||||
host_tid);
|
||||
if (status != SGX_SUCCESS) {
|
||||
const char *sgx_err = pal_get_sgx_error_msg(status);
|
||||
PAL_ERROR("Failed to enter the enclave to execute a LibOS thread: %s", sgx_err);
|
||||
|
@ -35,7 +35,8 @@ int occlum_pal_init(const struct occlum_pal_attr* attr) {
|
||||
eid = pal_get_enclave_id();
|
||||
|
||||
int ecall_ret = 0;
|
||||
sgx_status_t ecall_status = occlum_ecall_init(eid, &ecall_ret, attr->log_level, attr->instance_dir);
|
||||
sgx_status_t ecall_status = occlum_ecall_init(eid, &ecall_ret, attr->log_level,
|
||||
attr->instance_dir);
|
||||
if (ecall_status != SGX_SUCCESS) {
|
||||
const char *sgx_err = pal_get_sgx_error_msg(ecall_status);
|
||||
PAL_ERROR("Failed to do ECall: %s", sgx_err);
|
||||
@ -69,7 +70,8 @@ int occlum_pal_exec(const char* cmd_path,
|
||||
}
|
||||
|
||||
int ecall_ret = 0; // libos_tid
|
||||
sgx_status_t ecall_status = occlum_ecall_new_process(eid, &ecall_ret, cmd_path, cmd_args, cmd_env, io_fds);
|
||||
sgx_status_t ecall_status = occlum_ecall_new_process(eid, &ecall_ret, cmd_path, cmd_args,
|
||||
cmd_env, io_fds);
|
||||
if (ecall_status != SGX_SUCCESS) {
|
||||
const char *sgx_err = pal_get_sgx_error_msg(ecall_status);
|
||||
PAL_ERROR("Failed to do ECall: %s", sgx_err);
|
||||
|
@ -98,27 +98,29 @@ int pal_init_enclave(const char* instance_dir) {
|
||||
/* Debug Support: set 2nd parameter to 1 */
|
||||
const char *enclave_path = get_enclave_absolute_path(instance_dir);
|
||||
int sgx_debug_flag = get_enclave_debug_flag();
|
||||
ret = sgx_create_enclave(enclave_path, sgx_debug_flag, &token, &updated, &global_eid, NULL);
|
||||
ret = sgx_create_enclave(enclave_path, sgx_debug_flag, &token, &updated, &global_eid,
|
||||
NULL);
|
||||
if (ret != SGX_SUCCESS) {
|
||||
const char *sgx_err_msg = pal_get_sgx_error_msg(ret);
|
||||
PAL_ERROR("Failed to create enclave: %s", sgx_err_msg);
|
||||
if (fp != NULL) fclose(fp);
|
||||
if (fp != NULL) { fclose(fp); }
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Step 3: save the launch token if it is updated */
|
||||
if (updated == 0 || fp == NULL) {
|
||||
/* if the token is not updated, or file handler is invalid, do not perform saving */
|
||||
if (fp != NULL) fclose(fp);
|
||||
if (fp != NULL) { fclose(fp); }
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* reopen the file with write capablity */
|
||||
fp = freopen(token_path, "wb", fp);
|
||||
if (fp == NULL) return 0;
|
||||
if (fp == NULL) { return 0; }
|
||||
size_t write_num = fwrite(token, 1, sizeof(sgx_launch_token_t), fp);
|
||||
if (write_num != sizeof(sgx_launch_token_t))
|
||||
if (write_num != sizeof(sgx_launch_token_t)) {
|
||||
PAL_WARN("Warning: Failed to save launch token to \"%s\".\n", token_path);
|
||||
}
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
|
@ -10,8 +10,7 @@ static const char* get_instance_dir(void) {
|
||||
const char *instance_dir_from_env = (const char *) getenv("OCCLUM_INSTANCE_DIR");
|
||||
if (instance_dir_from_env != NULL) {
|
||||
return instance_dir_from_env;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
return "./.occlum";
|
||||
}
|
||||
}
|
||||
|
@ -116,8 +116,9 @@ static int test_access_framework(test_access_func_t fn) {
|
||||
if (create_file(file_path, mode) < 0) {
|
||||
return -1;
|
||||
}
|
||||
if (fn(file_path) < 0)
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -85,12 +85,15 @@ typedef int(*test_chmod_func_t)(const char *);
|
||||
static int test_chmod_framework(test_chmod_func_t fn) {
|
||||
const char *file_path = "/root/test_filesystem_chmod.txt";
|
||||
|
||||
if (create_file(file_path) < 0)
|
||||
if (create_file(file_path) < 0) {
|
||||
return -1;
|
||||
if (fn(file_path) < 0)
|
||||
}
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -107,12 +107,15 @@ typedef int(*test_chown_func_t)(const char *);
|
||||
static int test_chown_framework(test_chown_func_t fn) {
|
||||
const char *file_path = "/root/test_filesystem_chown.txt";
|
||||
|
||||
if (create_file(file_path) < 0)
|
||||
if (create_file(file_path) < 0) {
|
||||
return -1;
|
||||
if (fn(file_path) < 0)
|
||||
}
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -16,13 +16,15 @@
|
||||
|
||||
int connect_with_server(const char *addr_string, const char *port_string) {
|
||||
//"NULL" addr means connectionless, no need to connect to server
|
||||
if (strcmp(addr_string, "NULL") == 0)
|
||||
if (strcmp(addr_string, "NULL") == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (sockfd < 0)
|
||||
if (sockfd < 0) {
|
||||
THROW_ERROR("create socket error");
|
||||
}
|
||||
|
||||
struct sockaddr_in servaddr;
|
||||
memset(&servaddr, 0, sizeof(servaddr));
|
||||
@ -44,8 +46,9 @@ int connect_with_server(const char *addr_string, const char *port_string) {
|
||||
}
|
||||
|
||||
int neogotiate_msg(int server_fd, char *buf, int buf_size) {
|
||||
if (read(server_fd, buf, buf_size) < 0)
|
||||
if (read(server_fd, buf, buf_size) < 0) {
|
||||
THROW_ERROR("read failed");
|
||||
}
|
||||
|
||||
if (write(server_fd, RESPONSE, sizeof(RESPONSE)) < 0) {
|
||||
THROW_ERROR("write failed");
|
||||
@ -54,8 +57,9 @@ int neogotiate_msg(int server_fd, char *buf, int buf_size) {
|
||||
}
|
||||
|
||||
int client_send(int server_fd, char *buf) {
|
||||
if (send(server_fd, buf, strlen(buf), 0) < 0)
|
||||
if (send(server_fd, buf, strlen(buf), 0) < 0) {
|
||||
THROW_ERROR("send msg error");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -74,15 +78,17 @@ int client_sendmsg(int server_fd, char *buf) {
|
||||
msg.msg_flags = 0;
|
||||
|
||||
ret = sendmsg(server_fd, &msg, 0);
|
||||
if (ret <= 0)
|
||||
if (ret <= 0) {
|
||||
THROW_ERROR("sendmsg failed");
|
||||
}
|
||||
|
||||
msg.msg_iov = NULL;
|
||||
msg.msg_iovlen = 0;
|
||||
|
||||
ret = sendmsg(server_fd, &msg, 0);
|
||||
if (ret != 0)
|
||||
if (ret != 0) {
|
||||
THROW_ERROR("empty sendmsg failed");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -108,12 +114,14 @@ int client_connectionless_sendmsg(char *buf) {
|
||||
msg.msg_flags = 0;
|
||||
|
||||
int server_fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (server_fd < 0)
|
||||
if (server_fd < 0) {
|
||||
THROW_ERROR("create socket error");
|
||||
}
|
||||
|
||||
ret = sendmsg(server_fd, &msg, 0);
|
||||
if (ret <= 0)
|
||||
if (ret <= 0) {
|
||||
THROW_ERROR("sendmsg failed");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -128,8 +136,7 @@ int main(int argc, const char *argv[]) {
|
||||
int port = strtol(argv[2], NULL, 10);
|
||||
int server_fd = connect_with_server(argv[1], argv[2]);
|
||||
|
||||
switch (port)
|
||||
{
|
||||
switch (port) {
|
||||
case 8800:
|
||||
neogotiate_msg(server_fd, buf, buf_size);
|
||||
break;
|
||||
|
@ -17,8 +17,7 @@ typedef struct t_cpuid {
|
||||
unsigned int edx;
|
||||
} t_cpuid_t;
|
||||
|
||||
static inline void native_cpuid(int leaf, int subleaf, t_cpuid_t *p)
|
||||
{
|
||||
static inline void native_cpuid(int leaf, int subleaf, t_cpuid_t *p) {
|
||||
memset(p, 0, sizeof(*p));
|
||||
/* ecx is often an input as well as an output. */
|
||||
asm volatile("cpuid"
|
||||
|
@ -57,10 +57,11 @@ static int __fcntl_getlk_and_setlk(int fd, int open_flags) {
|
||||
}
|
||||
|
||||
// setlk
|
||||
if ((open_flags & O_WRONLY) || (open_flags & O_RDWR))
|
||||
if ((open_flags & O_WRONLY) || (open_flags & O_RDWR)) {
|
||||
fl.l_type = F_WRLCK;
|
||||
else
|
||||
} else {
|
||||
fl.l_type = F_RDLCK;
|
||||
}
|
||||
ret = fcntl(fd, F_SETLK, &fl);
|
||||
if (ret < 0) {
|
||||
THROW_ERROR("failed to call setlk");
|
||||
@ -70,8 +71,9 @@ static int __fcntl_getlk_and_setlk(int fd, int open_flags) {
|
||||
}
|
||||
|
||||
static int __fcntl_dupfd(int fd, int open_flags) {
|
||||
if (fcntl(fd, F_DUPFD, 0) < 0)
|
||||
if (fcntl(fd, F_DUPFD, 0) < 0) {
|
||||
THROW_ERROR("failed to duplicate the fd");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -87,8 +89,9 @@ static int test_fcntl_framework(test_fcntl_func_t fn) {
|
||||
if (fd < 0) {
|
||||
THROW_ERROR("failed to open & create file");
|
||||
}
|
||||
if (fn(fd, open_flags) < 0)
|
||||
if (fn(fd, open_flags) < 0) {
|
||||
return -1;
|
||||
}
|
||||
close(fd);
|
||||
ret = unlink(file_path);
|
||||
if (ret < 0) {
|
||||
|
@ -177,12 +177,15 @@ typedef int(*test_file_func_t)(const char *);
|
||||
static int test_file_framework(test_file_func_t fn) {
|
||||
const char *file_path = "/root/test_filesystem_file_read_write.txt";
|
||||
|
||||
if (create_file(file_path) < 0)
|
||||
if (create_file(file_path) < 0) {
|
||||
return -1;
|
||||
if (fn(file_path) < 0)
|
||||
}
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -68,8 +68,7 @@ static int do_perm_tests(
|
||||
const char **files,
|
||||
size_t num_files,
|
||||
int flags, int do_write,
|
||||
int* expected_results)
|
||||
{
|
||||
int *expected_results) {
|
||||
flags |= O_CREAT | O_TRUNC;
|
||||
for (size_t i = 0; i < num_files; i++) {
|
||||
const char *filename = files[i];
|
||||
|
@ -5,8 +5,7 @@
|
||||
int main(int argc, const char *argv[]) {
|
||||
if (argc <= 1) {
|
||||
printf("Hello World!\n");
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
const char *echo_msg = argv[1];
|
||||
printf("%s\n", echo_msg);
|
||||
}
|
||||
|
@ -90,12 +90,15 @@ typedef int(*test_hostfs_func_t)(const char *);
|
||||
static int test_hostfs_framework(test_hostfs_func_t fn) {
|
||||
const char *file_path = "/host/hostfs_test.txt";
|
||||
|
||||
if (create_file(file_path) < 0)
|
||||
if (create_file(file_path) < 0) {
|
||||
return -1;
|
||||
if (fn(file_path) < 0)
|
||||
}
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -83,8 +83,7 @@ static int do_SGXIOC_GET_EPID_GROUP_ID(int sgx_fd) {
|
||||
int ret = ioctl(sgx_fd, SGXIOC_GET_EPID_GROUP_ID, &epid_group_id);
|
||||
if (ret == 0) {
|
||||
break;
|
||||
}
|
||||
else if (errno != EBUSY) {
|
||||
} else if (errno != EBUSY) {
|
||||
THROW_ERROR("failed to ioctl /dev/sgx");
|
||||
}
|
||||
|
||||
@ -115,8 +114,7 @@ static int do_SGXIOC_GEN_QUOTE(int sgx_fd) {
|
||||
int ret = ioctl(sgx_fd, SGXIOC_GEN_QUOTE, &gen_quote_arg);
|
||||
if (ret == 0) {
|
||||
break;
|
||||
}
|
||||
else if (errno != EBUSY) {
|
||||
} else if (errno != EBUSY) {
|
||||
THROW_ERROR("failed to ioctl /dev/sgx");
|
||||
}
|
||||
|
||||
@ -135,7 +133,8 @@ static int do_SGXIOC_GEN_QUOTE(int sgx_fd) {
|
||||
if (quote->signature_len == 0) {
|
||||
THROW_ERROR("invalid quote: zero-length signature");
|
||||
}
|
||||
if (memcmp(&gen_quote_arg.report_data, "e->report_body.report_data, sizeof(sgx_report_data_t)) != 0) {
|
||||
if (memcmp(&gen_quote_arg.report_data, "e->report_body.report_data,
|
||||
sizeof(sgx_report_data_t)) != 0) {
|
||||
THROW_ERROR("invalid quote: wrong report data");
|
||||
}
|
||||
return 0;
|
||||
|
@ -129,8 +129,7 @@ int test_anonymous_mmap_randomly() {
|
||||
// Phrase 1: do mmap with random sizes until no more buffers or memory
|
||||
for (num_bufs = 0;
|
||||
num_bufs < ARRAY_SIZE(bufs) && used_memory < MAX_MMAP_USED_MEMORY;
|
||||
num_bufs++)
|
||||
{
|
||||
num_bufs++) {
|
||||
// Choose the mmap size randomly
|
||||
size_t len = rand() % (MAX_MMAP_USED_MEMORY - used_memory) + 1;
|
||||
len = ALIGN_UP(len, PAGE_SIZE);
|
||||
@ -324,7 +323,8 @@ int test_file_mmap_with_offset() {
|
||||
THROW_ERROR("the buffer is not initialized according to the file");
|
||||
}
|
||||
buf_cursor += second_len;
|
||||
if (check_bytes_in_buf(buf_cursor, ALIGN_UP(len, PAGE_SIZE) - (buf_cursor - buf), 0) < 0) {
|
||||
if (check_bytes_in_buf(buf_cursor, ALIGN_UP(len, PAGE_SIZE) - (buf_cursor - buf),
|
||||
0) < 0) {
|
||||
THROW_ERROR("the remaining of the last page occupied by the buffer is not initialized to zeros");
|
||||
}
|
||||
|
||||
@ -464,7 +464,7 @@ int test_fixed_mmap_with_non_page_aligned_addr() {
|
||||
|
||||
static int check_buf_is_munmapped(void *target_addr, size_t len) {
|
||||
// The trivial case of zero-len meory region is considered as unmapped
|
||||
if (len == 0) return 0;
|
||||
if (len == 0) { return 0; }
|
||||
|
||||
// If the target_addr is not already mmaped, it should succeed to use it as
|
||||
// a hint for mmap.
|
||||
|
@ -77,10 +77,12 @@ static int test_open_framework(test_open_func_t fn) {
|
||||
int flags = O_RDONLY | O_CREAT | O_TRUNC;
|
||||
int mode = 00666;
|
||||
|
||||
if (fn(file_path, flags, mode) < 0)
|
||||
if (fn(file_path, flags, mode) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -21,11 +21,13 @@
|
||||
int connect_with_child(int port, int *child_pid) {
|
||||
int ret = 0;
|
||||
int listen_fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (listen_fd < 0)
|
||||
if (listen_fd < 0) {
|
||||
THROW_ERROR("create socket error");
|
||||
}
|
||||
int reuse = 1;
|
||||
if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0)
|
||||
if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) {
|
||||
THROW_ERROR("setsockopt port to reuse failed");
|
||||
}
|
||||
|
||||
struct sockaddr_in servaddr;
|
||||
memset(&servaddr, 0, sizeof(servaddr));
|
||||
@ -65,11 +67,13 @@ int connect_with_child(int port, int *child_pid) {
|
||||
|
||||
int neogotiate_msg(int client_fd) {
|
||||
char buf[16];
|
||||
if (write(client_fd, ECHO_MSG, strlen(ECHO_MSG)) < 0)
|
||||
if (write(client_fd, ECHO_MSG, strlen(ECHO_MSG)) < 0) {
|
||||
THROW_ERROR("write failed");
|
||||
}
|
||||
|
||||
if (read(client_fd, buf, sizeof(RESPONSE)) < 0)
|
||||
if (read(client_fd, buf, sizeof(RESPONSE)) < 0) {
|
||||
THROW_ERROR("read failed");
|
||||
}
|
||||
|
||||
if (strncmp(buf, RESPONSE, sizeof(RESPONSE)) != 0) {
|
||||
THROW_ERROR("msg recv mismatch");
|
||||
@ -81,8 +85,9 @@ int server_recv(int client_fd) {
|
||||
const int buf_size = 32;
|
||||
char buf[buf_size];
|
||||
|
||||
if (recv(client_fd, buf, buf_size, 0) <= 0)
|
||||
if (recv(client_fd, buf, buf_size, 0) <= 0) {
|
||||
THROW_ERROR("msg recv failed");
|
||||
}
|
||||
|
||||
if (strncmp(buf, ECHO_MSG, strlen(ECHO_MSG)) != 0) {
|
||||
THROW_ERROR("msg recv mismatch");
|
||||
@ -125,8 +130,9 @@ int server_recvmsg(int client_fd) {
|
||||
msg.msg_iov = NULL;
|
||||
msg.msg_iovlen = 0;
|
||||
ret = recvmsg(client_fd, &msg, 0);
|
||||
if (ret != 0)
|
||||
if (ret != 0) {
|
||||
THROW_ERROR("recvmsg empty failed");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -143,8 +149,9 @@ int server_connectionless_recvmsg() {
|
||||
memset(&clientaddr, 0, sizeof(clientaddr));
|
||||
|
||||
int sock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (sock < 0)
|
||||
if (sock < 0) {
|
||||
THROW_ERROR("create socket error");
|
||||
}
|
||||
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
@ -196,10 +203,11 @@ int test_read_write() {
|
||||
int ret = 0;
|
||||
int child_pid = 0;
|
||||
int client_fd = connect_with_child(8800, &child_pid);
|
||||
if (client_fd < 0)
|
||||
if (client_fd < 0) {
|
||||
THROW_ERROR("connect failed");
|
||||
else
|
||||
} else {
|
||||
ret = neogotiate_msg(client_fd);
|
||||
}
|
||||
|
||||
//wait for the child to exit for next spawn
|
||||
int status = 0;
|
||||
@ -214,14 +222,16 @@ int test_send_recv() {
|
||||
int ret = 0;
|
||||
int child_pid = 0;
|
||||
int client_fd = connect_with_child(8801, &child_pid);
|
||||
if (client_fd < 0)
|
||||
if (client_fd < 0) {
|
||||
THROW_ERROR("connect failed");
|
||||
}
|
||||
|
||||
if (neogotiate_msg(client_fd) < 0)
|
||||
if (neogotiate_msg(client_fd) < 0) {
|
||||
THROW_ERROR("neogotiate failed");
|
||||
}
|
||||
|
||||
ret = server_recv(client_fd);
|
||||
if (ret < 0) return -1;
|
||||
if (ret < 0) { return -1; }
|
||||
|
||||
ret = wait_for_child_exit(child_pid);
|
||||
|
||||
@ -232,14 +242,16 @@ int test_sendmsg_recvmsg() {
|
||||
int ret = 0;
|
||||
int child_pid = 0;
|
||||
int client_fd = connect_with_child(8802, &child_pid);
|
||||
if (client_fd < 0)
|
||||
if (client_fd < 0) {
|
||||
THROW_ERROR("connect failed");
|
||||
}
|
||||
|
||||
if (neogotiate_msg(client_fd) < 0)
|
||||
if (neogotiate_msg(client_fd) < 0) {
|
||||
THROW_ERROR("neogotiate failed");
|
||||
}
|
||||
|
||||
ret = server_recvmsg(client_fd);
|
||||
if (ret < 0) return -1;
|
||||
if (ret < 0) { return -1; }
|
||||
|
||||
ret = wait_for_child_exit(child_pid);
|
||||
|
||||
@ -257,7 +269,7 @@ int test_sendmsg_recvmsg_connectionless() {
|
||||
}
|
||||
|
||||
ret = server_connectionless_recvmsg();
|
||||
if (ret < 0) return -1;
|
||||
if (ret < 0) { return -1; }
|
||||
|
||||
ret = wait_for_child_exit(child_pid);
|
||||
|
||||
@ -271,19 +283,23 @@ int test_fcntl_setfl_and_getfl() {
|
||||
int original_flags, actual_flags;
|
||||
|
||||
client_fd = connect_with_child(8804, &child_pid);
|
||||
if (client_fd < 0)
|
||||
if (client_fd < 0) {
|
||||
THROW_ERROR("connect failed");
|
||||
}
|
||||
original_flags = fcntl(client_fd, F_GETFL, 0);
|
||||
if (original_flags < 0)
|
||||
if (original_flags < 0) {
|
||||
THROW_ERROR("fcntl getfl failed");
|
||||
}
|
||||
|
||||
ret = fcntl(client_fd, F_SETFL, original_flags | O_NONBLOCK);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
THROW_ERROR("fcntl setfl failed");
|
||||
}
|
||||
|
||||
actual_flags = fcntl(client_fd, F_GETFL, 0);
|
||||
if (actual_flags != (original_flags | O_NONBLOCK))
|
||||
if (actual_flags != (original_flags | O_NONBLOCK)) {
|
||||
THROW_ERROR("check the getfl value after setfl failed");
|
||||
}
|
||||
|
||||
ret = wait_for_child_exit(child_pid);
|
||||
|
||||
@ -300,14 +316,16 @@ int test_poll_sockets() {
|
||||
};
|
||||
|
||||
ret = poll(pollfds, 2, 0);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
THROW_ERROR("poll error");
|
||||
}
|
||||
|
||||
if (pollfds[0].fd != socks[0] ||
|
||||
pollfds[0].events != POLLIN ||
|
||||
pollfds[1].fd != socks[1] ||
|
||||
pollfds[1].events != POLLIN)
|
||||
pollfds[1].events != POLLIN) {
|
||||
THROW_ERROR("fd and events of pollfd should remain unchanged");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -30,8 +30,9 @@ static int create_and_bind() {
|
||||
servaddr.sin_port = htons(6667);
|
||||
|
||||
int reuse = 1;
|
||||
if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0)
|
||||
if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) {
|
||||
THROW_ERROR("setsockopt port to reuse failed");
|
||||
}
|
||||
|
||||
int ret = bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
|
||||
if (ret < 0) {
|
||||
|
@ -104,8 +104,9 @@ static void handle_sigio(int num, siginfo_t* info, void* context) {
|
||||
printf("Hello from SIGIO signal handler (recursion_level = %d)!\n", recursion_level);
|
||||
|
||||
recursion_level++;
|
||||
if (recursion_level <= MAX_RECURSION_LEVEL)
|
||||
if (recursion_level <= MAX_RECURSION_LEVEL) {
|
||||
raise(SIGIO);
|
||||
}
|
||||
recursion_level--;
|
||||
}
|
||||
|
||||
@ -279,8 +280,9 @@ static void handle_sigpipe(int num, siginfo_t* info, void* context) {
|
||||
g_old_ss = old_ss;
|
||||
|
||||
recursion_level++;
|
||||
if (recursion_level <= MAX_ALTSTACK_RECURSION_LEVEL)
|
||||
if (recursion_level <= MAX_ALTSTACK_RECURSION_LEVEL) {
|
||||
raise(SIGPIPE);
|
||||
}
|
||||
recursion_level--;
|
||||
}
|
||||
|
||||
@ -348,7 +350,7 @@ int test_sigchld() {
|
||||
printf("Spawn a new proces successfully (pid = %d)\n", child_pid);
|
||||
|
||||
wait(NULL);
|
||||
if (sigchld == 0) THROW_ERROR("Did not receive SIGCHLD");
|
||||
if (sigchld == 0) { THROW_ERROR("Did not receive SIGCHLD"); }
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -372,11 +374,9 @@ int main(int argc, const char* argv[]) {
|
||||
const char *cmd = argv[1];
|
||||
if (strcmp(cmd, "aborted_child") == 0) {
|
||||
return aborted_child();
|
||||
}
|
||||
else if (strcmp(cmd, "killed_child") == 0) {
|
||||
} else if (strcmp(cmd, "killed_child") == 0) {
|
||||
return killed_child();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
fprintf(stderr, "ERROR: unknown command: %s\n", cmd);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
@ -23,8 +23,7 @@ static inline void validate_timespec(const struct timespec* tv) {
|
||||
|
||||
|
||||
// retval = (a < b) ? -1 : ((a > b) ? 1 : 0)
|
||||
static int timespec_cmp(const struct timespec *a, const struct timespec *b)
|
||||
{
|
||||
static int timespec_cmp(const struct timespec *a, const struct timespec *b) {
|
||||
validate_timespec(a);
|
||||
validate_timespec(b);
|
||||
|
||||
@ -40,16 +39,17 @@ static int timespec_cmp(const struct timespec *a, const struct timespec *b)
|
||||
|
||||
// diff = | a - b |
|
||||
static void timespec_diff(const struct timespec *a, const struct timespec *b,
|
||||
struct timespec *diff)
|
||||
{
|
||||
struct timespec *diff) {
|
||||
validate_timespec(a);
|
||||
validate_timespec(b);
|
||||
|
||||
const struct timespec *begin, *end;
|
||||
if (timespec_cmp(a, b) <= 0) {
|
||||
begin = a; end = b;
|
||||
begin = a;
|
||||
end = b;
|
||||
} else {
|
||||
begin = b; end = a;
|
||||
begin = b;
|
||||
end = a;
|
||||
}
|
||||
|
||||
diff->tv_nsec = end->tv_nsec - begin->tv_nsec;
|
||||
@ -64,8 +64,7 @@ static void timespec_diff(const struct timespec *a, const struct timespec *b,
|
||||
|
||||
// retval = | a - b | <= precision
|
||||
static int timespec_equal(const struct timespec *a, const struct timespec *b,
|
||||
const struct timespec *precision)
|
||||
{
|
||||
const struct timespec *precision) {
|
||||
struct timespec diff;
|
||||
timespec_diff(a, b, &diff);
|
||||
return timespec_cmp(&diff, precision) <= 0;
|
||||
|
@ -145,12 +145,15 @@ typedef int(*test_stat_func_t)(const char *);
|
||||
static int test_stat_framework(test_stat_func_t fn) {
|
||||
const char *file_path = "/root/test_filesystem_stat.txt";
|
||||
|
||||
if (create_file(file_path) < 0)
|
||||
if (create_file(file_path) < 0) {
|
||||
return -1;
|
||||
if (fn(file_path) < 0)
|
||||
}
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -115,12 +115,15 @@ typedef int(*test_readlink_func_t)(const char *);
|
||||
static int test_readlink_framework(test_readlink_func_t fn) {
|
||||
const char *file_path = "/root/test_filesystem_symlink.txt";
|
||||
|
||||
if (create_file(file_path) < 0)
|
||||
if (create_file(file_path) < 0) {
|
||||
return -1;
|
||||
if (fn(file_path) < 0)
|
||||
}
|
||||
if (fn(file_path) < 0) {
|
||||
return -1;
|
||||
if (remove_file(file_path) < 0)
|
||||
}
|
||||
if (remove_file(file_path) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -156,8 +156,9 @@ typedef int(*create_connection_func_t)(int *);
|
||||
int test_connected_sockets_inter_process(create_connection_func_t fn) {
|
||||
int ret = 0;
|
||||
int sockets[2];
|
||||
if (fn(sockets) < 0)
|
||||
if (fn(sockets) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = verify_child_echo(sockets);
|
||||
|
||||
|
@ -113,23 +113,24 @@ static sgx_errlist_t sgx_errlist[] = {
|
||||
};
|
||||
|
||||
/* Check error conditions for loading enclave */
|
||||
static void print_error_message(sgx_status_t ret)
|
||||
{
|
||||
static void print_error_message(sgx_status_t ret) {
|
||||
size_t idx = 0;
|
||||
size_t ttl = sizeof sgx_errlist / sizeof sgx_errlist[0];
|
||||
|
||||
for (idx = 0; idx < ttl; idx++) {
|
||||
if (ret == sgx_errlist[idx].err) {
|
||||
if(NULL != sgx_errlist[idx].sug)
|
||||
if (NULL != sgx_errlist[idx].sug) {
|
||||
printf("Info: %s\n", sgx_errlist[idx].sug);
|
||||
}
|
||||
printf("Error: %s\n", sgx_errlist[idx].msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (idx == ttl)
|
||||
if (idx == ttl) {
|
||||
printf("Error: Unexpected error occurred.\n");
|
||||
}
|
||||
}
|
||||
|
||||
static const char *get_enclave_absolute_path() {
|
||||
static char enclave_path[MAX_PATH] = {0};
|
||||
@ -148,8 +149,7 @@ static const char* get_enclave_absolute_path() {
|
||||
* Step 2: call sgx_create_enclave to initialize an enclave instance
|
||||
* Step 3: save the launch token if it is updated
|
||||
*/
|
||||
static int initialize_enclave(void)
|
||||
{
|
||||
static int initialize_enclave(void) {
|
||||
char token_path[MAX_PATH] = {'\0'};
|
||||
sgx_launch_token_t token = {0};
|
||||
sgx_status_t ret = SGX_ERROR_UNEXPECTED;
|
||||
@ -190,26 +190,28 @@ static int initialize_enclave(void)
|
||||
/* Step 2: call sgx_create_enclave to initialize an enclave instance */
|
||||
/* Debug Support: set 2nd parameter to 1 */
|
||||
const char *enclave_path = get_enclave_absolute_path();
|
||||
ret = sgx_create_enclave(enclave_path, SGX_DEBUG_FLAG, &token, &updated, &global_eid, NULL);
|
||||
ret = sgx_create_enclave(enclave_path, SGX_DEBUG_FLAG, &token, &updated, &global_eid,
|
||||
NULL);
|
||||
if (ret != SGX_SUCCESS) {
|
||||
print_error_message(ret);
|
||||
if (fp != NULL) fclose(fp);
|
||||
if (fp != NULL) { fclose(fp); }
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Step 3: save the launch token if it is updated */
|
||||
if (updated == 0 || fp == NULL) {
|
||||
/* if the token is not updated, or file handler is invalid, do not perform saving */
|
||||
if (fp != NULL) fclose(fp);
|
||||
if (fp != NULL) { fclose(fp); }
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* reopen the file with write capablity */
|
||||
fp = freopen(token_path, "wb", fp);
|
||||
if (fp == NULL) return 0;
|
||||
if (fp == NULL) { return 0; }
|
||||
size_t write_num = fwrite(token, 1, sizeof(sgx_launch_token_t), fp);
|
||||
if (write_num != sizeof(sgx_launch_token_t))
|
||||
if (write_num != sizeof(sgx_launch_token_t)) {
|
||||
printf("Warning: Failed to save launch token to \"%s\".\n", token_path);
|
||||
}
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
@ -267,20 +269,16 @@ static int parse_args(
|
||||
char *argv[],
|
||||
/* outputs */
|
||||
int *arg_command,
|
||||
char** arg_file_path)
|
||||
{
|
||||
if (argc != 3) return -1;
|
||||
char **arg_file_path) {
|
||||
if (argc != 3) { return -1; }
|
||||
|
||||
if (strcmp(argv[1], "protect") == 0) {
|
||||
*arg_command = CMD_PROTECT;
|
||||
}
|
||||
else if (strcmp(argv[1], "show") == 0) {
|
||||
} else if (strcmp(argv[1], "show") == 0) {
|
||||
*arg_command = CMD_SHOW;
|
||||
}
|
||||
else if (strcmp(argv[1], "show-mac") == 0) {
|
||||
} else if (strcmp(argv[1], "show-mac") == 0) {
|
||||
*arg_command = CMD_SHOW_MAC;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ static int eprintf(const char* fmt, ...) {
|
||||
static void print_mac(sgx_aes_gcm_128bit_tag_t *mac) {
|
||||
unsigned char *bytes = (unsigned char *) mac;
|
||||
for (size_t bi = 0; bi < sizeof(*mac); bi++) {
|
||||
if (bi != 0) printf("-");
|
||||
if (bi != 0) { printf("-"); }
|
||||
printf("%02x", bytes[bi] & 0xFF);
|
||||
}
|
||||
printf("\n");
|
||||
|
Loading…
Reference in New Issue
Block a user