Loading adb/file_sync_client.cpp +12 −12 Original line number Diff line number Diff line Loading @@ -79,7 +79,7 @@ static bool SendRequest(int fd, int id, const char* path) { char buf[sizeof(SyncRequest) + path_length] __attribute__((aligned(8))); SyncRequest* req = reinterpret_cast<SyncRequest*>(buf); req->id = id; req->path_length = htoll(path_length); req->path_length = path_length; char* data = reinterpret_cast<char*>(req + 1); memcpy(data, path, path_length); Loading Loading @@ -143,14 +143,14 @@ static bool sync_ls(int fd, const char* path, sync_ls_cb func, void* cookie) { if (msg.dent.id == ID_DONE) return true; if (msg.dent.id != ID_DENT) return false; size_t len = ltohl(msg.dent.namelen); size_t len = msg.dent.namelen; if (len > 256) return false; // TODO: resize buffer? continue? char buf[257]; if (!ReadFdExactly(fd, buf, len)) return false; buf[len] = 0; func(ltohl(msg.dent.mode), ltohl(msg.dent.size), ltohl(msg.dent.time), buf, cookie); func(msg.dent.mode, msg.dent.size, msg.dent.time, buf, cookie); } } Loading @@ -165,9 +165,9 @@ static bool sync_finish_stat(SyncConnection& sc, unsigned int* timestamp, return false; } if (timestamp) *timestamp = ltohl(msg.stat.time); if (mode) *mode = ltohl(msg.stat.mode); if (size) *size = ltohl(msg.stat.size); if (timestamp) *timestamp = msg.stat.time; if (mode) *mode = msg.stat.mode; if (size) *size = msg.stat.size; return true; } Loading Loading @@ -211,7 +211,7 @@ static int write_data_file(SyncConnection& sc, const char* path, syncsendbuf* sb break; } sbuf->size = htoll(ret); sbuf->size = ret; if (!WriteFdExactly(sc.fd, sbuf, sizeof(unsigned) * 2 + ret)) { err = -1; break; Loading @@ -238,7 +238,7 @@ static int write_data_link(SyncConnection& sc, const char* path, syncsendbuf* sb } sbuf->data[len] = '\0'; sbuf->size = htoll(len + 1); sbuf->size = len + 1; sbuf->id = ID_DATA; if (!WriteFdExactly(sc.fd, sbuf, sizeof(unsigned) * 2 + len + 1)) { Loading Loading @@ -269,14 +269,14 @@ static bool sync_send(SyncConnection& sc, const char *lpath, const char *rpath, syncmsg msg; msg.data.id = ID_DONE; msg.data.size = htoll(mtime); msg.data.size = mtime; if (!WriteFdExactly(sc.fd, &msg.data, sizeof(msg.data))) goto fail; if (!ReadFdExactly(sc.fd, &msg.status, sizeof(msg.status))) goto fail; if (msg.status.id != ID_OKAY) { if (msg.status.id == ID_FAIL) { size_t len = ltohl(msg.status.msglen); size_t len = msg.status.msglen; if (len > 256) len = 256; if (!ReadFdExactly(sc.fd, sbuf->data, len)) goto fail; sbuf->data[len] = 0; Loading Loading @@ -333,7 +333,7 @@ static int sync_recv(SyncConnection& sc, const char* rpath, const char* lpath, b id = msg.data.id; handle_data: len = ltohl(msg.data.size); len = msg.data.size; if (id == ID_DONE) break; if (id != ID_DATA) goto remote_error; if (len > sc.max) { Loading Loading @@ -368,7 +368,7 @@ remote_error: adb_unlink(lpath); if(id == ID_FAIL) { len = ltohl(msg.data.size); len = msg.data.size; if(len > 256) len = 256; if(!ReadFdExactly(sc.fd, buffer, len)) { return -1; Loading adb/file_sync_service.cpp +13 −13 Original line number Diff line number Diff line Loading @@ -85,9 +85,9 @@ static bool do_stat(int s, const char* path) { memset(&st, 0, sizeof(st)); // TODO: add a way to report that the stat failed! lstat(path, &st); msg.stat.mode = htoll(st.st_mode); msg.stat.size = htoll(st.st_size); msg.stat.time = htoll(st.st_mtime); msg.stat.mode = st.st_mode; msg.stat.size = st.st_size; msg.stat.time = st.st_mtime; return WriteFdExactly(s, &msg.stat, sizeof(msg.stat)); } Loading @@ -107,10 +107,10 @@ static bool do_list(int s, const char* path) { struct stat st; if (lstat(filename.c_str(), &st) == 0) { size_t d_name_length = strlen(de->d_name); msg.dent.mode = htoll(st.st_mode); msg.dent.size = htoll(st.st_size); msg.dent.time = htoll(st.st_mtime); msg.dent.namelen = htoll(d_name_length); msg.dent.mode = st.st_mode; msg.dent.size = st.st_size; msg.dent.time = st.st_mtime; msg.dent.namelen = d_name_length; if (!WriteFdExactly(s, &msg.dent, sizeof(msg.dent)) || !WriteFdExactly(s, de->d_name, d_name_length)) { Loading @@ -133,7 +133,7 @@ static bool fail_message(int s, const std::string& reason) { syncmsg msg; msg.data.id = ID_FAIL; msg.data.size = htoll(reason.size()); msg.data.size = reason.size(); return WriteFdExactly(s, &msg.data, sizeof(msg.data)) && WriteFdExactly(s, reason); } Loading Loading @@ -185,13 +185,13 @@ static bool handle_send_file(int s, char *path, uid_t uid, if(msg.data.id != ID_DATA) { if(msg.data.id == ID_DONE) { timestamp = ltohl(msg.data.size); timestamp = msg.data.size; break; } fail_message(s, "invalid data message"); goto fail; } len = ltohl(msg.data.size); len = msg.data.size; if (len > buffer.size()) { // TODO: resize buffer? fail_message(s, "oversize data message"); goto fail; Loading Loading @@ -245,7 +245,7 @@ static bool handle_send_link(int s, char *path, std::vector<char>& buffer) { return false; } len = ltohl(msg.data.size); len = msg.data.size; if (len > buffer.size()) { // TODO: resize buffer? fail_message(s, "oversize data message"); return false; Loading Loading @@ -346,7 +346,7 @@ static bool do_recv(int s, const char* path, std::vector<char>& buffer) { adb_close(fd); return status; } msg.data.size = htoll(r); msg.data.size = r; if (!WriteFdExactly(s, &msg.data, sizeof(msg.data)) || !WriteFdExactly(s, &buffer[0], r)) { adb_close(fd); return false; Loading @@ -368,7 +368,7 @@ static bool handle_sync_command(int fd, std::vector<char>& buffer) { fail_message(fd, "command read failure"); return false; } size_t path_length = ltohl(request.path_length); size_t path_length = request.path_length; if (path_length > 1024) { fail_message(fd, "path too long"); return false; Loading adb/file_sync_service.h +0 −3 Original line number Diff line number Diff line Loading @@ -19,9 +19,6 @@ #include <string> #define htoll(x) (x) #define ltohl(x) (x) #define MKID(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24)) #define ID_STAT MKID('S','T','A','T') Loading Loading
adb/file_sync_client.cpp +12 −12 Original line number Diff line number Diff line Loading @@ -79,7 +79,7 @@ static bool SendRequest(int fd, int id, const char* path) { char buf[sizeof(SyncRequest) + path_length] __attribute__((aligned(8))); SyncRequest* req = reinterpret_cast<SyncRequest*>(buf); req->id = id; req->path_length = htoll(path_length); req->path_length = path_length; char* data = reinterpret_cast<char*>(req + 1); memcpy(data, path, path_length); Loading Loading @@ -143,14 +143,14 @@ static bool sync_ls(int fd, const char* path, sync_ls_cb func, void* cookie) { if (msg.dent.id == ID_DONE) return true; if (msg.dent.id != ID_DENT) return false; size_t len = ltohl(msg.dent.namelen); size_t len = msg.dent.namelen; if (len > 256) return false; // TODO: resize buffer? continue? char buf[257]; if (!ReadFdExactly(fd, buf, len)) return false; buf[len] = 0; func(ltohl(msg.dent.mode), ltohl(msg.dent.size), ltohl(msg.dent.time), buf, cookie); func(msg.dent.mode, msg.dent.size, msg.dent.time, buf, cookie); } } Loading @@ -165,9 +165,9 @@ static bool sync_finish_stat(SyncConnection& sc, unsigned int* timestamp, return false; } if (timestamp) *timestamp = ltohl(msg.stat.time); if (mode) *mode = ltohl(msg.stat.mode); if (size) *size = ltohl(msg.stat.size); if (timestamp) *timestamp = msg.stat.time; if (mode) *mode = msg.stat.mode; if (size) *size = msg.stat.size; return true; } Loading Loading @@ -211,7 +211,7 @@ static int write_data_file(SyncConnection& sc, const char* path, syncsendbuf* sb break; } sbuf->size = htoll(ret); sbuf->size = ret; if (!WriteFdExactly(sc.fd, sbuf, sizeof(unsigned) * 2 + ret)) { err = -1; break; Loading @@ -238,7 +238,7 @@ static int write_data_link(SyncConnection& sc, const char* path, syncsendbuf* sb } sbuf->data[len] = '\0'; sbuf->size = htoll(len + 1); sbuf->size = len + 1; sbuf->id = ID_DATA; if (!WriteFdExactly(sc.fd, sbuf, sizeof(unsigned) * 2 + len + 1)) { Loading Loading @@ -269,14 +269,14 @@ static bool sync_send(SyncConnection& sc, const char *lpath, const char *rpath, syncmsg msg; msg.data.id = ID_DONE; msg.data.size = htoll(mtime); msg.data.size = mtime; if (!WriteFdExactly(sc.fd, &msg.data, sizeof(msg.data))) goto fail; if (!ReadFdExactly(sc.fd, &msg.status, sizeof(msg.status))) goto fail; if (msg.status.id != ID_OKAY) { if (msg.status.id == ID_FAIL) { size_t len = ltohl(msg.status.msglen); size_t len = msg.status.msglen; if (len > 256) len = 256; if (!ReadFdExactly(sc.fd, sbuf->data, len)) goto fail; sbuf->data[len] = 0; Loading Loading @@ -333,7 +333,7 @@ static int sync_recv(SyncConnection& sc, const char* rpath, const char* lpath, b id = msg.data.id; handle_data: len = ltohl(msg.data.size); len = msg.data.size; if (id == ID_DONE) break; if (id != ID_DATA) goto remote_error; if (len > sc.max) { Loading Loading @@ -368,7 +368,7 @@ remote_error: adb_unlink(lpath); if(id == ID_FAIL) { len = ltohl(msg.data.size); len = msg.data.size; if(len > 256) len = 256; if(!ReadFdExactly(sc.fd, buffer, len)) { return -1; Loading
adb/file_sync_service.cpp +13 −13 Original line number Diff line number Diff line Loading @@ -85,9 +85,9 @@ static bool do_stat(int s, const char* path) { memset(&st, 0, sizeof(st)); // TODO: add a way to report that the stat failed! lstat(path, &st); msg.stat.mode = htoll(st.st_mode); msg.stat.size = htoll(st.st_size); msg.stat.time = htoll(st.st_mtime); msg.stat.mode = st.st_mode; msg.stat.size = st.st_size; msg.stat.time = st.st_mtime; return WriteFdExactly(s, &msg.stat, sizeof(msg.stat)); } Loading @@ -107,10 +107,10 @@ static bool do_list(int s, const char* path) { struct stat st; if (lstat(filename.c_str(), &st) == 0) { size_t d_name_length = strlen(de->d_name); msg.dent.mode = htoll(st.st_mode); msg.dent.size = htoll(st.st_size); msg.dent.time = htoll(st.st_mtime); msg.dent.namelen = htoll(d_name_length); msg.dent.mode = st.st_mode; msg.dent.size = st.st_size; msg.dent.time = st.st_mtime; msg.dent.namelen = d_name_length; if (!WriteFdExactly(s, &msg.dent, sizeof(msg.dent)) || !WriteFdExactly(s, de->d_name, d_name_length)) { Loading @@ -133,7 +133,7 @@ static bool fail_message(int s, const std::string& reason) { syncmsg msg; msg.data.id = ID_FAIL; msg.data.size = htoll(reason.size()); msg.data.size = reason.size(); return WriteFdExactly(s, &msg.data, sizeof(msg.data)) && WriteFdExactly(s, reason); } Loading Loading @@ -185,13 +185,13 @@ static bool handle_send_file(int s, char *path, uid_t uid, if(msg.data.id != ID_DATA) { if(msg.data.id == ID_DONE) { timestamp = ltohl(msg.data.size); timestamp = msg.data.size; break; } fail_message(s, "invalid data message"); goto fail; } len = ltohl(msg.data.size); len = msg.data.size; if (len > buffer.size()) { // TODO: resize buffer? fail_message(s, "oversize data message"); goto fail; Loading Loading @@ -245,7 +245,7 @@ static bool handle_send_link(int s, char *path, std::vector<char>& buffer) { return false; } len = ltohl(msg.data.size); len = msg.data.size; if (len > buffer.size()) { // TODO: resize buffer? fail_message(s, "oversize data message"); return false; Loading Loading @@ -346,7 +346,7 @@ static bool do_recv(int s, const char* path, std::vector<char>& buffer) { adb_close(fd); return status; } msg.data.size = htoll(r); msg.data.size = r; if (!WriteFdExactly(s, &msg.data, sizeof(msg.data)) || !WriteFdExactly(s, &buffer[0], r)) { adb_close(fd); return false; Loading @@ -368,7 +368,7 @@ static bool handle_sync_command(int fd, std::vector<char>& buffer) { fail_message(fd, "command read failure"); return false; } size_t path_length = ltohl(request.path_length); size_t path_length = request.path_length; if (path_length > 1024) { fail_message(fd, "path too long"); return false; Loading
adb/file_sync_service.h +0 −3 Original line number Diff line number Diff line Loading @@ -19,9 +19,6 @@ #include <string> #define htoll(x) (x) #define ltohl(x) (x) #define MKID(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24)) #define ID_STAT MKID('S','T','A','T') Loading