You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesatee.apache.org by ms...@apache.org on 2019/11/21 23:55:29 UTC
[incubator-mesatee] branch master updated: Update mesapy to fix
FNS/MesaPy FFI issues (#69)
This is an automated email from the ASF dual-hosted git repository.
mssun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-mesatee.git
The following commit(s) were added to refs/heads/master by this push:
new d506014 Update mesapy to fix FNS/MesaPy FFI issues (#69)
d506014 is described below
commit d506014613dd67c8b0098409575a9d5dd6cd4726
Author: Mingshen Sun <bo...@mssun.me>
AuthorDate: Thu Nov 21 15:55:21 2019 -0800
Update mesapy to fix FNS/MesaPy FFI issues (#69)
* Update mesapy to fix FNS/MesaPy FFI issues
* Check buffer len before save file
* Fix style
---
CMakeLists.txt | 2 +-
examples/py_file/data/1.txt | 54 +++++++++++++++++++++-
examples/py_file/payload.py | 2 +-
mesatee_services/fns/sgx_trusted_lib/src/global.rs | 35 ++++++++++----
4 files changed, 80 insertions(+), 13 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d6a0af..ceaf0c7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,7 +12,7 @@ SET_STRVAR_FROM_ENV_OR(SGX_SDK "/opt/sgxsdk" "Path of SGX SDK")
SET_STRVAR_FROM_ENV_OR(SGX_MODE "HW" "Mode of SGX, HW or SW")
SET_STRVAR_FROM_ENV_OR(RUSTFLAGS "" "Rust flags")
SET_STRVAR_FROM_ENV_OR(MESATEE_CMAKE_DBG "" "set to turn on debug message for cmake")
-set(MESAPY_VERSION be21a3fa089832b27b817ef263b79a79ef3c8a6f CACHE STRING "mesapy version")
+set(MESAPY_VERSION 2b7ea38773d337d106c613a239661a60a4fa7528 CACHE STRING "mesapy version")
option(COV OFF "Turn on coverage or not")
# ======= VARIABLES FOR CMAKE -D{VAR}=VAL CONFIGURATION END =======
diff --git a/examples/py_file/data/1.txt b/examples/py_file/data/1.txt
index d383c56..a066467 100644
--- a/examples/py_file/data/1.txt
+++ b/examples/py_file/data/1.txt
@@ -1 +1,53 @@
-testdata
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
+incididunt ut labore et dolore magna aliqua. Lorem mollis aliquam ut porttitor
+leo a. Tristique risus nec feugiat in fermentum posuere urna. Facilisis leo vel
+fringilla est ullamcorper eget nulla. Purus in mollis nunc sed id semper risus.
+Arcu non odio euismod lacinia at quis risus sed vulputate. Non tellus orci ac
+auctor augue. Sed turpis tincidunt id aliquet. Nibh praesent tristique magna sit
+amet. Gravida dictum fusce ut placerat orci. Maecenas volutpat blandit aliquam
+etiam erat velit scelerisque. Leo vel orci porta non pulvinar neque. Ullamcorper
+sit amet risus nullam.
+
+Turpis egestas sed tempus urna et pharetra pharetra. Aliquet bibendum enim
+facilisis gravida. Ac turpis egestas integer eget aliquet. Et malesuada fames ac
+turpis egestas maecenas. Tempor orci eu lobortis elementum. Ultrices vitae
+auctor eu augue ut lectus arcu. In tellus integer feugiat scelerisque varius. Et
+pharetra pharetra massa massa ultricies mi quis hendrerit. Ornare arcu odio ut
+sem nulla pharetra diam sit amet. Hac habitasse platea dictumst vestibulum
+rhoncus. Porta lorem mollis aliquam ut porttitor leo a diam. Vel pretium lectus
+quam id. Sem fringilla ut morbi tincidunt augue interdum velit euismod in. Vel
+risus commodo viverra maecenas accumsan lacus vel facilisis. Sed arcu non odio
+euismod lacinia at quis risus sed. Quisque non tellus orci ac. Lacus luctus
+accumsan tortor posuere ac ut. Viverra maecenas accumsan lacus vel facilisis
+volutpat est velit. Quis commodo odio aenean sed adipiscing diam donec
+adipiscing. Phasellus egestas tellus rutrum tellus pellentesque eu tincidunt
+tortor aliquam.
+
+Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique
+senectus et. Sollicitudin tempor id eu nisl nunc mi. Dolor magna eget est lorem.
+Non tellus orci ac auctor augue mauris augue. Nibh venenatis cras sed felis eget
+velit. Feugiat pretium nibh ipsum consequat. Congue eu consequat ac felis donec
+et odio. Ultrices mi tempus imperdiet nulla malesuada pellentesque elit eget
+gravida. Vel facilisis volutpat est velit egestas. Euismod nisi porta lorem
+mollis aliquam ut porttitor leo a. Sollicitudin tempor id eu nisl nunc mi ipsum.
+
+Mi quis hendrerit dolor magna eget est lorem ipsum dolor. Viverra tellus in hac
+habitasse platea. Ultrices vitae auctor eu augue ut lectus. Malesuada fames ac
+turpis egestas sed tempus. Imperdiet proin fermentum leo vel orci porta non.
+Molestie at elementum eu facilisis. Maecenas volutpat blandit aliquam etiam.
+Quam lacus suspendisse faucibus interdum posuere. Suscipit adipiscing bibendum
+est ultricies integer. Interdum velit laoreet id donec.
+
+Venenatis a condimentum vitae sapien pellentesque habitant. Bibendum est
+ultricies integer quis auctor elit sed. Consectetur libero id faucibus nisl
+tincidunt eget nullam. Sit amet nisl purus in mollis nunc sed id. Ut venenatis
+tellus in metus vulputate. Vulputate eu scelerisque felis imperdiet proin
+fermentum leo vel. Tellus in metus vulputate eu scelerisque felis imperdiet
+proin. Aliquam sem fringilla ut morbi tincidunt augue interdum velit. Elit eget
+gravida cum sociis natoque penatibus et magnis dis. Neque ornare aenean euismod
+elementum nisi quis eleifend quam. Egestas sed sed risus pretium quam. Tristique
+risus nec feugiat in fermentum posuere urna. Ac turpis egestas integer eget
+aliquet nibh. In eu mi bibendum neque. Proin sed libero enim sed faucibus turpis
+in. In fermentum et sollicitudin ac orci phasellus egestas tellus rutrum. Neque
+laoreet suspendisse interdum consectetur libero id. Aliquam sem fringilla ut
+morbi tincidunt augue interdum. Massa id neque aliquam vestibulum morbi blandit.
diff --git a/examples/py_file/payload.py b/examples/py_file/payload.py
index 54a154a..18756f9 100644
--- a/examples/py_file/payload.py
+++ b/examples/py_file/payload.py
@@ -9,7 +9,7 @@ def save_file_for_task_creator(context_id, context_token):
def read_file(context_id, context_token, file_id):
content = mesatee.mesatee_read_file(context_id, context_token, file_id)
- if content == "testdata\n": return True
+ if content.startswith("Lorem ipsum dolor sit amet"): return True
else: return False
def save_file_for_all_participants(context_id, context_token):
diff --git a/mesatee_services/fns/sgx_trusted_lib/src/global.rs b/mesatee_services/fns/sgx_trusted_lib/src/global.rs
index 64f7607..53d9859 100644
--- a/mesatee_services/fns/sgx_trusted_lib/src/global.rs
+++ b/mesatee_services/fns/sgx_trusted_lib/src/global.rs
@@ -28,13 +28,17 @@ use std::prelude::v1::*;
use std::slice;
+const FFI_FILE_ERROR: c_int = -1;
+const FFI_BUFFER_NOT_ENOUGH_ERROR: c_int = -2;
+const UUID_SIZE: size_t = 36;
+
// C API of read_file for workers
//
// int c_read_file(char* context_id,
// char* context_token,
// char* file_id,
// char* out_buf,
-// size_t out_buf_size);
+// size_t* out_buf_size);
#[allow(unused)]
#[no_mangle]
extern "C" fn c_read_file(
@@ -42,11 +46,12 @@ extern "C" fn c_read_file(
context_token: *const c_char,
file_id: *const c_char,
out_buf: *mut u8,
- out_buf_size: size_t,
+ out_buf_size_p: *mut size_t,
) -> c_int {
let context_id = unsafe { CStr::from_ptr(context_id).to_string_lossy().into_owned() };
let context_token = unsafe { CStr::from_ptr(context_token).to_string_lossy().into_owned() };
let file_id = unsafe { CStr::from_ptr(file_id).to_string_lossy().into_owned() };
+ let out_buf_size = unsafe { *out_buf_size_p };
let out: &mut [u8] = unsafe { slice::from_raw_parts_mut(out_buf, out_buf_size) };
match read_file(&context_id, &context_token, &file_id) {
@@ -56,10 +61,11 @@ extern "C" fn c_read_file(
out[..content.len()].copy_from_slice(&content);
content_len as c_int
} else {
- out_buf_size as c_int - content_len as c_int
+ unsafe { *out_buf_size_p = content_len }
+ FFI_BUFFER_NOT_ENOUGH_ERROR
}
}
- Err(_) => 0,
+ Err(_) => FFI_FILE_ERROR,
}
}
@@ -81,6 +87,9 @@ extern "C" fn c_save_file_for_task_creator(
out_file_id_buf: *mut u8,
out_file_id_buf_size: size_t,
) -> c_int {
+ if out_file_id_buf_size < UUID_SIZE {
+ return FFI_BUFFER_NOT_ENOUGH_ERROR;
+ }
let context_id = unsafe { CStr::from_ptr(context_id).to_string_lossy().into_owned() };
let context_token = unsafe { CStr::from_ptr(context_token).to_string_lossy().into_owned() };
let in_buf: &[u8] = unsafe { slice::from_raw_parts(in_buf, in_buf_size) };
@@ -94,10 +103,10 @@ extern "C" fn c_save_file_for_task_creator(
out_file_id[..file_id_len].copy_from_slice(file_id.as_bytes());
file_id_len as c_int
} else {
- out_file_id_buf_size as c_int - file_id_len as c_int
+ FFI_BUFFER_NOT_ENOUGH_ERROR
}
}
- Err(_) => 0,
+ Err(_) => FFI_FILE_ERROR,
}
}
@@ -119,6 +128,9 @@ extern "C" fn c_save_file_for_all_participants(
out_file_id_buf: *mut u8,
out_file_id_buf_size: size_t,
) -> c_int {
+ if out_file_id_buf_size < UUID_SIZE {
+ return FFI_BUFFER_NOT_ENOUGH_ERROR;
+ }
let context_id = unsafe { CStr::from_ptr(context_id).to_string_lossy().into_owned() };
let context_token = unsafe { CStr::from_ptr(context_token).to_string_lossy().into_owned() };
let in_buf: &[u8] = unsafe { slice::from_raw_parts(in_buf, in_buf_size) };
@@ -132,10 +144,10 @@ extern "C" fn c_save_file_for_all_participants(
out_file_id[..file_id_len].copy_from_slice(file_id.as_bytes());
file_id_len as c_int
} else {
- out_file_id_buf_size as c_int - file_id_len as c_int
+ FFI_BUFFER_NOT_ENOUGH_ERROR
}
}
- Err(_) => 0,
+ Err(_) => FFI_FILE_ERROR,
}
}
@@ -159,6 +171,9 @@ extern "C" fn c_save_file_for_file_owner(
out_file_id_buf: *mut u8,
out_file_id_buf_size: size_t,
) -> c_int {
+ if out_file_id_buf_size < UUID_SIZE {
+ return FFI_BUFFER_NOT_ENOUGH_ERROR;
+ }
let context_id = unsafe { CStr::from_ptr(context_id).to_string_lossy().into_owned() };
let context_token = unsafe { CStr::from_ptr(context_token).to_string_lossy().into_owned() };
let in_buf: &[u8] = unsafe { slice::from_raw_parts(in_buf, in_buf_size) };
@@ -173,10 +188,10 @@ extern "C" fn c_save_file_for_file_owner(
out_file_id[..file_id_len].copy_from_slice(file_id.as_bytes());
file_id_len as c_int
} else {
- out_file_id_buf_size as c_int - file_id_len as c_int
+ FFI_BUFFER_NOT_ENOUGH_ERROR
}
}
- Err(_) => 0,
+ Err(_) => FFI_FILE_ERROR,
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@mesatee.apache.org
For additional commands, e-mail: commits-help@mesatee.apache.org