Loading Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ LIB_OBJS = \ $(OUT_DIR)/kinetic_allocator.o \ $(OUT_DIR)/kinetic_nbo.o \ $(OUT_DIR)/kinetic_operation.o \ $(OUT_DIR)/kinetic_callbacks.o \ $(OUT_DIR)/kinetic_builder.o \ $(OUT_DIR)/kinetic_request.o \ $(OUT_DIR)/kinetic_response.o \ $(OUT_DIR)/kinetic_bus.o \ Loading src/lib/acl_types.h +1 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,6 @@ typedef enum { ACL_ERROR_BAD_JSON = -4, ACL_ERROR_MISSING_FIELD = -5, ACL_ERROR_INVALID_FIELD = -6, } acl_of_file_res; } KineticACLLoadResult; #endif src/lib/acl.c→src/lib/kinetic_acl.c +14 −14 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ #include <errno.h> #include "kinetic_logger.h" #include "acl.h" #include "kinetic_acl.h" #include "json.h" typedef struct { Loading @@ -45,10 +45,10 @@ static permission_pair permission_table[] = { #define PERM_TABLE_ROWS sizeof(permission_table)/sizeof(permission_table)[0] static acl_of_file_res read_next_ACL(const char *buf, size_t buf_size, static KineticACLLoadResult read_next_ACL(const char *buf, size_t buf_size, size_t offset, size_t *new_offset, struct json_tokener *tokener, KineticProto_Command_Security_ACL **instance); static acl_of_file_res unpack_scopes(KineticProto_Command_Security_ACL *acl, static KineticACLLoadResult unpack_scopes(KineticProto_Command_Security_ACL *acl, int scope_count, json_object *scopes); static const char *str_of_permission(KineticProto_Command_Security_ACL_Permission perm) { Loading @@ -67,8 +67,8 @@ static KineticProto_Command_Security_ACL_Permission permission_of_str(const char return KINETIC_PROTO_COMMAND_SECURITY_ACL_PERMISSION_INVALID_PERMISSION; } acl_of_file_res acl_of_file(const char *path, struct ACL **instance) { KineticACLLoadResult KineticACL_LoadFromFile(const char *path, struct ACL **instance) { if (path == NULL || instance == NULL) { return ACL_ERROR_NULL; } Loading @@ -81,7 +81,7 @@ acl_of_file(const char *path, struct ACL **instance) { errno = 0; return ACL_ERROR_BAD_JSON; } acl_of_file_res res = ACL_ERROR_NULL; KineticACLLoadResult res = ACL_ERROR_NULL; const int BUF_START_SIZE = 256; char *buf = calloc(1, BUF_START_SIZE); Loading Loading @@ -123,9 +123,9 @@ cleanup: return res; } acl_of_file_res KineticACLLoadResult acl_of_string(const char *buf, size_t buf_size, struct ACL **instance) { acl_of_file_res res = ACL_ERROR_MEMORY; KineticACLLoadResult res = ACL_ERROR_MEMORY; struct ACL *acl_group = NULL; KineticProto_Command_Security_ACL **acl_array = NULL; struct json_tokener* tokener = NULL; Loading Loading @@ -191,7 +191,7 @@ cleanup: } } static acl_of_file_res read_next_ACL(const char *buf, size_t buf_size, static KineticACLLoadResult read_next_ACL(const char *buf, size_t buf_size, size_t offset, size_t *new_offset, struct json_tokener *tokener, KineticProto_Command_Security_ACL **instance) { struct json_object *obj = json_tokener_parse_ex(tokener, Loading @@ -207,7 +207,7 @@ static acl_of_file_res read_next_ACL(const char *buf, size_t buf_size, *new_offset = tokener->char_offset; acl_of_file_res res = ACL_ERROR_MEMORY; KineticACLLoadResult res = ACL_ERROR_MEMORY; KineticProto_Command_Security_ACL *acl = NULL; uint8_t *data = NULL; Loading Loading @@ -278,9 +278,9 @@ cleanup: return res; } static acl_of_file_res unpack_scopes(KineticProto_Command_Security_ACL *acl, static KineticACLLoadResult unpack_scopes(KineticProto_Command_Security_ACL *acl, int scope_count, json_object *scopes) { acl_of_file_res res = ACL_ERROR_MEMORY; KineticACLLoadResult res = ACL_ERROR_MEMORY; KineticProto_Command_Security_ACL_Scope **scope_array = NULL; KineticProto_Command_Security_ACL_Permission *perm_array = NULL; KineticProto_Command_Security_ACL_Scope *scope = NULL; Loading Loading @@ -379,7 +379,7 @@ cleanup: return res; } void acl_fprintf(FILE *f, struct ACL *ACLs) { void KineticACL_Print(FILE *f, struct ACL *ACLs) { if (ACLs == NULL) { fprintf(f, "NULL\n"); return; Loading Loading @@ -426,7 +426,7 @@ void acl_fprintf(FILE *f, struct ACL *ACLs) { } } void acl_free(struct ACL *ACLs) { void KineticACL_Free(struct ACL *ACLs) { if (ACLs) { for (size_t ai = 0; ai < ACLs->ACL_count; ai++) { KineticProto_Command_Security_ACL *acl = ACLs->ACLs[ai]; Loading src/lib/acl.h→src/lib/kinetic_acl.h +9 −9 Original line number Diff line number Diff line Loading @@ -17,24 +17,24 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef ACL_H #define ACL_H #ifndef KINETIC_ACL_H #define KINETIC_ACL_H #include "acl_types.h" #include "kinetic_proto.h" /* Attempt to instantiate an ACL structure based on the JSON data * contained in PATH. */ acl_of_file_res acl_of_file(const char *path, struct ACL **instance); KineticACLLoadResult KineticACL_LoadFromFile(const char *path, struct ACL **instance); acl_of_file_res KineticACLLoadResult acl_of_string(const char *buf, size_t buf_size, struct ACL **instance); /* fprintf an ACL struct. */ void acl_fprintf(FILE *f, struct ACL *acl); /* Print an ACL struct to the specified file. */ void KineticACL_Print(FILE *f, struct ACL *acl); /* Free an ACL struct */ void acl_free(struct ACL *acl); void KineticACL_Free(struct ACL *acl); #endif #endif // KINETIC_ACL_H src/lib/kinetic_admin_client.c +13 −12 Original line number Diff line number Diff line Loading @@ -22,10 +22,11 @@ #include "kinetic_types_internal.h" #include "kinetic_controller.h" #include "kinetic_operation.h" #include "kinetic_builder.h" #include "kinetic_allocator.h" #include "kinetic_auth.h" #include "kinetic_device_info.h" #include "acl.h" #include "kinetic_acl.h" #ifdef TEST struct ACL *ACLs = NULL; Loading Loading @@ -69,7 +70,7 @@ KineticStatus KineticAdminClient_SetErasePin(KineticSession const * const sessio KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetPin(operation, old_pin, new_pin, false); KineticBuilder_BuildSetPin(operation, old_pin, new_pin, false); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -91,7 +92,7 @@ KineticStatus KineticAdminClient_SecureErase(KineticSession const * const sessio KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildErase(operation, true, &pin); KineticBuilder_BuildErase(operation, true, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -113,7 +114,7 @@ KineticStatus KineticAdminClient_InstantErase(KineticSession const * const sessi KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildErase(operation, false, &pin); KineticBuilder_BuildErase(operation, false, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -134,7 +135,7 @@ KineticStatus KineticAdminClient_SetLockPin(KineticSession const * const session KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetPin(operation, old_pin, new_pin, true); KineticBuilder_BuildSetPin(operation, old_pin, new_pin, true); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -156,7 +157,7 @@ KineticStatus KineticAdminClient_LockDevice(KineticSession const * const session KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildLockUnlock(operation, true, &pin); KineticBuilder_BuildLockUnlock(operation, true, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -178,7 +179,7 @@ KineticStatus KineticAdminClient_UnlockDevice(KineticSession const * const sessi KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildLockUnlock(operation, false, &pin); KineticBuilder_BuildLockUnlock(operation, false, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -195,7 +196,7 @@ KineticStatus KineticAdminClient_GetLog(KineticSession const * const session, if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} // Initialize request KineticOperation_BuildGetLog(operation, type, info); KineticBuilder_BuildGetLog(operation, type, info); // Execute the operation return KineticController_ExecuteOperation(operation, closure); Loading @@ -221,7 +222,7 @@ KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetClusterVersion(operation, version); KineticBuilder_BuildSetClusterVersion(operation, version); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -236,7 +237,7 @@ KineticStatus KineticAdminClient_SetACL(KineticSession const * const session, #ifndef TEST struct ACL *ACLs = NULL; #endif acl_of_file_res acl_res = acl_of_file(ACLPath, &ACLs); KineticACLLoadResult acl_res = KineticACL_LoadFromFile(ACLPath, &ACLs); if (acl_res != ACL_OK) { return KINETIC_STATUS_ACL_ERROR; } Loading @@ -248,7 +249,7 @@ KineticStatus KineticAdminClient_SetACL(KineticSession const * const session, } // Initialize request KineticOperation_BuildSetACL(operation, ACLs); KineticBuilder_BuildSetACL(operation, ACLs); KineticStatus status = KineticController_ExecuteOperation(operation, NULL); // FIXME: confirm ACLs are freed Loading @@ -265,7 +266,7 @@ KineticStatus KineticAdminClient_UpdateFirmware(KineticSession const * const ses KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticStatus status = KineticOperation_BuildUpdateFirmware(operation, fw_path); KineticStatus status = KineticBuilder_BuildUpdateFirmware(operation, fw_path); if (status != KINETIC_STATUS_SUCCESS) { return status; } Loading Loading
Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ LIB_OBJS = \ $(OUT_DIR)/kinetic_allocator.o \ $(OUT_DIR)/kinetic_nbo.o \ $(OUT_DIR)/kinetic_operation.o \ $(OUT_DIR)/kinetic_callbacks.o \ $(OUT_DIR)/kinetic_builder.o \ $(OUT_DIR)/kinetic_request.o \ $(OUT_DIR)/kinetic_response.o \ $(OUT_DIR)/kinetic_bus.o \ Loading
src/lib/acl_types.h +1 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,6 @@ typedef enum { ACL_ERROR_BAD_JSON = -4, ACL_ERROR_MISSING_FIELD = -5, ACL_ERROR_INVALID_FIELD = -6, } acl_of_file_res; } KineticACLLoadResult; #endif
src/lib/acl.c→src/lib/kinetic_acl.c +14 −14 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ #include <errno.h> #include "kinetic_logger.h" #include "acl.h" #include "kinetic_acl.h" #include "json.h" typedef struct { Loading @@ -45,10 +45,10 @@ static permission_pair permission_table[] = { #define PERM_TABLE_ROWS sizeof(permission_table)/sizeof(permission_table)[0] static acl_of_file_res read_next_ACL(const char *buf, size_t buf_size, static KineticACLLoadResult read_next_ACL(const char *buf, size_t buf_size, size_t offset, size_t *new_offset, struct json_tokener *tokener, KineticProto_Command_Security_ACL **instance); static acl_of_file_res unpack_scopes(KineticProto_Command_Security_ACL *acl, static KineticACLLoadResult unpack_scopes(KineticProto_Command_Security_ACL *acl, int scope_count, json_object *scopes); static const char *str_of_permission(KineticProto_Command_Security_ACL_Permission perm) { Loading @@ -67,8 +67,8 @@ static KineticProto_Command_Security_ACL_Permission permission_of_str(const char return KINETIC_PROTO_COMMAND_SECURITY_ACL_PERMISSION_INVALID_PERMISSION; } acl_of_file_res acl_of_file(const char *path, struct ACL **instance) { KineticACLLoadResult KineticACL_LoadFromFile(const char *path, struct ACL **instance) { if (path == NULL || instance == NULL) { return ACL_ERROR_NULL; } Loading @@ -81,7 +81,7 @@ acl_of_file(const char *path, struct ACL **instance) { errno = 0; return ACL_ERROR_BAD_JSON; } acl_of_file_res res = ACL_ERROR_NULL; KineticACLLoadResult res = ACL_ERROR_NULL; const int BUF_START_SIZE = 256; char *buf = calloc(1, BUF_START_SIZE); Loading Loading @@ -123,9 +123,9 @@ cleanup: return res; } acl_of_file_res KineticACLLoadResult acl_of_string(const char *buf, size_t buf_size, struct ACL **instance) { acl_of_file_res res = ACL_ERROR_MEMORY; KineticACLLoadResult res = ACL_ERROR_MEMORY; struct ACL *acl_group = NULL; KineticProto_Command_Security_ACL **acl_array = NULL; struct json_tokener* tokener = NULL; Loading Loading @@ -191,7 +191,7 @@ cleanup: } } static acl_of_file_res read_next_ACL(const char *buf, size_t buf_size, static KineticACLLoadResult read_next_ACL(const char *buf, size_t buf_size, size_t offset, size_t *new_offset, struct json_tokener *tokener, KineticProto_Command_Security_ACL **instance) { struct json_object *obj = json_tokener_parse_ex(tokener, Loading @@ -207,7 +207,7 @@ static acl_of_file_res read_next_ACL(const char *buf, size_t buf_size, *new_offset = tokener->char_offset; acl_of_file_res res = ACL_ERROR_MEMORY; KineticACLLoadResult res = ACL_ERROR_MEMORY; KineticProto_Command_Security_ACL *acl = NULL; uint8_t *data = NULL; Loading Loading @@ -278,9 +278,9 @@ cleanup: return res; } static acl_of_file_res unpack_scopes(KineticProto_Command_Security_ACL *acl, static KineticACLLoadResult unpack_scopes(KineticProto_Command_Security_ACL *acl, int scope_count, json_object *scopes) { acl_of_file_res res = ACL_ERROR_MEMORY; KineticACLLoadResult res = ACL_ERROR_MEMORY; KineticProto_Command_Security_ACL_Scope **scope_array = NULL; KineticProto_Command_Security_ACL_Permission *perm_array = NULL; KineticProto_Command_Security_ACL_Scope *scope = NULL; Loading Loading @@ -379,7 +379,7 @@ cleanup: return res; } void acl_fprintf(FILE *f, struct ACL *ACLs) { void KineticACL_Print(FILE *f, struct ACL *ACLs) { if (ACLs == NULL) { fprintf(f, "NULL\n"); return; Loading Loading @@ -426,7 +426,7 @@ void acl_fprintf(FILE *f, struct ACL *ACLs) { } } void acl_free(struct ACL *ACLs) { void KineticACL_Free(struct ACL *ACLs) { if (ACLs) { for (size_t ai = 0; ai < ACLs->ACL_count; ai++) { KineticProto_Command_Security_ACL *acl = ACLs->ACLs[ai]; Loading
src/lib/acl.h→src/lib/kinetic_acl.h +9 −9 Original line number Diff line number Diff line Loading @@ -17,24 +17,24 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef ACL_H #define ACL_H #ifndef KINETIC_ACL_H #define KINETIC_ACL_H #include "acl_types.h" #include "kinetic_proto.h" /* Attempt to instantiate an ACL structure based on the JSON data * contained in PATH. */ acl_of_file_res acl_of_file(const char *path, struct ACL **instance); KineticACLLoadResult KineticACL_LoadFromFile(const char *path, struct ACL **instance); acl_of_file_res KineticACLLoadResult acl_of_string(const char *buf, size_t buf_size, struct ACL **instance); /* fprintf an ACL struct. */ void acl_fprintf(FILE *f, struct ACL *acl); /* Print an ACL struct to the specified file. */ void KineticACL_Print(FILE *f, struct ACL *acl); /* Free an ACL struct */ void acl_free(struct ACL *acl); void KineticACL_Free(struct ACL *acl); #endif #endif // KINETIC_ACL_H
src/lib/kinetic_admin_client.c +13 −12 Original line number Diff line number Diff line Loading @@ -22,10 +22,11 @@ #include "kinetic_types_internal.h" #include "kinetic_controller.h" #include "kinetic_operation.h" #include "kinetic_builder.h" #include "kinetic_allocator.h" #include "kinetic_auth.h" #include "kinetic_device_info.h" #include "acl.h" #include "kinetic_acl.h" #ifdef TEST struct ACL *ACLs = NULL; Loading Loading @@ -69,7 +70,7 @@ KineticStatus KineticAdminClient_SetErasePin(KineticSession const * const sessio KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetPin(operation, old_pin, new_pin, false); KineticBuilder_BuildSetPin(operation, old_pin, new_pin, false); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -91,7 +92,7 @@ KineticStatus KineticAdminClient_SecureErase(KineticSession const * const sessio KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildErase(operation, true, &pin); KineticBuilder_BuildErase(operation, true, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -113,7 +114,7 @@ KineticStatus KineticAdminClient_InstantErase(KineticSession const * const sessi KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildErase(operation, false, &pin); KineticBuilder_BuildErase(operation, false, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -134,7 +135,7 @@ KineticStatus KineticAdminClient_SetLockPin(KineticSession const * const session KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetPin(operation, old_pin, new_pin, true); KineticBuilder_BuildSetPin(operation, old_pin, new_pin, true); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -156,7 +157,7 @@ KineticStatus KineticAdminClient_LockDevice(KineticSession const * const session KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildLockUnlock(operation, true, &pin); KineticBuilder_BuildLockUnlock(operation, true, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -178,7 +179,7 @@ KineticStatus KineticAdminClient_UnlockDevice(KineticSession const * const sessi KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildLockUnlock(operation, false, &pin); KineticBuilder_BuildLockUnlock(operation, false, &pin); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -195,7 +196,7 @@ KineticStatus KineticAdminClient_GetLog(KineticSession const * const session, if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} // Initialize request KineticOperation_BuildGetLog(operation, type, info); KineticBuilder_BuildGetLog(operation, type, info); // Execute the operation return KineticController_ExecuteOperation(operation, closure); Loading @@ -221,7 +222,7 @@ KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetClusterVersion(operation, version); KineticBuilder_BuildSetClusterVersion(operation, version); return KineticController_ExecuteOperation(operation, NULL); } Loading @@ -236,7 +237,7 @@ KineticStatus KineticAdminClient_SetACL(KineticSession const * const session, #ifndef TEST struct ACL *ACLs = NULL; #endif acl_of_file_res acl_res = acl_of_file(ACLPath, &ACLs); KineticACLLoadResult acl_res = KineticACL_LoadFromFile(ACLPath, &ACLs); if (acl_res != ACL_OK) { return KINETIC_STATUS_ACL_ERROR; } Loading @@ -248,7 +249,7 @@ KineticStatus KineticAdminClient_SetACL(KineticSession const * const session, } // Initialize request KineticOperation_BuildSetACL(operation, ACLs); KineticBuilder_BuildSetACL(operation, ACLs); KineticStatus status = KineticController_ExecuteOperation(operation, NULL); // FIXME: confirm ACLs are freed Loading @@ -265,7 +266,7 @@ KineticStatus KineticAdminClient_UpdateFirmware(KineticSession const * const ses KineticOperation* operation = KineticAllocator_NewOperation(session->connection); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticStatus status = KineticOperation_BuildUpdateFirmware(operation, fw_path); KineticStatus status = KineticBuilder_BuildUpdateFirmware(operation, fw_path); if (status != KINETIC_STATUS_SUCCESS) { return status; } Loading