trusty: coverage: Add UUID helpers
Function to parse string was borrowed from Trusty. Bug: 171750250 Test: trusty_test_fuzzer Change-Id: I8430579f142db2c174874aff373bce6bb868de31
This commit is contained in:
parent
1d9764209f
commit
3c8a004a8d
4 changed files with 82 additions and 7 deletions
|
@ -21,12 +21,14 @@ cc_library {
|
|||
vendor_available: true,
|
||||
srcs: [
|
||||
"coverage.cpp",
|
||||
"uuid.cpp",
|
||||
],
|
||||
export_include_dirs: [
|
||||
"include",
|
||||
],
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"libext2_uuid",
|
||||
"liblog",
|
||||
"libdmabufheap",
|
||||
"libtrusty",
|
||||
|
|
|
@ -19,16 +19,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <trusty/coverage/uuid.h>
|
||||
|
||||
#define COVERAGE_CLIENT_PORT "com.android.trusty.coverage.client"
|
||||
|
||||
struct uuid {
|
||||
uint32_t time_low;
|
||||
uint16_t time_mid;
|
||||
uint16_t time_hi_and_version;
|
||||
uint8_t clock_seq_and_node[8];
|
||||
};
|
||||
|
||||
enum coverage_client_cmd {
|
||||
COVERAGE_CLIENT_CMD_RESP_BIT = 1U,
|
||||
COVERAGE_CLIENT_CMD_SHIFT = 1U,
|
||||
|
|
35
trusty/coverage/include/trusty/coverage/uuid.h
Normal file
35
trusty/coverage/include/trusty/coverage/uuid.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
struct uuid {
|
||||
uint32_t time_low;
|
||||
uint16_t time_mid;
|
||||
uint16_t time_hi_and_version;
|
||||
uint8_t clock_seq_and_node[8];
|
||||
};
|
||||
|
||||
/**
|
||||
* str_to_uuid() - Converts a C string into a uuid
|
||||
* @str: C-string representation of the uuid
|
||||
* @uuid: &struct uuid to fill with the converted uuid
|
||||
*
|
||||
* Return: true on success, false otherwise
|
||||
*/
|
||||
bool str_to_uuid(const char* str, struct uuid* uuid);
|
44
trusty/coverage/uuid.cpp
Normal file
44
trusty/coverage/uuid.cpp
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (C) 2021 The Android Open Sourete Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <trusty/coverage/uuid.h>
|
||||
#include <uuid.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static uint16_t reverse_u16(uint16_t u) {
|
||||
return u << 8 | u >> 8;
|
||||
}
|
||||
|
||||
static uint32_t reverse_u32(uint32_t u) {
|
||||
return reverse_u16((uint16_t)u) << 16 | reverse_u16(u >> 16);
|
||||
}
|
||||
|
||||
bool str_to_uuid(const char* str, struct uuid* uuid) {
|
||||
uuid_t uu;
|
||||
static_assert(sizeof(uu) == sizeof(*uuid));
|
||||
|
||||
if (uuid_parse(str, uu)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
memcpy(uuid, uu, sizeof(*uuid));
|
||||
uuid->time_low = reverse_u32(uuid->time_low);
|
||||
uuid->time_mid = reverse_u16(uuid->time_mid);
|
||||
uuid->time_hi_and_version = reverse_u16(uuid->time_hi_and_version);
|
||||
return true;
|
||||
}
|
Loading…
Reference in a new issue