endif
ifeq ($(HOST_OS),darwin)
- LOCAL_USB_SRC := src/usb_darwin.c
+ LOCAL_USB_SRC := src/usb_darwin.c src/device_vendors.c
LOCAL_UTIL_SRC := src/utils_unix.c
LOCAL_OTHER_SRC := src/fdevent.c src/fdevent_unix.c src/auto_complete.c
LOCAL_LFLAGS := -stdlib=libstdc++ -lpthread -lcrypto -framework CoreFoundation -framework IOKit -framework Carbon
src/sockets.c \
src/file_sync_client.c \
$(LOCAL_USB_SRC) \
- src/device_vendors.c \
$(LOCAL_UTIL_SRC) \
$(LOCAL_OTHER_SRC) \
src/utils.c \
$(MAKE) -C $(ENCLIB_BUILD_PATH) clean
rm -rf src/*.o
rm -rf $(BINDIR)
-
+ rm -rf src/*.gcda
+ rm -rf src/*.gcno
+ rm -rf src/*.gcov
#include "sysdeps.h"
#include "sdb.h"
#include "adb_auth.h"
+#include "utils.h"
/* HACK: we need the RSAPublicKey struct
* but RSA_verify conflits with openssl */
if (len < (size_t) (ret + 1)) {
D("%s: Content too large ret=%d\n", path, ret);
+ SAFE_FREE(file);
return 0;
}
memcpy(data, file, ret);
data[ret] = '\0';
+ SAFE_FREE(file);
return ret + 1;
}
if(argc == 0) {
char full_cmd[255];
if(COMPLETE_FLAG) {
- snprintf(full_cmd, sizeof full_cmd, "shell:/usr/bin/pkgcmd -l | grep -E '\\[tpk\\]|\\[wgt\\]' | awk '{print $4}'");
+ snprintf(full_cmd, sizeof full_cmd, "shell:/usr/bin/pkgcmd -l | grep -E '\\[tpk\\]|\\[wgt\\]' | awk '{print $6}'");
}
else {
- snprintf(full_cmd, sizeof full_cmd, "shell:/usr/bin/pkgcmd -l | grep -E '\\[tpk\\]|\\[wgt\\]' | awk '{print $4}' | grep '^\\[%s'", argv[0]);
+ snprintf(full_cmd, sizeof full_cmd, "shell:/usr/bin/pkgcmd -l | grep -E '\\[tpk\\]|\\[wgt\\]' | awk '{print $6}' | grep '^\\[%s'", argv[0]);
}
int result = sdb_connect(full_cmd);
return 1;
}
+// currently not supported
+#if 0
int device_con(int argc, char ** argv) {
char *tmp;
return 1;
}
+#endif
int get_state_serialno(int argc, char ** argv) {
return 1;
}
+//LCOV_EXCL_START
int status_window(int argc, char ** argv) {
char full_cmd[PATH_MAX];
return 0;
}
+//LCOV_EXCL_STOP
int kill_server(int argc, char ** argv) {
int fd;
* kill gdbserver if running
*/
+//LCOV_EXCL_START
static int kill_gdbserver_if_running(const char* process_cmd) {
char cmd[512] = {};
char buf[512] = {};
sdb_close(result);
return 1;
}
+//LCOV_EXCL_STOP
static void __inline__ format_host_command(char* buffer, size_t buflen, const char* command, transport_type ttype, const char* serial)
{
/*
* returns -1 if gdbserver exists
*/
+//LCOV_EXCL_START
static int verify_gdbserver_exist() {
char cmd[512] = {};
char buf[512] = {};
sdb_close(result);
return result;
}
+//LCOV_EXCL_STOP
int get_boot(int argc, char ** argv) {
char full_cmd[20];
fd = sdb_connect(GET_SYSTEM_INFO_CMD);
if(fd < 0) {
+ D("sysinfo get failed\n");
return -1;
}
int major = 0;
int minor = 0;
int patch = 0;
- if (sscanf(pinfo.platform_version, "%d.%d.%d", &major, &minor, &patch) == 3) {
+
+ D("Returned platform version %s\n", pinfo.platform_version);
+ ret = sscanf(pinfo.platform_version, "%d.%d.%d", &major, &minor, &patch);
+ if (ret == 3) {
pversion->major = major;
pversion->minor = minor;
pversion->patch = patch;
ret = 0;
+ } else if (ret == 2) {
+ pversion->major = major;
+ pversion->minor = minor;
+ pversion->patch = 0;
+ ret = 0;
}
}
D("Platform version : %d.%d.%d\n", pversion->major, pversion->minor, pversion->patch);
return 0;
}
+// not used currently
+#if 0
const char* get_basename(const char* filename)
{
const char* basename = sdb_dirstop(filename);
return filename;
}
}
+#endif
static void create_opt_list(LIST_NODE** opt_list) {
0, EMPTY_STRING, forkserver, COMMANDLINE_FORKSERVER_MAX_ARG, COMMANDLINE_FORKSERVER_MIN_ARG);
prepend(cmd_list, forkserver_cmd);
+ // deprecated
COMMAND* oprofile_cmd = NULL;
create_command(&oprofile_cmd, COMMANDLINE_OPROFILE_NAME, NULL,
0, EMPTY_STRING, oprofile, COMMANDLINE_OPROFILE_MAX_ARG, COMMANDLINE_OPROFILE_MIN_ARG);
prepend(cmd_list, oprofile_cmd);
- COMMAND* profile_cmd = NULL;
- create_command(&profile_cmd, COMMANDLINE_PROFILE_NAME, NULL,
- 0, EMPTY_STRING, profile, COMMANDLINE_PROFILE_MAX_ARG, COMMANDLINE_PROFILE_MIN_ARG);
- prepend(cmd_list, profile_cmd);
-
+ // deprecated
COMMAND* da_cmd = NULL;
create_command(&da_cmd , COMMANDLINE_DA_NAME, NULL,
0, EMPTY_STRING, da, COMMANDLINE_DA_MAX_ARG, COMMANDLINE_DA_MIN_ARG);
prepend(cmd_list, da_cmd );
+ COMMAND* profile_cmd = NULL;
+ create_command(&profile_cmd, COMMANDLINE_PROFILE_NAME, NULL,
+ 0, EMPTY_STRING, profile, COMMANDLINE_PROFILE_MAX_ARG, COMMANDLINE_PROFILE_MIN_ARG);
+ prepend(cmd_list, profile_cmd);
+
COMMAND* capability_cmd = NULL;
create_command(&capability_cmd, COMMANDLINE_CAPABILITY_NAME, NULL,
0, EMPTY_STRING, get_capability, COMMANDLINE_CAPABILITY_MAX_ARG, COMMANDLINE_CAPABILITY_MIN_ARG);
return ptr + sizeof(size_t);
}
+//LCOV_EXCL_START
void *s_realloc(void *ptr, size_t new_size) {
void *new_ptr;
size_t org_size;
return new_ptr + sizeof(size_t);
}
+//LCOV_EXCL_STOP
void s_free(void *ptr) {
size_t size;
this->map_node_list = (LIST_NODE**)calloc(this->size, sizeof(LIST_NODE*));
}
+//LCOV_EXCL_START
static void default_free(void* node) {
MAP_NODE* _node = node;
if(_node != NULL) {
SAFE_FREE(_node);
}
}
+//LCOV_EXCL_STOP
static int default_hash(MAP* this, MAP_KEY key) {
return key.key_int%(this->size);
remove_node(hash_list, result_node, this->freedata);
}
+//LCOV_EXCL_START
void map_clear(MAP* this) {
if(this != NULL) {
SAFE_FREE(this->map_node_list);
}
}
+//LCOV_EXCL_STOP
return result;
}
+//LCOV_EXCL_START
static void remove_socket(void* s)
{
SDB_SOCKET* socket = s;
socket->node = NULL;
}
+//LCOV_EXCL_STOP
int local_socket_enqueue(SDB_SOCKET *s, PACKET *p)
{
return NULL;
}
+//LCOV_EXCL_START
char* trim(char *s) {
rtrim(s);
return ltrim(s);
return s;
}
+//LCOV_EXCL_STOP
put_apacket(p);
}
+//LCOV_EXCL_START
#ifdef SUPPORT_ENCRYPT
/*
desc. : 암호화 모드 변경 실패 시, sdbd에게 실패 메시지 전송
put_apacket(p);
}
#endif
+//LCOV_EXCL_STOP
static void *transport_thread(void *_t)
{
return p - buf;
}
+//TODO REMOTE_DEVICE_CONNECT complete device connect after resolving security issue
+#if 0
int register_device_con_transport(int s, const char *serial) {
- //TODO REMOTE_DEVICE_CONNECT complete device connect after resolving security issue
-#if 0
- if(current_local_transports >= SDB_LOCAL_TRANSPORT_MAX) {
+ if(current_local_transports >= SDB_LOCAL_TRANSPORT_MAX) {
LOG_ERROR("Too many tcp connection\n");
return -1;
}
++current_local_transports;
register_transport(t);
return 0;
-#endif
- return -1;
}
+#endif
#undef TRACE_TAG
#define TRACE_TAG TRACE_RWX
send_auth_publickey(t);
LOG_DEBUG("send auth ok !!");
}
+#if 0 // daemon code (never happened in sdb server)
} else if (p->msg.arg0 == ADB_AUTH_SIGNATURE) {
if (adb_auth_verify(t->token, p->data, p->msg.data_length)) {
adb_auth_verified(t);
}
} else if (p->msg.arg0 == ADB_AUTH_RSAPUBLICKEY) {
adb_auth_confirm_key(p->data, p->msg.data_length, t);
+#endif
}
}
#ifdef SUPPORT_ENCRYPT
SAFE_FREE(packet);
}
-void send_auth_request(atransport *t)
-{
- D("Calling send_auth_request\n");
- apacket *p;
- int ret;
-
- ret = adb_auth_generate_token(t->token, sizeof(t->token));
- if (ret != sizeof(t->token)) {
- D("Error generating token ret=%d\n", ret);
- return;
- }
-
- p = get_apacket();
- memcpy(p->data, t->token, ret);
- p->msg.command = A_AUTH;
- p->msg.arg0 = ADB_AUTH_TOKEN;
- p->msg.data_length = ret;
- send_packet(p, t);
- put_apacket(p);
-}
-
void send_auth_response(uint8_t *token, size_t token_size, atransport *t)
{
D("Calling send_auth_response\n");
put_apacket(p);
}
+#if 0 // daemon code (never used in sdb server)
+void send_auth_request(atransport *t)
+{
+ D("Calling send_auth_request\n");
+ apacket *p;
+ int ret;
+
+ ret = adb_auth_generate_token(t->token, sizeof(t->token));
+ if (ret != sizeof(t->token)) {
+ D("Error generating token ret=%d\n", ret);
+ return;
+ }
+
+ p = get_apacket();
+ memcpy(p->data, t->token, ret);
+ p->msg.command = A_AUTH;
+ p->msg.arg0 = ADB_AUTH_TOKEN;
+ p->msg.data_length = ret;
+ send_packet(p, t);
+ put_apacket(p);
+}
+
void adb_auth_verified(atransport *t)
{
handle_online(t);
//Close the associated usb
t->online = 0;
}
+
+#endif
return 1;
}
+//LCOV_EXCL_START
void append_separator(char* result_path, char* path) {
int path_len = strlen(path);
snprintf(result_path, PATH_MAX, "%s",path);
}
}
+//LCOV_EXCL_STOP
void append_file(char* result_path, char* dir, char* append_dir, int length) {
char* tmp_append;
return utils_backend->sdb_mutex_unlock(mutex);
}
+//LCOV_EXCL_START
int sdb_cond_init(sdb_cond_t *cond, const void *unused) {
return utils_backend->sdb_cond_init(cond, unused);
}
int sdb_cond_broadcast(sdb_cond_t *cond) {
return utils_backend->sdb_cond_broadcast(cond);
}
+//LCOV_EXCL_STOP
void sdb_sysdeps_init(void) {
return utils_backend->sdb_sysdeps_init();
return pthread_mutex_unlock(mutex);
}
+//LCOV_EXCL_START
static int _sdb_cond_init(sdb_cond_t *cond, const void *unused) {
return pthread_cond_init(cond, unused);
}
static int _sdb_cond_broadcast(sdb_cond_t *cond) {
return pthread_cond_broadcast(cond);
}
+//LCOV_EXCL_STOP
static void _sdb_sysdeps_init(void)
{