From f087dfb52cb9a3a33b85b922fdaadf0514b37e46 Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Wed, 9 Jan 2013 16:35:51 +0000 Subject: [PATCH 001/110] exit instead of return if sideload file creation fails A return here leaves adb sideload in a permanent loop. An exit is more appropriate for this error. Change-Id: I80fb8abae4f6378833aa75f9eaf7ec1acd44b274 Signed-off-by: Ethan Yonker --- minadbd/services.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minadbd/services.c b/minadbd/services.c index aef37f7e..6b5e3b9a 100644 --- a/minadbd/services.c +++ b/minadbd/services.c @@ -55,7 +55,7 @@ static void sideload_service(int s, void *cookie) if(fd < 0) { fprintf(stderr, "failed to create %s\n", ADB_SIDELOAD_FILENAME); adb_close(s); - return; + exit(1); } while(count > 0) { From 41329c5fd09812ec7c53174f3a7cf67a49f23ce7 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 13 Aug 2013 13:01:29 -0700 Subject: [PATCH 002/110] Fix libpng API usage Remove usage of deprecated methods that were removed in 1.6 Change-Id: I2a669bf5201197f60adfdbe512fd729bebb74f9c --- minui/resources.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/minui/resources.c b/minui/resources.c index 72f39fba..c0a9ccac 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -93,9 +93,13 @@ int res_create_surface(const char* name, gr_surface* pSurface) { png_set_sig_bytes(png_ptr, sizeof(header)); png_read_info(png_ptr, info_ptr); - int color_type = info_ptr->color_type; - int bit_depth = info_ptr->bit_depth; - int channels = info_ptr->channels; + int color_type, bit_depth; + size_t width, height; + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, + &color_type, NULL, NULL, NULL); + + int channels = png_get_channels(png_ptr, info_ptr); + if (!(bit_depth == 8 && ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || @@ -105,8 +109,6 @@ int res_create_surface(const char* name, gr_surface* pSurface) { goto exit; } - size_t width = info_ptr->width; - size_t height = info_ptr->height; size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; size_t pixelSize = stride * height; @@ -246,13 +248,11 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { png_set_sig_bytes(png_ptr, sizeof(header)); png_read_info(png_ptr, info_ptr); - size_t width = info_ptr->width; - size_t height = info_ptr->height; - size_t stride = 4 * width; - - int color_type = info_ptr->color_type; - int bit_depth = info_ptr->bit_depth; - int channels = info_ptr->channels; + int color_type, bit_depth; + size_t width, height; + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, + &color_type, NULL, NULL, NULL); + int channels = png_get_channels(png_ptr, info_ptr); if (!(bit_depth == 8 && (channels == 1 && color_type == PNG_COLOR_TYPE_GRAY))) { From 9e805d6ca0101f6bfc458e5c1e9b48fecb495a72 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 4 Sep 2013 13:44:38 -0700 Subject: [PATCH 003/110] allow CheckKey to request mounting /system Also provide a default implementation of CheckKey that's reasonable for many devices (those that have power and volume keys). Change-Id: Icf6c7746ebd866152d402059dbd27fd16bd51ff8 --- Android.mk | 1 + ui.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- ui.h | 6 +++++- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/Android.mk b/Android.mk index 075fa2cf..645a8353 100644 --- a/Android.mk +++ b/Android.mk @@ -82,6 +82,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := verifier_test LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_TAGS := tests +LOCAL_CFLAGS += -DNO_RECOVERY_MOUNT LOCAL_SRC_FILES := \ verifier_test.cpp \ verifier.cpp \ diff --git a/ui.cpp b/ui.cpp index cece02d3..5043ee52 100644 --- a/ui.cpp +++ b/ui.cpp @@ -31,6 +31,7 @@ #include #include "common.h" +#include "roots.h" #include "device.h" #include "minui/minui.h" #include "screen_ui.h" @@ -47,7 +48,10 @@ RecoveryUI::RecoveryUI() : key_queue_len(0), key_last_down(-1), key_long_press(false), - key_down_count(0) { + key_down_count(0), + consecutive_power_keys(0), + consecutive_alternate_keys(0), + last_key(-1) { pthread_mutex_init(&key_queue_mutex, NULL); pthread_cond_init(&key_queue_cond, NULL); self = this; @@ -152,6 +156,13 @@ void RecoveryUI::process_key(int key_code, int updown) { case RecoveryUI::ENQUEUE: EnqueueKey(key_code); break; + + case RecoveryUI::MOUNT_SYSTEM: +#ifndef NO_RECOVERY_MOUNT + ensure_path_mounted("/system"); + Print("Mounted /system."); +#endif + break; } } } @@ -258,8 +269,41 @@ void RecoveryUI::FlushKeys() { pthread_mutex_unlock(&key_queue_mutex); } +// The default CheckKey implementation assumes the device has power, +// volume up, and volume down keys. +// +// - Hold power and press vol-up to toggle display. +// - Press power seven times in a row to reboot. +// - Alternate vol-up and vol-down seven times to mount /system. RecoveryUI::KeyAction RecoveryUI::CheckKey(int key) { - return RecoveryUI::ENQUEUE; + if (IsKeyPressed(KEY_POWER) && key == KEY_VOLUMEUP) { + return TOGGLE; + } + + if (key == KEY_POWER) { + ++consecutive_power_keys; + if (consecutive_power_keys >= 7) { + return REBOOT; + } + } else { + consecutive_power_keys = 0; + } + + if ((key == KEY_VOLUMEUP && + (last_key == KEY_VOLUMEDOWN || last_key == -1)) || + (key == KEY_VOLUMEDOWN && + (last_key == KEY_VOLUMEUP || last_key == -1))) { + ++consecutive_alternate_keys; + if (consecutive_alternate_keys >= 7) { + consecutive_alternate_keys = 0; + return MOUNT_SYSTEM; + } + } else { + consecutive_alternate_keys = 0; + } + last_key = key; + + return ENQUEUE; } void RecoveryUI::NextCheckKeyIsLong(bool is_long_press) { diff --git a/ui.h b/ui.h index 6c8987a3..d85fc659 100644 --- a/ui.h +++ b/ui.h @@ -77,7 +77,7 @@ class RecoveryUI { // Return value indicates whether an immediate operation should be // triggered (toggling the display, rebooting the device), or if // the key should be enqueued for use by the main thread. - enum KeyAction { ENQUEUE, TOGGLE, REBOOT, IGNORE }; + enum KeyAction { ENQUEUE, TOGGLE, REBOOT, IGNORE, MOUNT_SYSTEM }; virtual KeyAction CheckKey(int key); // Called immediately before each call to CheckKey(), tell you if @@ -121,6 +121,10 @@ private: int key_down_count; // under key_queue_mutex int rel_sum; + int consecutive_power_keys; + int consecutive_alternate_keys; + int last_key; + typedef struct { RecoveryUI* ui; int key_code; From 08ef9a957027183dcf55e432441e8fb0d5299aba Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Wed, 11 Sep 2013 11:37:10 -0700 Subject: [PATCH 004/110] updater: Delete dead code set_perm and set_perm_recursive are no longer used. Delete. Change-Id: I3bb40b934b6c093b24b88aa4ed6f3c7de2bb52f0 --- minzip/DirUtil.c | 58 ------------------------------- minzip/DirUtil.h | 8 ----- updater/install.c | 87 ----------------------------------------------- 3 files changed, 153 deletions(-) diff --git a/minzip/DirUtil.c b/minzip/DirUtil.c index 8dd5da1d..fe2c880a 100644 --- a/minzip/DirUtil.c +++ b/minzip/DirUtil.c @@ -234,61 +234,3 @@ dirUnlinkHierarchy(const char *path) /* delete target directory */ return rmdir(path); } - -int -dirSetHierarchyPermissions(const char *path, - int uid, int gid, int dirMode, int fileMode) -{ - struct stat st; - if (lstat(path, &st)) { - return -1; - } - - /* ignore symlinks */ - if (S_ISLNK(st.st_mode)) { - return 0; - } - - /* directories and files get different permissions */ - if (chown(path, uid, gid) || - chmod(path, S_ISDIR(st.st_mode) ? dirMode : fileMode)) { - return -1; - } - - /* recurse over directory components */ - if (S_ISDIR(st.st_mode)) { - DIR *dir = opendir(path); - if (dir == NULL) { - return -1; - } - - errno = 0; - const struct dirent *de; - while (errno == 0 && (de = readdir(dir)) != NULL) { - if (!strcmp(de->d_name, "..") || !strcmp(de->d_name, ".")) { - continue; - } - - char dn[PATH_MAX]; - snprintf(dn, sizeof(dn), "%s/%s", path, de->d_name); - if (!dirSetHierarchyPermissions(dn, uid, gid, dirMode, fileMode)) { - errno = 0; - } else if (errno == 0) { - errno = -1; - } - } - - if (errno != 0) { - int save = errno; - closedir(dir); - errno = save; - return -1; - } - - if (closedir(dir)) { - return -1; - } - } - - return 0; -} diff --git a/minzip/DirUtil.h b/minzip/DirUtil.h index a5cfa761..85a00128 100644 --- a/minzip/DirUtil.h +++ b/minzip/DirUtil.h @@ -48,14 +48,6 @@ int dirCreateHierarchy(const char *path, int mode, */ int dirUnlinkHierarchy(const char *path); -/* chown -R : - * chmod -R - * - * Sets directories to and files to . Skips symlinks. - */ -int dirSetHierarchyPermissions(const char *path, - int uid, int gid, int dirMode, int fileMode); - #ifdef __cplusplus } #endif diff --git a/updater/install.c b/updater/install.c index 0a859452..061aa7b5 100644 --- a/updater/install.c +++ b/updater/install.c @@ -524,88 +524,6 @@ Value* SymlinkFn(const char* name, State* state, int argc, Expr* argv[]) { return StringValue(strdup("")); } - -Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) { - char* result = NULL; - bool recursive = (strcmp(name, "set_perm_recursive") == 0); - - int min_args = 4 + (recursive ? 1 : 0); - if (argc < min_args) { - return ErrorAbort(state, "%s() expects %d+ args, got %d", - name, min_args, argc); - } - - char** args = ReadVarArgs(state, argc, argv); - if (args == NULL) return NULL; - - char* end; - int i; - int bad = 0; - - int uid = strtoul(args[0], &end, 0); - if (*end != '\0' || args[0][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid uid", name, args[0]); - goto done; - } - - int gid = strtoul(args[1], &end, 0); - if (*end != '\0' || args[1][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid gid", name, args[1]); - goto done; - } - - if (recursive) { - int dir_mode = strtoul(args[2], &end, 0); - if (*end != '\0' || args[2][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid dirmode", name, args[2]); - goto done; - } - - int file_mode = strtoul(args[3], &end, 0); - if (*end != '\0' || args[3][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid filemode", - name, args[3]); - goto done; - } - - for (i = 4; i < argc; ++i) { - dirSetHierarchyPermissions(args[i], uid, gid, dir_mode, file_mode); - } - } else { - int mode = strtoul(args[2], &end, 0); - if (*end != '\0' || args[2][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid mode", name, args[2]); - goto done; - } - - for (i = 3; i < argc; ++i) { - if (chown(args[i], uid, gid) < 0) { - printf("%s: chown of %s to %d %d failed: %s\n", - name, args[i], uid, gid, strerror(errno)); - ++bad; - } - if (chmod(args[i], mode) < 0) { - printf("%s: chmod of %s to %o failed: %s\n", - name, args[i], mode, strerror(errno)); - ++bad; - } - } - } - result = strdup(""); - -done: - for (i = 0; i < argc; ++i) { - free(args[i]); - } - free(args); - - if (bad) { - free(result); - return ErrorAbort(state, "%s: some changes failed", name); - } - return StringValue(result); -} - struct perm_parsed_args { bool has_uid; uid_t uid; @@ -1398,11 +1316,6 @@ void RegisterInstallFunctions() { RegisterFunction("package_extract_file", PackageExtractFileFn); RegisterFunction("symlink", SymlinkFn); - // Maybe, at some future point, we can delete these functions? They have been - // replaced by perm_set and perm_set_recursive. - RegisterFunction("set_perm", SetPermFn); - RegisterFunction("set_perm_recursive", SetPermFn); - // Usage: // set_metadata("filename", "key1", "value1", "key2", "value2", ...) // Example: From 1fc89d4c84e512b484d82d971d997bdb0aef40e2 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Tue, 10 Sep 2013 16:52:54 -0700 Subject: [PATCH 005/110] minui: convert ev_*() event interface to epoll Help enable external main loop combined with ev_*() key event processing. Specify EPOLLWAKEUP to hold a wakelock on any event, assuming this is needed (may need to make this optional). Convert callback events parameter to unsigned int. Change-Id: Ib5e09abbd7724ffd830e2cf8e25e7eb59d3aa072 --- minui/events.c | 81 ++++++++++++++++++++++++++++++++++---------------- minui/minui.h | 4 +-- 2 files changed, 58 insertions(+), 27 deletions(-) diff --git a/minui/events.c b/minui/events.c index 2918afaa..fe364bf0 100644 --- a/minui/events.c +++ b/minui/events.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include @@ -34,11 +34,15 @@ ((array)[(bit)/BITS_PER_LONG] & (1 << ((bit) % BITS_PER_LONG))) struct fd_info { + int fd; ev_callback cb; void *data; }; -static struct pollfd ev_fds[MAX_DEVICES + MAX_MISC_FDS]; +static int epollfd; +static struct epoll_event polledevents[MAX_DEVICES + MAX_MISC_FDS]; +static int npolledevents; + static struct fd_info ev_fdinfo[MAX_DEVICES + MAX_MISC_FDS]; static unsigned ev_count = 0; @@ -50,6 +54,12 @@ int ev_init(ev_callback input_cb, void *data) DIR *dir; struct dirent *de; int fd; + struct epoll_event ev; + bool epollctlfail = false; + + epollfd = epoll_create(MAX_DEVICES + MAX_MISC_FDS); + if (epollfd == -1) + return -1; dir = opendir("/dev/input"); if(dir != 0) { @@ -74,8 +84,15 @@ int ev_init(ev_callback input_cb, void *data) continue; } - ev_fds[ev_count].fd = fd; - ev_fds[ev_count].events = POLLIN; + ev.events = EPOLLIN | EPOLLWAKEUP; + ev.data.ptr = (void *)&ev_fdinfo[ev_count]; + if (epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &ev)) { + close(fd); + epollctlfail = true; + continue; + } + + ev_fdinfo[ev_count].fd = fd; ev_fdinfo[ev_count].cb = input_cb; ev_fdinfo[ev_count].data = data; ev_count++; @@ -84,59 +101,73 @@ int ev_init(ev_callback input_cb, void *data) } } + if (epollctlfail && !ev_count) { + close(epollfd); + epollfd = -1; + return -1; + } + return 0; } int ev_add_fd(int fd, ev_callback cb, void *data) { + struct epoll_event ev; + int ret; + if (ev_misc_count == MAX_MISC_FDS || cb == NULL) return -1; - ev_fds[ev_count].fd = fd; - ev_fds[ev_count].events = POLLIN; - ev_fdinfo[ev_count].cb = cb; - ev_fdinfo[ev_count].data = data; - ev_count++; - ev_misc_count++; - return 0; + ev.events = EPOLLIN | EPOLLWAKEUP; + ev.data.ptr = (void *)&ev_fdinfo[ev_count]; + ret = epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &ev); + if (!ret) { + ev_fdinfo[ev_count].fd = fd; + ev_fdinfo[ev_count].cb = cb; + ev_fdinfo[ev_count].data = data; + ev_count++; + ev_misc_count++; + } + + return ret; } void ev_exit(void) { while (ev_count > 0) { - close(ev_fds[--ev_count].fd); + close(ev_fdinfo[--ev_count].fd); } ev_misc_count = 0; ev_dev_count = 0; + close(epollfd); } int ev_wait(int timeout) { - int r; - - r = poll(ev_fds, ev_count, timeout); - if (r <= 0) + npolledevents = epoll_wait(epollfd, polledevents, ev_count, timeout); + if (npolledevents <= 0) return -1; return 0; } void ev_dispatch(void) { - unsigned n; + int n; int ret; - for (n = 0; n < ev_count; n++) { - ev_callback cb = ev_fdinfo[n].cb; - if (cb && (ev_fds[n].revents & ev_fds[n].events)) - cb(ev_fds[n].fd, ev_fds[n].revents, ev_fdinfo[n].data); + for (n = 0; n < npolledevents; n++) { + struct fd_info *fdi = polledevents[n].data.ptr; + ev_callback cb = fdi->cb; + if (cb) + cb(fdi->fd, polledevents[n].events, fdi->data); } } -int ev_get_input(int fd, short revents, struct input_event *ev) +int ev_get_input(int fd, unsigned int epevents, struct input_event *ev) { int r; - if (revents & POLLIN) { + if (epevents & EPOLLIN) { r = read(fd, ev, sizeof(*ev)); if (r == sizeof(*ev)) return 0; @@ -157,11 +188,11 @@ int ev_sync_key_state(ev_set_key_callback set_key_cb, void *data) memset(key_bits, 0, sizeof(key_bits)); memset(ev_bits, 0, sizeof(ev_bits)); - ret = ioctl(ev_fds[i].fd, EVIOCGBIT(0, sizeof(ev_bits)), ev_bits); + ret = ioctl(ev_fdinfo[i].fd, EVIOCGBIT(0, sizeof(ev_bits)), ev_bits); if (ret < 0 || !test_bit(EV_KEY, ev_bits)) continue; - ret = ioctl(ev_fds[i].fd, EVIOCGKEY(sizeof(key_bits)), key_bits); + ret = ioctl(ev_fdinfo[i].fd, EVIOCGKEY(sizeof(key_bits)), key_bits); if (ret < 0) continue; diff --git a/minui/minui.h b/minui/minui.h index 1b8dd059..805c58be 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -50,7 +50,7 @@ unsigned int gr_get_height(gr_surface surface); // see http://www.mjmwired.net/kernel/Documentation/input/ for info. struct input_event; -typedef int (*ev_callback)(int fd, short revents, void *data); +typedef int (*ev_callback)(int fd, unsigned int epevents, void *data); typedef int (*ev_set_key_callback)(int code, int value, void *data); int ev_init(ev_callback input_cb, void *data); @@ -65,7 +65,7 @@ int ev_sync_key_state(ev_set_key_callback set_key_cb, void *data); */ int ev_wait(int timeout); -int ev_get_input(int fd, short revents, struct input_event *ev); +int ev_get_input(int fd, unsigned int epevents, struct input_event *ev); void ev_dispatch(void); // Resources From e7265df3523d27c9f59829c858de256cf063da26 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Tue, 10 Sep 2013 16:53:12 -0700 Subject: [PATCH 006/110] recovery: ui changes for ev_*() switch to epoll Convert callback events parameter to unsigned int. Change-Id: Ife0e983f307c07bf4aca807d70574aeb20c460cd --- ui.cpp | 4 ++-- ui.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ui.cpp b/ui.cpp index 5043ee52..08c291dd 100644 --- a/ui.cpp +++ b/ui.cpp @@ -63,12 +63,12 @@ void RecoveryUI::Init() { } -int RecoveryUI::input_callback(int fd, short revents, void* data) +int RecoveryUI::input_callback(int fd, unsigned int epevents, void* data) { struct input_event ev; int ret; - ret = ev_get_input(fd, revents, &ev); + ret = ev_get_input(fd, epevents, &ev); if (ret) return -1; diff --git a/ui.h b/ui.h index d85fc659..22f3e5c5 100644 --- a/ui.h +++ b/ui.h @@ -134,7 +134,7 @@ private: pthread_t input_t; static void* input_thread(void* cookie); - static int input_callback(int fd, short revents, void* data); + static int input_callback(int fd, unsigned int epevents, void* data); void process_key(int key_code, int updown); bool usb_connected(); From 4665ede960301144eeebcf6b145ac83fd9d2c778 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Tue, 10 Sep 2013 17:03:45 -0700 Subject: [PATCH 007/110] minui: add ev_get_epollfd() to retrieve epoll file descriptor To allow use of ev_* functions with an external main loop. Change-Id: If73717b64d7c455ca726b90a815a31c1edf52544 --- minui/events.c | 5 +++++ minui/minui.h | 1 + 2 files changed, 6 insertions(+) diff --git a/minui/events.c b/minui/events.c index fe364bf0..008a7d8d 100644 --- a/minui/events.c +++ b/minui/events.c @@ -132,6 +132,11 @@ int ev_add_fd(int fd, ev_callback cb, void *data) return ret; } +int ev_get_epollfd(void) +{ + return epollfd; +} + void ev_exit(void) { while (ev_count > 0) { diff --git a/minui/minui.h b/minui/minui.h index 805c58be..ab08202f 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -67,6 +67,7 @@ int ev_wait(int timeout); int ev_get_input(int fd, unsigned int epevents, struct input_event *ev); void ev_dispatch(void); +int ev_get_epollfd(void); // Resources From be96809d181f587255176add2aa298adaaec69e4 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Fri, 13 Sep 2013 16:34:12 -0700 Subject: [PATCH 008/110] start healthd in recovery mode Change-Id: I431ece69b6856fd1ea6079c38cdeb593c15d7385 --- etc/init.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/init.rc b/etc/init.rc index 17548906..9b2a9914 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -44,7 +44,7 @@ on property:sys.powerctl=* service ueventd /sbin/ueventd critical -service healthd /sbin/healthd -n +service healthd /sbin/healthd -r critical service recovery /sbin/recovery From 46ab1b6138bf911120280f1095ff9479dceee3df Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Wed, 11 Sep 2013 11:37:10 -0700 Subject: [PATCH 009/110] updater: Delete dead code set_perm and set_perm_recursive are no longer used. Delete. (cherry picked from commit 08ef9a957027183dcf55e432441e8fb0d5299aba) Change-Id: I1bcc90ae19af9df4f0705496c5876987159f75ac --- minzip/DirUtil.c | 58 ------------------------------- minzip/DirUtil.h | 8 ----- updater/install.c | 87 ----------------------------------------------- 3 files changed, 153 deletions(-) diff --git a/minzip/DirUtil.c b/minzip/DirUtil.c index 8dd5da1d..fe2c880a 100644 --- a/minzip/DirUtil.c +++ b/minzip/DirUtil.c @@ -234,61 +234,3 @@ dirUnlinkHierarchy(const char *path) /* delete target directory */ return rmdir(path); } - -int -dirSetHierarchyPermissions(const char *path, - int uid, int gid, int dirMode, int fileMode) -{ - struct stat st; - if (lstat(path, &st)) { - return -1; - } - - /* ignore symlinks */ - if (S_ISLNK(st.st_mode)) { - return 0; - } - - /* directories and files get different permissions */ - if (chown(path, uid, gid) || - chmod(path, S_ISDIR(st.st_mode) ? dirMode : fileMode)) { - return -1; - } - - /* recurse over directory components */ - if (S_ISDIR(st.st_mode)) { - DIR *dir = opendir(path); - if (dir == NULL) { - return -1; - } - - errno = 0; - const struct dirent *de; - while (errno == 0 && (de = readdir(dir)) != NULL) { - if (!strcmp(de->d_name, "..") || !strcmp(de->d_name, ".")) { - continue; - } - - char dn[PATH_MAX]; - snprintf(dn, sizeof(dn), "%s/%s", path, de->d_name); - if (!dirSetHierarchyPermissions(dn, uid, gid, dirMode, fileMode)) { - errno = 0; - } else if (errno == 0) { - errno = -1; - } - } - - if (errno != 0) { - int save = errno; - closedir(dir); - errno = save; - return -1; - } - - if (closedir(dir)) { - return -1; - } - } - - return 0; -} diff --git a/minzip/DirUtil.h b/minzip/DirUtil.h index a5cfa761..85a00128 100644 --- a/minzip/DirUtil.h +++ b/minzip/DirUtil.h @@ -48,14 +48,6 @@ int dirCreateHierarchy(const char *path, int mode, */ int dirUnlinkHierarchy(const char *path); -/* chown -R : - * chmod -R - * - * Sets directories to and files to . Skips symlinks. - */ -int dirSetHierarchyPermissions(const char *path, - int uid, int gid, int dirMode, int fileMode); - #ifdef __cplusplus } #endif diff --git a/updater/install.c b/updater/install.c index 0a859452..061aa7b5 100644 --- a/updater/install.c +++ b/updater/install.c @@ -524,88 +524,6 @@ Value* SymlinkFn(const char* name, State* state, int argc, Expr* argv[]) { return StringValue(strdup("")); } - -Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) { - char* result = NULL; - bool recursive = (strcmp(name, "set_perm_recursive") == 0); - - int min_args = 4 + (recursive ? 1 : 0); - if (argc < min_args) { - return ErrorAbort(state, "%s() expects %d+ args, got %d", - name, min_args, argc); - } - - char** args = ReadVarArgs(state, argc, argv); - if (args == NULL) return NULL; - - char* end; - int i; - int bad = 0; - - int uid = strtoul(args[0], &end, 0); - if (*end != '\0' || args[0][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid uid", name, args[0]); - goto done; - } - - int gid = strtoul(args[1], &end, 0); - if (*end != '\0' || args[1][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid gid", name, args[1]); - goto done; - } - - if (recursive) { - int dir_mode = strtoul(args[2], &end, 0); - if (*end != '\0' || args[2][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid dirmode", name, args[2]); - goto done; - } - - int file_mode = strtoul(args[3], &end, 0); - if (*end != '\0' || args[3][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid filemode", - name, args[3]); - goto done; - } - - for (i = 4; i < argc; ++i) { - dirSetHierarchyPermissions(args[i], uid, gid, dir_mode, file_mode); - } - } else { - int mode = strtoul(args[2], &end, 0); - if (*end != '\0' || args[2][0] == 0) { - ErrorAbort(state, "%s: \"%s\" not a valid mode", name, args[2]); - goto done; - } - - for (i = 3; i < argc; ++i) { - if (chown(args[i], uid, gid) < 0) { - printf("%s: chown of %s to %d %d failed: %s\n", - name, args[i], uid, gid, strerror(errno)); - ++bad; - } - if (chmod(args[i], mode) < 0) { - printf("%s: chmod of %s to %o failed: %s\n", - name, args[i], mode, strerror(errno)); - ++bad; - } - } - } - result = strdup(""); - -done: - for (i = 0; i < argc; ++i) { - free(args[i]); - } - free(args); - - if (bad) { - free(result); - return ErrorAbort(state, "%s: some changes failed", name); - } - return StringValue(result); -} - struct perm_parsed_args { bool has_uid; uid_t uid; @@ -1398,11 +1316,6 @@ void RegisterInstallFunctions() { RegisterFunction("package_extract_file", PackageExtractFileFn); RegisterFunction("symlink", SymlinkFn); - // Maybe, at some future point, we can delete these functions? They have been - // replaced by perm_set and perm_set_recursive. - RegisterFunction("set_perm", SetPermFn); - RegisterFunction("set_perm_recursive", SetPermFn); - // Usage: // set_metadata("filename", "key1", "value1", "key2", "value2", ...) // Example: From a5ef19fabd10428ccff2055455ef1a55dfdc5fa0 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Tue, 17 Sep 2013 13:39:10 -0700 Subject: [PATCH 010/110] recovery: fix epoll events type to uint32_t Change-Id: I5db9987102201c18821acb45d1f824e9865a1451 --- minui/events.c | 2 +- minui/minui.h | 4 ++-- ui.cpp | 2 +- ui.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/minui/events.c b/minui/events.c index 008a7d8d..df7dad44 100644 --- a/minui/events.c +++ b/minui/events.c @@ -168,7 +168,7 @@ void ev_dispatch(void) } } -int ev_get_input(int fd, unsigned int epevents, struct input_event *ev) +int ev_get_input(int fd, uint32_t epevents, struct input_event *ev) { int r; diff --git a/minui/minui.h b/minui/minui.h index ab08202f..573dd71f 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -50,7 +50,7 @@ unsigned int gr_get_height(gr_surface surface); // see http://www.mjmwired.net/kernel/Documentation/input/ for info. struct input_event; -typedef int (*ev_callback)(int fd, unsigned int epevents, void *data); +typedef int (*ev_callback)(int fd, uint32_t epevents, void *data); typedef int (*ev_set_key_callback)(int code, int value, void *data); int ev_init(ev_callback input_cb, void *data); @@ -65,7 +65,7 @@ int ev_sync_key_state(ev_set_key_callback set_key_cb, void *data); */ int ev_wait(int timeout); -int ev_get_input(int fd, unsigned int epevents, struct input_event *ev); +int ev_get_input(int fd, uint32_t epevents, struct input_event *ev); void ev_dispatch(void); int ev_get_epollfd(void); diff --git a/ui.cpp b/ui.cpp index 08c291dd..67a2500b 100644 --- a/ui.cpp +++ b/ui.cpp @@ -63,7 +63,7 @@ void RecoveryUI::Init() { } -int RecoveryUI::input_callback(int fd, unsigned int epevents, void* data) +int RecoveryUI::input_callback(int fd, uint32_t epevents, void* data) { struct input_event ev; int ret; diff --git a/ui.h b/ui.h index 22f3e5c5..8cc1da1b 100644 --- a/ui.h +++ b/ui.h @@ -134,7 +134,7 @@ private: pthread_t input_t; static void* input_thread(void* cookie); - static int input_callback(int fd, unsigned int epevents, void* data); + static int input_callback(int fd, uint32_t epevents, void* data); void process_key(int key_code, int updown); bool usb_connected(); From 30362a6ad132cbafde82cc57293e00679d4f86c2 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 10 Apr 2013 11:32:17 -0700 Subject: [PATCH 011/110] verifier: update to support certificates using SHA-256 (cherry picked from commit bac7fba02763ae5e78e8e4ba0bea727330ad953e) Change-Id: I01c38d7fea088622a8b0bbf2c833fa2d969417af --- applypatch/applypatch.c | 2 +- install.cpp | 2 +- testdata/otasigned_f4_sha256.zip | Bin 0 -> 5319 bytes testdata/otasigned_sha256.zip | Bin 0 -> 5326 bytes testdata/test_f4_sha256.x509.pem | 25 +++++ testdata/testkey.pk8 | Bin 0 -> 1217 bytes testdata/testkey.x509.pem | 27 ++++++ testdata/testkey_sha256.x509.pem | 27 ++++++ updater/install.c | 2 +- verifier.cpp | 80 ++++++++++++---- verifier.h | 9 +- verifier_test.cpp | 151 ++++++++++++++++--------------- verifier_test.sh | 38 ++++---- 13 files changed, 254 insertions(+), 109 deletions(-) create mode 100644 testdata/otasigned_f4_sha256.zip create mode 100644 testdata/otasigned_sha256.zip create mode 100644 testdata/test_f4_sha256.x509.pem create mode 100644 testdata/testkey.pk8 create mode 100644 testdata/testkey.x509.pem create mode 100644 testdata/testkey_sha256.x509.pem diff --git a/applypatch/applypatch.c b/applypatch/applypatch.c index 0dcdce0b..6b8da2a8 100644 --- a/applypatch/applypatch.c +++ b/applypatch/applypatch.c @@ -101,7 +101,7 @@ int LoadFileContents(const char* filename, FileContents* file, } } - SHA(file->data, file->size, file->sha1); + SHA_hash(file->data, file->size, file->sha1); return 0; } diff --git a/install.cpp b/install.cpp index 0f3298f1..0cb5cc7d 100644 --- a/install.cpp +++ b/install.cpp @@ -190,7 +190,7 @@ really_install_package(const char *path, int* wipe_cache) ui->Print("Opening update package...\n"); int numKeys; - RSAPublicKey* loadedKeys = load_keys(PUBLIC_KEYS_FILE, &numKeys); + Certificate* loadedKeys = load_keys(PUBLIC_KEYS_FILE, &numKeys); if (loadedKeys == NULL) { LOGE("Failed to load keys\n"); return INSTALL_CORRUPT; diff --git a/testdata/otasigned_f4_sha256.zip b/testdata/otasigned_f4_sha256.zip new file mode 100644 index 0000000000000000000000000000000000000000..3af408c402bb636a9b75d67b456d51a32b342fb0 GIT binary patch literal 5319 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 Rv;E^@Rf%uFL}DNK{{V--V{-ri literal 0 HcmV?d00001 diff --git a/testdata/test_f4_sha256.x509.pem b/testdata/test_f4_sha256.x509.pem new file mode 100644 index 00000000..9d5376b4 --- /dev/null +++ b/testdata/test_f4_sha256.x509.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIJAKhkCO1dDYMaMA0GCSqGSIb3DQEBCwUAMG8xCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBW +aWV3MQ8wDQYDVQQKEwZHb29nbGUxEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMT +B1Rlc3QxMjMwHhcNMTMwNDEwMTcyMzUyWhcNMTMwNTEwMTcyMzUyWjBvMQswCQYD +VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g +VmlldzEPMA0GA1UEChMGR29vZ2xlMRAwDgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQD +EwdUZXN0MTIzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu8WwMN9x +4Mz7YgkG2qy9g8/kl5ZoYrUM0ApHhaITAcL7RXLZaNipCf0w/YjYTQgj+75MK30x +TsnPeWNOEwA62gkHrZyyWfxBRO6kBYuIuI4roGDBJOmKQ1OEaDeIRKu7q5V8v3Cs +0wQDAQWTbhpxBZr9UYFgJUg8XWBfPrGJLVwsoiy4xrMhoTlNZKHfwOMMqVtSHkZX +qydYrcIzyjh+TO0e/xSNQ8MMRRbtqWgCHN6Rzhog3IHZu0RaPoukariopjXM/s0V +gTm3rHDHCOpna2pNblyiFlvbkoCs769mtNmx/yrDShO30jg/xaG8RypKDvTChzOT +oWW/XQ5VEXjbHwIDAQABo4HUMIHRMB0GA1UdDgQWBBRlT2dEZJY1tmUM8mZ0xnhS +GdD9TTCBoQYDVR0jBIGZMIGWgBRlT2dEZJY1tmUM8mZ0xnhSGdD9TaFzpHEwbzEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDU1vdW50 +YWluIFZpZXcxDzANBgNVBAoTBkdvb2dsZTEQMA4GA1UECxMHQW5kcm9pZDEQMA4G +A1UEAxMHVGVzdDEyM4IJAKhkCO1dDYMaMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN +AQELBQADggEBAKWWQ9S0V9wWjrMJe8exj1gklwD1Ysi0vi+h2tfixahelrpsNkWi +EFjoUSHEkW9ThLmtui646uAlwSiWtSn1XkGGmIJ3s+gmAFUcMc0CaK0dgoq/M9zn +fQ0Vkzc1tK4MLsf+CbPDywPycb6+T3dBkerbWn9GUpjGl1ANWlciXZZ3657m61sL +HhwUOBxbZZ6sYP4ed2SVCf45GgMyJ0VoUg5yI2JzPAgOkGfeEIPVXE1M94edJY4G +8eHYvXovJZwXvKFI+ZyS0KBPx8cpfw89RB9qmkxqNBIm8qWb3qBiuBEIPj+NF/7w +sC/Fv8NNXkVquy0xa0qdyJBABzWE18zGcXs= +-----END CERTIFICATE----- diff --git a/testdata/testkey.pk8 b/testdata/testkey.pk8 new file mode 100644 index 0000000000000000000000000000000000000000..586c1bd5cf96f9358f36b37ea98fef93f4d0a8e3 GIT binary patch literal 1217 zcmV;y1U~yPf&{$+0RS)!1_>&LNQUrr!ay9qXGc{0)hbn0M?Tk1m4CA zB(d$sV&K`>B|bjQZ0jB3{|1bx=)9=SYtwjcrwXTR<_^0LnKfDe**XXo? z!`w>qP$CUb2nRCYfR`8UY6UY{=BAYFEVJ^2prmHVdX(5ZF$p?nH!d$^62NY4Lh)D_ z-~I!E%nZ~-+HBp!xFlE^NCC4YWD`%n-k8ZKcSzgyXKGXpfmF!5$_KgPM^!Ts#A}-O zZ{F<8j%nw}qR@_bCLokQnR0zR1pacF9hu*ot~j8w7k{H2TWbF49|8db0)hbn0FMm2 zSd@eZZOil8LF+r^ZYh5=o$?dxssvrd@O{PJN8(UP#IeNlLarW*N_QWU=dJbtwUa9MNB6mRRfiD@u-F4570O|hs88oP`H<{-WtCyW#0(F+HjcFBTNtPVs zqOAxo7-A$eO)H3r6sgRe?MH7gF5FJ$Tk3bck@E0NKQy`twmC#7`?TOyTgJ~$><(c= zegFe}?aLXyS&y+x7cyW?K{hgS`ZOu%e`OsJB7tT%e$vUP84FySkKHZd#R8E)%>sde z0Gxnk4`^q&#Rvr|X}T^DSmg_(X~iRQqj#>*`b>&xVy7{s?@%B>l*r?UT zWofQjN z+qr0%Y;#)55J7EtGjdx74aSIRNZLvuA3cfg=kcW}3-?Ohe|UTbd3%Dz{Ubm)=h@$h z^0YwLsa02~o`+_B=3mQ)WXwP_fX>WJrp<9hszYeD7Xa?hso~qjW(SiJU+Bp}E&;YH zGXjBtV=ArL8r`H~*_EbpVp|2xsYW66=~;8`kD4v(aiPJi8`ByM)}o1ZhZ|~p>uyzH zw4p3uqoir?dUseWHOKf>xwmY}&%k#`MgFNpFR|mPj0O9er&4Gc#l%UD4Z+(RrHVV$ f`+data, args[0]->size, digest); + SHA_hash(args[0]->data, args[0]->size, digest); FreeValue(args[0]); if (argc == 1) { diff --git a/verifier.cpp b/verifier.cpp index 5f4c981e..782a8386 100644 --- a/verifier.cpp +++ b/verifier.cpp @@ -20,6 +20,7 @@ #include "mincrypt/rsa.h" #include "mincrypt/sha.h" +#include "mincrypt/sha256.h" #include #include @@ -34,7 +35,7 @@ extern RecoveryUI* ui; // Return VERIFY_SUCCESS, VERIFY_FAILURE (if any error is encountered // or no key matches the signature). -int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKeys) { +int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys) { ui->SetProgress(0.0); FILE* f = fopen(path, "rb"); @@ -68,6 +69,7 @@ int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKey } if (footer[2] != 0xff || footer[3] != 0xff) { + LOGE("footer is wrong\n"); fclose(f); return VERIFY_FAILURE; } @@ -139,8 +141,19 @@ int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKey #define BUFFER_SIZE 4096 - SHA_CTX ctx; - SHA_init(&ctx); + bool need_sha1 = false; + bool need_sha256 = false; + for (i = 0; i < numKeys; ++i) { + switch (pKeys[i].hash_len) { + case SHA_DIGEST_SIZE: need_sha1 = true; break; + case SHA256_DIGEST_SIZE: need_sha256 = true; break; + } + } + + SHA_CTX sha1_ctx; + SHA256_CTX sha256_ctx; + SHA_init(&sha1_ctx); + SHA256_init(&sha256_ctx); unsigned char* buffer = (unsigned char*)malloc(BUFFER_SIZE); if (buffer == NULL) { LOGE("failed to alloc memory for sha1 buffer\n"); @@ -159,7 +172,8 @@ int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKey fclose(f); return VERIFY_FAILURE; } - SHA_update(&ctx, buffer, size); + if (need_sha1) SHA_update(&sha1_ctx, buffer, size); + if (need_sha256) SHA256_update(&sha256_ctx, buffer, size); so_far += size; double f = so_far / (double)signed_len; if (f > frac + 0.02 || size == so_far) { @@ -170,12 +184,21 @@ int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKey fclose(f); free(buffer); - const uint8_t* sha1 = SHA_final(&ctx); + const uint8_t* sha1 = SHA_final(&sha1_ctx); + const uint8_t* sha256 = SHA256_final(&sha256_ctx); + for (i = 0; i < numKeys; ++i) { + const uint8_t* hash; + switch (pKeys[i].hash_len) { + case SHA_DIGEST_SIZE: hash = sha1; break; + case SHA256_DIGEST_SIZE: hash = sha256; break; + default: continue; + } + // The 6 bytes is the "(signature_start) $ff $ff (comment_size)" that // the signing tool appends after the signature itself. - if (RSA_verify(pKeys+i, eocd + eocd_size - 6 - RSANUMBYTES, - RSANUMBYTES, sha1)) { + if (RSA_verify(pKeys[i].public_key, eocd + eocd_size - 6 - RSANUMBYTES, + RSANUMBYTES, hash, pKeys[i].hash_len)) { LOGI("whole-file signature verified against key %d\n", i); free(eocd); return VERIFY_SUCCESS; @@ -207,10 +230,19 @@ int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKey // The file may contain multiple keys in this format, separated by // commas. The last key must not be followed by a comma. // +// A Certificate is a pair of an RSAPublicKey and a particular hash +// (we support SHA-1 and SHA-256; we store the hash length to signify +// which is being used). The hash used is implied by the version number. +// +// 1: 2048-bit RSA key with e=3 and SHA-1 hash +// 2: 2048-bit RSA key with e=65537 and SHA-1 hash +// 3: 2048-bit RSA key with e=3 and SHA-256 hash +// 4: 2048-bit RSA key with e=65537 and SHA-256 hash +// // Returns NULL if the file failed to parse, or if it contain zero keys. -RSAPublicKey* +Certificate* load_keys(const char* filename, int* numKeys) { - RSAPublicKey* out = NULL; + Certificate* out = NULL; *numKeys = 0; FILE* f = fopen(filename, "r"); @@ -224,24 +256,38 @@ load_keys(const char* filename, int* numKeys) { bool done = false; while (!done) { ++*numKeys; - out = (RSAPublicKey*)realloc(out, *numKeys * sizeof(RSAPublicKey)); - RSAPublicKey* key = out + (*numKeys - 1); + out = (Certificate*)realloc(out, *numKeys * sizeof(Certificate)); + Certificate* cert = out + (*numKeys - 1); + cert->public_key = (RSAPublicKey*)malloc(sizeof(RSAPublicKey)); char start_char; if (fscanf(f, " %c", &start_char) != 1) goto exit; if (start_char == '{') { // a version 1 key has no version specifier. - key->exponent = 3; + cert->public_key->exponent = 3; + cert->hash_len = SHA_DIGEST_SIZE; } else if (start_char == 'v') { int version; if (fscanf(f, "%d {", &version) != 1) goto exit; - if (version == 2) { - key->exponent = 65537; - } else { - goto exit; + switch (version) { + case 2: + cert->public_key->exponent = 65537; + cert->hash_len = SHA_DIGEST_SIZE; + break; + case 3: + cert->public_key->exponent = 3; + cert->hash_len = SHA256_DIGEST_SIZE; + break; + case 4: + cert->public_key->exponent = 65537; + cert->hash_len = SHA256_DIGEST_SIZE; + break; + default: + goto exit; } } + RSAPublicKey* key = cert->public_key; if (fscanf(f, " %i , 0x%x , { %u", &(key->len), &(key->n0inv), &(key->n[0])) != 3) { goto exit; @@ -274,7 +320,7 @@ load_keys(const char* filename, int* numKeys) { goto exit; } - LOGI("read key e=%d\n", key->exponent); + LOGI("read key e=%d hash=%d\n", key->exponent, cert->hash_len); } } diff --git a/verifier.h b/verifier.h index e9ef3b72..6ce1b44d 100644 --- a/verifier.h +++ b/verifier.h @@ -19,12 +19,17 @@ #include "mincrypt/rsa.h" +typedef struct Certificate { + int hash_len; // SHA_DIGEST_SIZE (SHA-1) or SHA256_DIGEST_SIZE (SHA-256) + RSAPublicKey* public_key; +} Certificate; + /* Look in the file for a signature footer, and verify that it * matches one of the given keys. Return one of the constants below. */ -int verify_file(const char* path, const RSAPublicKey *pKeys, unsigned int numKeys); +int verify_file(const char* path, const Certificate *pKeys, unsigned int numKeys); -RSAPublicKey* load_keys(const char* filename, int* numKeys); +Certificate* load_keys(const char* filename, int* numKeys); #define VERIFY_SUCCESS 0 #define VERIFY_FAILURE 1 diff --git a/verifier_test.cpp b/verifier_test.cpp index 2ef52a0f..1063cbae 100644 --- a/verifier_test.cpp +++ b/verifier_test.cpp @@ -21,80 +21,82 @@ #include "common.h" #include "verifier.h" #include "ui.h" +#include "mincrypt/sha.h" +#include "mincrypt/sha256.h" // This is build/target/product/security/testkey.x509.pem after being // dumped out by dumpkey.jar. RSAPublicKey test_key = { 64, 0xc926ad21, - { 1795090719, 2141396315, 950055447, -1713398866, - -26044131, 1920809988, 546586521, -795969498, - 1776797858, -554906482, 1805317999, 1429410244, - 129622599, 1422441418, 1783893377, 1222374759, - -1731647369, 323993566, 28517732, 609753416, - 1826472888, 215237850, -33324596, -245884705, - -1066504894, 774857746, 154822455, -1797768399, - -1536767878, -1275951968, -1500189652, 87251430, - -1760039318, 120774784, 571297800, -599067824, - -1815042109, -483341846, -893134306, -1900097649, - -1027721089, 950095497, 555058928, 414729973, - 1136544882, -1250377212, 465547824, -236820568, - -1563171242, 1689838846, -404210357, 1048029507, - 895090649, 247140249, 178744550, -747082073, - -1129788053, 109881576, -350362881, 1044303212, - -522594267, -1309816990, -557446364, -695002876}, - { -857949815, -510492167, -1494742324, -1208744608, - 251333580, 2131931323, 512774938, 325948880, - -1637480859, 2102694287, -474399070, 792812816, - 1026422502, 2053275343, -1494078096, -1181380486, - 165549746, -21447327, -229719404, 1902789247, - 772932719, -353118870, -642223187, 216871947, - -1130566647, 1942378755, -298201445, 1055777370, - 964047799, 629391717, -2062222979, -384408304, - 191868569, -1536083459, -612150544, -1297252564, - -1592438046, -724266841, -518093464, -370899750, - -739277751, -1536141862, 1323144535, 61311905, - 1997411085, 376844204, 213777604, -217643712, - 9135381, 1625809335, -1490225159, -1342673351, - 1117190829, -57654514, 1825108855, -1281819325, - 1111251351, -1726129724, 1684324211, -1773988491, - 367251975, 810756730, -1941182952, 1175080310 }, + { 0x6afee91fu, 0x7fa31d5bu, 0x38a0b217u, 0x99df9baeu, + 0xfe72991du, 0x727d3c04u, 0x20943f99u, 0xd08e7826u, + 0x69e7c8a2u, 0xdeeccc8eu, 0x6b9af76fu, 0x553311c4u, + 0x07b9e247u, 0x54c8bbcau, 0x6a540d81u, 0x48dbf567u, + 0x98c92877u, 0x134fbfdeu, 0x01b32564u, 0x24581948u, + 0x6cddc3b8u, 0x0cd444dau, 0xfe0381ccu, 0xf15818dfu, + 0xc06e6d42u, 0x2e2f6412u, 0x093a6737u, 0x94d83b31u, + 0xa466c87au, 0xb3f284a0u, 0xa694ec2cu, 0x053359e6u, + 0x9717ee6au, 0x0732e080u, 0x220d5008u, 0xdc4af350u, + 0x93d0a7c3u, 0xe330c9eau, 0xcac3da1eu, 0x8ebecf8fu, + 0xc2be387fu, 0x38a14e89u, 0x211586f0u, 0x18b846f5u, + 0x43be4c72u, 0xb578c204u, 0x1bbfb230u, 0xf1e267a8u, + 0xa2d3e656u, 0x64b8e4feu, 0xe7e83d4bu, 0x3e77a943u, + 0x3559ffd9u, 0x0ebb0f99u, 0x0aa76ce6u, 0xd3786ea7u, + 0xbca8cd6bu, 0x068ca8e8u, 0xeb1de2ffu, 0x3e3ecd6cu, + 0xe0d9d825u, 0xb1edc762u, 0xdec60b24u, 0xd6931904u}, + { 0xccdcb989u, 0xe19281f9u, 0xa6e80accu, 0xb7f40560u, + 0x0efb0bccu, 0x7f12b0bbu, 0x1e90531au, 0x136d95d0u, + 0x9e660665u, 0x7d54918fu, 0xe3b93ea2u, 0x2f415d10u, + 0x3d2df6e6u, 0x7a627ecfu, 0xa6f22d70u, 0xb995907au, + 0x09de16b2u, 0xfeb8bd61u, 0xf24ec294u, 0x716a427fu, + 0x2e12046fu, 0xeaf3d56au, 0xd9b873adu, 0x0ced340bu, + 0xbc9cec09u, 0x73c65903u, 0xee39ce9bu, 0x3eede25au, + 0x397633b7u, 0x2583c165u, 0x8514f97du, 0xe9166510u, + 0x0b6fae99u, 0xa47139fdu, 0xdb8352f0u, 0xb2ad7f2cu, + 0xa11552e2u, 0xd4d490a7u, 0xe11e8568u, 0xe9e484dau, + 0xd3ef8449u, 0xa47055dau, 0x4edd9557u, 0x03a78ba1u, + 0x770e130du, 0x16762facu, 0x0cbdfcc4u, 0xf3070540u, + 0x008b6515u, 0x60e7e1b7u, 0xa72cf7f9u, 0xaff86e39u, + 0x4296faadu, 0xfc90430eu, 0x6cc8f377u, 0xb398fd43u, + 0x423c5997u, 0x991d59c4u, 0x6464bf73u, 0x96431575u, + 0x15e3d207u, 0x30532a7au, 0x8c4be618u, 0x460a4d76u }, 3 }; RSAPublicKey test_f4_key = { 64, 0xc9bd1f21, - { 293133087u, 3210546773u, 865313125u, 250921607u, - 3158780490u, 943703457u, 1242806226u, 2986289859u, - 2942743769u, 2457906415u, 2719374299u, 1783459420u, - 149579627u, 3081531591u, 3440738617u, 2788543742u, - 2758457512u, 1146764939u, 3699497403u, 2446203424u, - 1744968926u, 1159130537u, 2370028300u, 3978231572u, - 3392699980u, 1487782451u, 1180150567u, 2841334302u, - 3753960204u, 961373345u, 3333628321u, 748825784u, - 2978557276u, 1566596926u, 1613056060u, 2600292737u, - 1847226629u, 50398611u, 1890374404u, 2878700735u, - 2286201787u, 1401186359u, 619285059u, 731930817u, - 2340993166u, 1156490245u, 2992241729u, 151498140u, - 318782170u, 3480838990u, 2100383433u, 4223552555u, - 3628927011u, 4247846280u, 1759029513u, 4215632601u, - 2719154626u, 3490334597u, 1751299340u, 3487864726u, - 3668753795u, 4217506054u, 3748782284u, 3150295088u }, - { 1772626313u, 445326068u, 3477676155u, 1758201194u, - 2986784722u, 491035581u, 3922936562u, 702212696u, - 2979856666u, 3324974564u, 2488428922u, 3056318590u, - 1626954946u, 664714029u, 398585816u, 3964097931u, - 3356701905u, 2298377729u, 2040082097u, 3025491477u, - 539143308u, 3348777868u, 2995302452u, 3602465520u, - 212480763u, 2691021393u, 1307177300u, 704008044u, - 2031136606u, 1054106474u, 3838318865u, 2441343869u, - 1477566916u, 700949900u, 2534790355u, 3353533667u, - 336163563u, 4106790558u, 2701448228u, 1571536379u, - 1103842411u, 3623110423u, 1635278839u, 1577828979u, - 910322800u, 715583630u, 138128831u, 1017877531u, - 2289162787u, 447994798u, 1897243165u, 4121561445u, - 4150719842u, 2131821093u, 2262395396u, 3305771534u, - 980753571u, 3256525190u, 3128121808u, 1072869975u, - 3507939515u, 4229109952u, 118381341u, 2209831334u }, + { 0x1178db1fu, 0xbf5d0e55u, 0x3393a165u, 0x0ef4c287u, + 0xbc472a4au, 0x383fc5a1u, 0x4a13b7d2u, 0xb1ff2ac3u, + 0xaf66b4d9u, 0x9280acefu, 0xa2165bdbu, 0x6a4d6e5cu, + 0x08ea676bu, 0xb7ac70c7u, 0xcd158139u, 0xa635ccfeu, + 0xa46ab8a8u, 0x445a3e8bu, 0xdc81d9bbu, 0x91ce1a20u, + 0x68021cdeu, 0x4516eda9u, 0x8d43c30cu, 0xed1eff14u, + 0xca387e4cu, 0x58adc233u, 0x4657ab27u, 0xa95b521eu, + 0xdfc0e30cu, 0x394d64a1u, 0xc6b321a1u, 0x2ca22cb8u, + 0xb1892d5cu, 0x5d605f3eu, 0x6025483cu, 0x9afd5181u, + 0x6e1a7105u, 0x03010593u, 0x70acd304u, 0xab957cbfu, + 0x8844abbbu, 0x53846837u, 0x24e98a43u, 0x2ba060c1u, + 0x8b88b88eu, 0x44eea405u, 0xb259fc41u, 0x0907ad9cu, + 0x13003adau, 0xcf79634eu, 0x7d314ec9u, 0xfbbe4c2bu, + 0xd84d0823u, 0xfd30fd88u, 0x68d8a909u, 0xfb4572d9u, + 0xa21301c2u, 0xd00a4785u, 0x6862b50cu, 0xcfe49796u, + 0xdaacbd83u, 0xfb620906u, 0xdf71e0ccu, 0xbbc5b030u }, + { 0x69a82189u, 0x1a8b22f4u, 0xcf49207bu, 0x68cc056au, + 0xb206b7d2u, 0x1d449bbdu, 0xe9d342f2u, 0x29daea58u, + 0xb19d011au, 0xc62f15e4u, 0x9452697au, 0xb62bb87eu, + 0x60f95cc2u, 0x279ebb2du, 0x17c1efd8u, 0xec47558bu, + 0xc81334d1u, 0x88fe7601u, 0x79992eb1u, 0xb4555615u, + 0x2022ac8cu, 0xc79a4b8cu, 0xb288b034u, 0xd6b942f0u, + 0x0caa32fbu, 0xa065ba51u, 0x4de9f154u, 0x29f64f6cu, + 0x7910af5eu, 0x3ed4636au, 0xe4c81911u, 0x9183f37du, + 0x5811e1c4u, 0x29c7a58cu, 0x9715d4d3u, 0xc7e2dce3u, + 0x140972ebu, 0xf4c8a69eu, 0xa104d424u, 0x5dabbdfbu, + 0x41cb4c6bu, 0xd7f44717u, 0x61785ff7u, 0x5e0bc273u, + 0x36426c70u, 0x2aa6f08eu, 0x083badbfu, 0x3cab941bu, + 0x8871da23u, 0x1ab3dbaeu, 0x7115a21du, 0xf5aa0965u, + 0xf766f562u, 0x7f110225u, 0x86d96a04u, 0xc50a120eu, + 0x3a751ca3u, 0xc21aa186u, 0xba7359d0u, 0x3ff2b257u, + 0xd116e8bbu, 0xfc1318c0u, 0x070e5b1du, 0x83b759a6u }, 65537 }; @@ -136,30 +138,37 @@ ui_print(const char* format, ...) { int main(int argc, char **argv) { if (argc < 2 || argc > 4) { - fprintf(stderr, "Usage: %s [-f4 | -file ] \n", argv[0]); + fprintf(stderr, "Usage: %s [-sha256] [-f4 | -file ] \n", argv[0]); return 2; } - RSAPublicKey* key = &test_key; + Certificate default_cert; + Certificate* cert = &default_cert; + cert->public_key = &test_key; + cert->hash_len = SHA_DIGEST_SIZE; int num_keys = 1; ++argv; + if (strcmp(argv[0], "-sha256") == 0) { + ++argv; + cert->hash_len = SHA256_DIGEST_SIZE; + } if (strcmp(argv[0], "-f4") == 0) { ++argv; - key = &test_f4_key; + cert->public_key = &test_f4_key; } else if (strcmp(argv[0], "-file") == 0) { ++argv; - key = load_keys(argv[0], &num_keys); + cert = load_keys(argv[0], &num_keys); ++argv; } ui = new FakeUI(); - int result = verify_file(*argv, key, num_keys); + int result = verify_file(*argv, cert, num_keys); if (result == VERIFY_SUCCESS) { - printf("SUCCESS\n"); + printf("VERIFIED\n"); return 0; } else if (result == VERIFY_FAILURE) { - printf("FAILURE\n"); + printf("NOT VERIFIED\n"); return 1; } else { printf("bad return value\n"); diff --git a/verifier_test.sh b/verifier_test.sh index 378b0e5f..65f77f40 100755 --- a/verifier_test.sh +++ b/verifier_test.sh @@ -64,33 +64,39 @@ $ADB push $ANDROID_PRODUCT_OUT/system/bin/verifier_test \ expect_succeed() { testname "$1 (should succeed)" $ADB push $DATA_DIR/$1 $WORK_DIR/package.zip - run_command $WORK_DIR/verifier_test $WORK_DIR/package.zip || fail + shift + run_command $WORK_DIR/verifier_test "$@" $WORK_DIR/package.zip || fail } expect_fail() { testname "$1 (should fail)" $ADB push $DATA_DIR/$1 $WORK_DIR/package.zip - run_command $WORK_DIR/verifier_test $WORK_DIR/package.zip && fail -} - -expect_succeed_f4() { - testname "$1 (should succeed)" - $ADB push $DATA_DIR/$1 $WORK_DIR/package.zip - run_command $WORK_DIR/verifier_test -f4 $WORK_DIR/package.zip || fail -} - -expect_fail_f4() { - testname "$1 (should fail)" - $ADB push $DATA_DIR/$1 $WORK_DIR/package.zip - run_command $WORK_DIR/verifier_test -f4 $WORK_DIR/package.zip && fail + shift + run_command $WORK_DIR/verifier_test "$@" $WORK_DIR/package.zip && fail } +# not signed at all expect_fail unsigned.zip +# signed in the pre-donut way expect_fail jarsigned.zip + +# success cases expect_succeed otasigned.zip -expect_fail_f4 otasigned.zip -expect_succeed_f4 otasigned_f4.zip +expect_succeed otasigned_f4.zip -f4 +expect_succeed otasigned_sha256.zip -sha256 +expect_succeed otasigned_f4_sha256.zip -sha256 -f4 + +# verified against different key +expect_fail otasigned.zip -f4 expect_fail otasigned_f4.zip + +# verified against right key but wrong hash algorithm +expect_fail otasigned.zip -sha256 +expect_fail otasigned_f4.zip -sha256 -f4 +expect_fail otasigned_sha256.zip +expect_fail otasigned_f4_sha256.zip -f4 + +# various other cases expect_fail random.zip expect_fail fake-eocd.zip expect_fail alter-metadata.zip From 58207b84d31c6c281aebf9384024203eadea5316 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 25 Sep 2013 16:41:07 -0700 Subject: [PATCH 012/110] fix use of RGBA images in minui Bug: 10934401 Change-Id: I471b30e5b2e877c620e4a0a524e950cddbc6d2c0 --- minui/resources.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/minui/resources.c b/minui/resources.c index c0a9ccac..b20c00ab 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -123,10 +123,18 @@ int res_create_surface(const char* name, gr_surface* pSurface) { surface->height = height; surface->stride = width; /* Yes, pixels, not bytes */ surface->data = pData; - surface->format = (channels == 3) ? GGL_PIXEL_FORMAT_RGBX_8888 : - ((color_type == PNG_COLOR_TYPE_PALETTE ? GGL_PIXEL_FORMAT_RGBA_8888 : GGL_PIXEL_FORMAT_L_8)); - int alpha = 0; + if (channels == 3) { + surface->format = GGL_PIXEL_FORMAT_RGBX_8888; + } else if (color_type == PNG_COLOR_TYPE_PALETTE) { + surface->format = GGL_PIXEL_FORMAT_RGBA_8888; + } else if (channels == 1) { + surface->format = GGL_PIXEL_FORMAT_L_8; + } else { + surface->format = GGL_PIXEL_FORMAT_RGBA_8888; + } + + int alpha = (channels == 4); if (color_type == PNG_COLOR_TYPE_PALETTE) { png_set_palette_to_rgb(png_ptr); } From 80a7a4642be31db7ecd5eaa9e62b78deaa461146 Mon Sep 17 00:00:00 2001 From: Bjorn Andersson Date: Fri, 30 Aug 2013 16:59:06 -0700 Subject: [PATCH 013/110] screen_ui: Initialize text buffer Zero initialize the text buffer to make recovery not render garbage when showing the menu or messages. Change-Id: I0dd0d357757f6b0fd52ad3b3617d42bb1b835245 --- screen_ui.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/screen_ui.cpp b/screen_ui.cpp index 93e26093..b53ab115 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -86,6 +86,8 @@ ScreenRecoveryUI::ScreenRecoveryUI() : for (int i = 0; i < 5; i++) backgroundIcon[i] = NULL; + memset(text, 0, sizeof(text)); + pthread_mutex_init(&updateMutex, NULL); self = this; } From 7a4adb5268ae71260c86788ccdeb7a699c80ee0a Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Wed, 9 Oct 2013 10:14:35 -0700 Subject: [PATCH 014/110] Add support for ECDSA signatures This adds support for key version 5 which is an EC key using the NIST P-256 curve parameters. OTAs may be signed with these keys using the ECDSA signature algorithm with SHA-256. Change-Id: Id88672a3deb70681c78d5ea0d739e10f839e4567 --- Android.mk | 11 +- asn1_decoder.cpp | 190 ++++++++++++++++++++++ asn1_decoder.h | 36 +++++ testdata/otasigned_ecdsa_sha256.zip | Bin 0 -> 3085 bytes testdata/testkey_ecdsa.pk8 | Bin 0 -> 138 bytes testdata/testkey_ecdsa.x509.pem | 10 ++ tests/Android.mk | 26 +++ tests/asn1_decoder_test.cpp | 238 ++++++++++++++++++++++++++++ verifier.cpp | 230 +++++++++++++++++++++++---- verifier.h | 17 +- verifier_test.cpp | 104 +++++++++--- verifier_test.sh | 22 ++- 12 files changed, 823 insertions(+), 61 deletions(-) create mode 100644 asn1_decoder.cpp create mode 100644 asn1_decoder.h create mode 100644 testdata/otasigned_ecdsa_sha256.zip create mode 100644 testdata/testkey_ecdsa.pk8 create mode 100644 testdata/testkey_ecdsa.x509.pem create mode 100644 tests/Android.mk create mode 100644 tests/asn1_decoder_test.cpp diff --git a/Android.mk b/Android.mk index 075fa2cf..3d615681 100644 --- a/Android.mk +++ b/Android.mk @@ -24,6 +24,7 @@ LOCAL_SRC_FILES := \ roots.cpp \ ui.cpp \ screen_ui.cpp \ + asn1_decoder.cpp \ verifier.cpp \ adb_install.cpp @@ -76,7 +77,13 @@ LOCAL_C_INCLUDES += system/extras/ext4_utils include $(BUILD_EXECUTABLE) - +# All the APIs for testing +include $(CLEAR_VARS) +LOCAL_MODULE := libverifier +LOCAL_MODULE_TAGS := tests +LOCAL_SRC_FILES := \ + asn1_decoder.cpp +include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := verifier_test @@ -84,6 +91,7 @@ LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := \ verifier_test.cpp \ + asn1_decoder.cpp \ verifier.cpp \ ui.cpp LOCAL_STATIC_LIBRARIES := \ @@ -100,6 +108,7 @@ include $(LOCAL_PATH)/minui/Android.mk \ $(LOCAL_PATH)/minzip/Android.mk \ $(LOCAL_PATH)/minadbd/Android.mk \ $(LOCAL_PATH)/mtdutils/Android.mk \ + $(LOCAL_PATH)/tests/Android.mk \ $(LOCAL_PATH)/tools/Android.mk \ $(LOCAL_PATH)/edify/Android.mk \ $(LOCAL_PATH)/updater/Android.mk \ diff --git a/asn1_decoder.cpp b/asn1_decoder.cpp new file mode 100644 index 00000000..7280f748 --- /dev/null +++ b/asn1_decoder.cpp @@ -0,0 +1,190 @@ +/* + * Copyright (C) 2013 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. + */ + +#include +#include + +#include "asn1_decoder.h" + + +typedef struct asn1_context { + size_t length; + uint8_t* p; + int app_type; +} asn1_context_t; + + +static const int kMaskConstructed = 0xE0; +static const int kMaskTag = 0x7F; +static const int kMaskAppType = 0x1F; + +static const int kTagOctetString = 0x04; +static const int kTagOid = 0x06; +static const int kTagSequence = 0x30; +static const int kTagSet = 0x31; +static const int kTagConstructed = 0xA0; + +asn1_context_t* asn1_context_new(uint8_t* buffer, size_t length) { + asn1_context_t* ctx = (asn1_context_t*) calloc(1, sizeof(asn1_context_t)); + if (ctx == NULL) { + return NULL; + } + ctx->p = buffer; + ctx->length = length; + return ctx; +} + +void asn1_context_free(asn1_context_t* ctx) { + free(ctx); +} + +static inline int peek_byte(asn1_context_t* ctx) { + if (ctx->length <= 0) { + return -1; + } + return *ctx->p; +} + +static inline int get_byte(asn1_context_t* ctx) { + if (ctx->length <= 0) { + return -1; + } + int byte = *ctx->p; + ctx->p++; + ctx->length--; + return byte; +} + +static inline bool skip_bytes(asn1_context_t* ctx, size_t num_skip) { + if (ctx->length < num_skip) { + return false; + } + ctx->p += num_skip; + ctx->length -= num_skip; + return true; +} + +static bool decode_length(asn1_context_t* ctx, size_t* out_len) { + int num_octets = get_byte(ctx); + if (num_octets == -1) { + return false; + } + if ((num_octets & 0x80) == 0x00) { + *out_len = num_octets; + return 1; + } + num_octets &= kMaskTag; + if ((size_t)num_octets >= sizeof(size_t)) { + return false; + } + size_t length = 0; + for (int i = 0; i < num_octets; ++i) { + int byte = get_byte(ctx); + if (byte == -1) { + return false; + } + length <<= 8; + length += byte; + } + *out_len = length; + return true; +} + +/** + * Returns the constructed type and advances the pointer. E.g. A0 -> 0 + */ +asn1_context_t* asn1_constructed_get(asn1_context_t* ctx) { + int type = get_byte(ctx); + if (type == -1 || (type & kMaskConstructed) != kTagConstructed) { + return NULL; + } + size_t length; + if (!decode_length(ctx, &length) || length > ctx->length) { + return NULL; + } + asn1_context_t* app_ctx = asn1_context_new(ctx->p, length); + app_ctx->app_type = type & kMaskAppType; + return app_ctx; +} + +bool asn1_constructed_skip_all(asn1_context_t* ctx) { + int byte = peek_byte(ctx); + while (byte != -1 && (byte & kMaskConstructed) == kTagConstructed) { + skip_bytes(ctx, 1); + size_t length; + if (!decode_length(ctx, &length) || !skip_bytes(ctx, length)) { + return false; + } + byte = peek_byte(ctx); + } + return byte != -1; +} + +int asn1_constructed_type(asn1_context_t* ctx) { + return ctx->app_type; +} + +asn1_context_t* asn1_sequence_get(asn1_context_t* ctx) { + if ((get_byte(ctx) & kMaskTag) != kTagSequence) { + return NULL; + } + size_t length; + if (!decode_length(ctx, &length) || length > ctx->length) { + return NULL; + } + return asn1_context_new(ctx->p, length); +} + +asn1_context_t* asn1_set_get(asn1_context_t* ctx) { + if ((get_byte(ctx) & kMaskTag) != kTagSet) { + return NULL; + } + size_t length; + if (!decode_length(ctx, &length) || length > ctx->length) { + return NULL; + } + return asn1_context_new(ctx->p, length); +} + +bool asn1_sequence_next(asn1_context_t* ctx) { + size_t length; + if (get_byte(ctx) == -1 || !decode_length(ctx, &length) || !skip_bytes(ctx, length)) { + return false; + } + return true; +} + +bool asn1_oid_get(asn1_context_t* ctx, uint8_t** oid, size_t* length) { + if (get_byte(ctx) != kTagOid) { + return false; + } + if (!decode_length(ctx, length) || *length == 0 || *length > ctx->length) { + return false; + } + *oid = ctx->p; + return true; +} + +bool asn1_octet_string_get(asn1_context_t* ctx, uint8_t** octet_string, size_t* length) { + if (get_byte(ctx) != kTagOctetString) { + return false; + } + if (!decode_length(ctx, length) || *length == 0 || *length > ctx->length) { + return false; + } + *octet_string = ctx->p; + return true; +} diff --git a/asn1_decoder.h b/asn1_decoder.h new file mode 100644 index 00000000..b17141c4 --- /dev/null +++ b/asn1_decoder.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2013 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. + */ + + +#ifndef ASN1_DECODER_H_ +#define ASN1_DECODER_H_ + +#include + +typedef struct asn1_context asn1_context_t; + +asn1_context_t* asn1_context_new(uint8_t* buffer, size_t length); +void asn1_context_free(asn1_context_t* ctx); +asn1_context_t* asn1_constructed_get(asn1_context_t* ctx); +bool asn1_constructed_skip_all(asn1_context_t* ctx); +int asn1_constructed_type(asn1_context_t* ctx); +asn1_context_t* asn1_sequence_get(asn1_context_t* ctx); +asn1_context_t* asn1_set_get(asn1_context_t* ctx); +bool asn1_sequence_next(asn1_context_t* seq); +bool asn1_oid_get(asn1_context_t* ctx, uint8_t** oid, size_t* length); +bool asn1_octet_string_get(asn1_context_t* ctx, uint8_t** octet_string, size_t* length); + +#endif /* ASN1_DECODER_H_ */ diff --git a/testdata/otasigned_ecdsa_sha256.zip b/testdata/otasigned_ecdsa_sha256.zip new file mode 100644 index 0000000000000000000000000000000000000000..999fcdd0faf8a46f533c648e64f8d43d8c88701f GIT binary patch literal 3085 zcmb_e2~<j2MpfXjNRHOw2zgSVh@?ZG&6ZyY?t-n^!U1z;>@4EZEd(U3)>}StF zAhCehEMu&xWYAC_4aH)I0UH6IKe_;5k24BDxS5g}d!hj#kR2Mz#oB*@l2#noSViFh z-xb8Zj|g5MJDj}+QRZVXEQ#=2L3n*cL~+AISt|%RU>!8XCljCWPa{DAljdx$MYprm z@#7xQ@!_z-xj`%)F3-o09nNECGb8dr`J}m}v=QB0U+jUnj&b1zi(0nkhU#9e6n8n> zmzdhh__%_f&V8$MeSYT7nK$p=DSfTxap;DMP}5glCFbzG^#QmK4Su-I-kOzM`1fB{ zRCDUvNt+|eAE~-YZL~;K))o?mEHJ8|5a)ZXYuM(p|@8{*13e+ z;QVdGz2fA||4zM}B=t;lJGv#!$yu9e$?oaq2+ZWrV@*fqTC4Fzj~}|o65DBJsEH}|7i}Fh zBq`I-G%lU#Ui>I$X*o(n@yVKX7zSZ&k?w@;Y0F~`TQ_eXEKJSnh%;;AE4Q(?IB>QQ z3k@5ijE0Y+G6KJT(XiDObF4=ZwAnIx!SX~3TXFmRSbjdgVE0M;UQ9RLm3TJ6{!Vel znbRHasW*PyHu_*`|Lgij!x9lbu2T!`=laT z$LnEiuZPV0o?sL!c?(L#MkQg2@iz3i2eYfS8SX-z4!d{;&z&MiKTQ4Lop%8v-=0_L z6T=#xGa9VsE4AI7HdG!!$1!qkMpT_%hEC^48_e5frfT$#zoGh_Ga!E%VW6Rid+UBB zFF5w82=Nc2AUT)jvhHuYhXv)PoiF=pp30OWB6nP=dKWuz&}88i!8N5;oqASvVDH9B zp;c-AGM z&B`07W}I+!92}y?^Wno`x48K5(<(cSANMOYNl&Y)OJ{9~2UW(^QqLST*81FG(A#|> z?OCj%^3`oB6NR@P+!(t}?C^S$Ub1(rt;Ac}A(>VGnPme0Mg@CPrK+6z*2xa}vU5J)PNeD&{gNrw%JezE|9IUUS|`*5|g`{XHKzTwAZ%1J@MnLdh?zs(%!8 zH2bn^ZHi2n6PH|n9i*OgL*$Q_Uvem&Js-kPx&As7P472&6V*3O$l)SqOwC6$Sb@2{ z*n#u;L<`NRf@@UUzQPNRcL%j*()Qmut{`g_7auL)#T*Un+Y4*C!(Uhg)T$;A>m52^ z>ziu2$veH+Q4!tT^GZ9dg?wt>;lh;t^{w|9XjL_hWUHqbaq&kDd)Z$>g>U~qi%+BK z2Krv`e)=$YK5$Xg-66VCctrgHx51=b5*43}N1Bt?Z@V8PKU5bUtjXNEpnVYTIqA20`&-_8cfTypIluVb~lS7NK ztRHqBXA(9VMQY8Q>gqo^k}uP2jWR z=T+nTF2~P09=}zp{kV4F*soD>3+HB1(id@Cq7Z&vqgvE_4McYAN;8DPvA|zz^q;EuujhX%wmsuh{93hM z#p^@ir`o+1yH>YXv4K$dsfvrSa=>aEmu&E21z)v1DEwb~zBZF&FA@vFstKWb{X3I{ zJgm(i`9X<$)~fABN@V!h!PcTB+4&S*g<6ZIQSBKh@vjbmfkrFD>5muy5W*vZ0yu0I z**Avl1V!ctLjX_!k3mcAOtDT`z{4=`LIFG&TJnd(V3f~5JX*>-#Tv#&AmK0+07|cJ zgcS;4@t^?qJ>+D#6i}adTD$ypX&s0~uY;0_OppjTNTW!DQfR~;Bw7}3zK0?UZWK?} z;jm8J18glPo)3>rQ34gki&&gIox@{?bJ#qxYY;0Sh!;V&=f#k1c`R@n5l_*jfS|!H z3I(L-x{_-hK@f*0=8Z@e1wjWuOSlps z@N@S!Yl|igxndj%>c1o%EmSf6YPR)i<&H^?KKz_WyhZj(UD<=3ccmR=IxBDrhUTwW zKYOx^YMbtCTF|kYz)<)tAioh}3UvINY9LAE8tx@{MOv@i;3fCBA!f<%?-f*!UA7V4 zGMk(bsMmzL(KNos^-ei;IzTr_*se}3d70gFa_27TZm%cWw-cVtVAV*GEJXHt-khRT KB7AvS2>&OA>Pu|^ literal 0 HcmV?d00001 diff --git a/testdata/testkey_ecdsa.pk8 b/testdata/testkey_ecdsa.pk8 new file mode 100644 index 0000000000000000000000000000000000000000..9a521c8cfce6deb247fd4bef72975f64607b8b67 GIT binary patch literal 138 zcmXqLY-eI*Fc4;A*J|@PXUoLM#sOw9GqSVf8e}suGO{SxSOw`k3OV+8>X(%kOq$Hu zG5W8+TE#q1+4(Z_@*b9qtqWb4ofufs`K~g&I1t<7x=So9K|(o8+;5+c3{%Ci$s%H> qu7&+l+1k>3Q^I%0%gWw~>pi3e6#6s&cg^qFImt(?sg_rK);$1TVKhDf literal 0 HcmV?d00001 diff --git a/testdata/testkey_ecdsa.x509.pem b/testdata/testkey_ecdsa.x509.pem new file mode 100644 index 00000000..b1228364 --- /dev/null +++ b/testdata/testkey_ecdsa.x509.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE----- +MIIBezCCASACCQC4g5wurPSmtzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJBVTET +MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ +dHkgTHRkMB4XDTEzMTAwODIxMTAxM1oXDTE0MTAwODIxMTAxM1owRTELMAkGA1UE +BhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp +ZGdpdHMgUHR5IEx0ZDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGcO1QDowF2E +RboWVmAYI2oXTr5MHAJ4xpMUFsrWVvoktYSN2RhNuOl5jZGvSBsQII9p/4qfjLmS +TBaCfQ0Xmt4wCgYIKoZIzj0EAwIDSQAwRgIhAIJjWmZAwngc2VcHUhYp2oSLoCQ+ +P+7AtbAn5242AqfOAiEAghO0t6jTKs0LUhLJrQwbOkHyZMVdZaG2vcwV9y9H5Qc= +-----END CERTIFICATE----- diff --git a/tests/Android.mk b/tests/Android.mk new file mode 100644 index 00000000..4d99d524 --- /dev/null +++ b/tests/Android.mk @@ -0,0 +1,26 @@ +# Build the unit tests. +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +# Build the unit tests. +test_src_files := \ + asn1_decoder_test.cpp + +shared_libraries := \ + liblog \ + libcutils + +static_libraries := \ + libgtest \ + libgtest_main \ + libverifier + +$(foreach file,$(test_src_files), \ + $(eval include $(CLEAR_VARS)) \ + $(eval LOCAL_SHARED_LIBRARIES := $(shared_libraries)) \ + $(eval LOCAL_STATIC_LIBRARIES := $(static_libraries)) \ + $(eval LOCAL_SRC_FILES := $(file)) \ + $(eval LOCAL_MODULE := $(notdir $(file:%.cpp=%))) \ + $(eval LOCAL_C_INCLUDES := $(LOCAL_PATH)/..) \ + $(eval include $(BUILD_NATIVE_TEST)) \ +) \ No newline at end of file diff --git a/tests/asn1_decoder_test.cpp b/tests/asn1_decoder_test.cpp new file mode 100644 index 00000000..af96d87d --- /dev/null +++ b/tests/asn1_decoder_test.cpp @@ -0,0 +1,238 @@ +/* + * Copyright (C) 2013 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. + */ + +#define LOG_TAG "asn1_decoder_test" + +#include +#include +#include +#include + +#include "asn1_decoder.h" + +namespace android { + +class Asn1DecoderTest : public testing::Test { +}; + +TEST_F(Asn1DecoderTest, Empty_Failure) { + uint8_t empty[] = { }; + asn1_context_t* ctx = asn1_context_new(empty, sizeof(empty)); + + EXPECT_EQ(NULL, asn1_constructed_get(ctx)); + EXPECT_FALSE(asn1_constructed_skip_all(ctx)); + EXPECT_EQ(0, asn1_constructed_type(ctx)); + EXPECT_EQ(NULL, asn1_sequence_get(ctx)); + EXPECT_EQ(NULL, asn1_set_get(ctx)); + EXPECT_FALSE(asn1_sequence_next(ctx)); + + uint8_t* junk; + size_t length; + EXPECT_FALSE(asn1_oid_get(ctx, &junk, &length)); + EXPECT_FALSE(asn1_octet_string_get(ctx, &junk, &length)); + + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, ConstructedGet_TruncatedLength_Failure) { + uint8_t truncated[] = { 0xA0, 0x82, }; + asn1_context_t* ctx = asn1_context_new(truncated, sizeof(truncated)); + EXPECT_EQ(NULL, asn1_constructed_get(ctx)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, ConstructedGet_LengthTooBig_Failure) { + uint8_t truncated[] = { 0xA0, 0x8a, 0xA5, 0x5A, 0xA5, 0x5A, + 0xA5, 0x5A, 0xA5, 0x5A, 0xA5, 0x5A, }; + asn1_context_t* ctx = asn1_context_new(truncated, sizeof(truncated)); + EXPECT_EQ(NULL, asn1_constructed_get(ctx)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, ConstructedGet_TooSmallForChild_Failure) { + uint8_t data[] = { 0xA5, 0x02, 0x06, 0x01, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + asn1_context_t* ptr = asn1_constructed_get(ctx); + ASSERT_NE((asn1_context_t*)NULL, ptr); + EXPECT_EQ(5, asn1_constructed_type(ptr)); + uint8_t* oid; + size_t length; + EXPECT_FALSE(asn1_oid_get(ptr, &oid, &length)); + asn1_context_free(ptr); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, ConstructedGet_Success) { + uint8_t data[] = { 0xA5, 0x03, 0x06, 0x01, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + asn1_context_t* ptr = asn1_constructed_get(ctx); + ASSERT_NE((asn1_context_t*)NULL, ptr); + EXPECT_EQ(5, asn1_constructed_type(ptr)); + uint8_t* oid; + size_t length; + ASSERT_TRUE(asn1_oid_get(ptr, &oid, &length)); + EXPECT_EQ(1U, length); + EXPECT_EQ(0x01U, *oid); + asn1_context_free(ptr); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, ConstructedSkipAll_TruncatedLength_Failure) { + uint8_t truncated[] = { 0xA2, 0x82, }; + asn1_context_t* ctx = asn1_context_new(truncated, sizeof(truncated)); + EXPECT_FALSE(asn1_constructed_skip_all(ctx)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, ConstructedSkipAll_Success) { + uint8_t data[] = { 0xA0, 0x03, 0x02, 0x01, 0x01, + 0xA1, 0x03, 0x02, 0x01, 0x01, + 0x06, 0x01, 0xA5, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + ASSERT_TRUE(asn1_constructed_skip_all(ctx)); + uint8_t* oid; + size_t length; + ASSERT_TRUE(asn1_oid_get(ctx, &oid, &length)); + EXPECT_EQ(1U, length); + EXPECT_EQ(0xA5U, *oid); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, SequenceGet_TruncatedLength_Failure) { + uint8_t truncated[] = { 0x30, 0x82, }; + asn1_context_t* ctx = asn1_context_new(truncated, sizeof(truncated)); + EXPECT_EQ(NULL, asn1_sequence_get(ctx)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, SequenceGet_TooSmallForChild_Failure) { + uint8_t data[] = { 0x30, 0x02, 0x06, 0x01, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + asn1_context_t* ptr = asn1_sequence_get(ctx); + ASSERT_NE((asn1_context_t*)NULL, ptr); + uint8_t* oid; + size_t length; + EXPECT_FALSE(asn1_oid_get(ptr, &oid, &length)); + asn1_context_free(ptr); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, SequenceGet_Success) { + uint8_t data[] = { 0x30, 0x03, 0x06, 0x01, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + asn1_context_t* ptr = asn1_sequence_get(ctx); + ASSERT_NE((asn1_context_t*)NULL, ptr); + uint8_t* oid; + size_t length; + ASSERT_TRUE(asn1_oid_get(ptr, &oid, &length)); + EXPECT_EQ(1U, length); + EXPECT_EQ(0x01U, *oid); + asn1_context_free(ptr); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, SetGet_TruncatedLength_Failure) { + uint8_t truncated[] = { 0x31, 0x82, }; + asn1_context_t* ctx = asn1_context_new(truncated, sizeof(truncated)); + EXPECT_EQ(NULL, asn1_set_get(ctx)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, SetGet_TooSmallForChild_Failure) { + uint8_t data[] = { 0x31, 0x02, 0x06, 0x01, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + asn1_context_t* ptr = asn1_set_get(ctx); + ASSERT_NE((asn1_context_t*)NULL, ptr); + uint8_t* oid; + size_t length; + EXPECT_FALSE(asn1_oid_get(ptr, &oid, &length)); + asn1_context_free(ptr); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, SetGet_Success) { + uint8_t data[] = { 0x31, 0x03, 0x06, 0x01, 0xBA, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + asn1_context_t* ptr = asn1_set_get(ctx); + ASSERT_NE((asn1_context_t*)NULL, ptr); + uint8_t* oid; + size_t length; + ASSERT_TRUE(asn1_oid_get(ptr, &oid, &length)); + EXPECT_EQ(1U, length); + EXPECT_EQ(0xBAU, *oid); + asn1_context_free(ptr); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, OidGet_LengthZero_Failure) { + uint8_t data[] = { 0x06, 0x00, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + uint8_t* oid; + size_t length; + EXPECT_FALSE(asn1_oid_get(ctx, &oid, &length)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, OidGet_TooSmall_Failure) { + uint8_t data[] = { 0x06, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + uint8_t* oid; + size_t length; + EXPECT_FALSE(asn1_oid_get(ctx, &oid, &length)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, OidGet_Success) { + uint8_t data[] = { 0x06, 0x01, 0x99, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + uint8_t* oid; + size_t length; + ASSERT_TRUE(asn1_oid_get(ctx, &oid, &length)); + EXPECT_EQ(1U, length); + EXPECT_EQ(0x99U, *oid); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, OctetStringGet_LengthZero_Failure) { + uint8_t data[] = { 0x04, 0x00, 0x55, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + uint8_t* string; + size_t length; + ASSERT_FALSE(asn1_octet_string_get(ctx, &string, &length)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, OctetStringGet_TooSmall_Failure) { + uint8_t data[] = { 0x04, 0x01, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + uint8_t* string; + size_t length; + ASSERT_FALSE(asn1_octet_string_get(ctx, &string, &length)); + asn1_context_free(ctx); +} + +TEST_F(Asn1DecoderTest, OctetStringGet_Success) { + uint8_t data[] = { 0x04, 0x01, 0xAA, }; + asn1_context_t* ctx = asn1_context_new(data, sizeof(data)); + uint8_t* string; + size_t length; + ASSERT_TRUE(asn1_octet_string_get(ctx, &string, &length)); + EXPECT_EQ(1U, length); + EXPECT_EQ(0xAAU, *string); + asn1_context_free(ctx); +} + +} // namespace android diff --git a/verifier.cpp b/verifier.cpp index 782a8386..0930fbd1 100644 --- a/verifier.cpp +++ b/verifier.cpp @@ -14,10 +14,14 @@ * limitations under the License. */ +#include "asn1_decoder.h" #include "common.h" -#include "verifier.h" #include "ui.h" +#include "verifier.h" +#include "mincrypt/dsa_sig.h" +#include "mincrypt/p256.h" +#include "mincrypt/p256_ecdsa.h" #include "mincrypt/rsa.h" #include "mincrypt/sha.h" #include "mincrypt/sha256.h" @@ -28,6 +32,78 @@ extern RecoveryUI* ui; +/* + * Simple version of PKCS#7 SignedData extraction. This extracts the + * signature OCTET STRING to be used for signature verification. + * + * For full details, see http://www.ietf.org/rfc/rfc3852.txt + * + * The PKCS#7 structure looks like: + * + * SEQUENCE (ContentInfo) + * OID (ContentType) + * [0] (content) + * SEQUENCE (SignedData) + * INTEGER (version CMSVersion) + * SET (DigestAlgorithmIdentifiers) + * SEQUENCE (EncapsulatedContentInfo) + * [0] (CertificateSet OPTIONAL) + * [1] (RevocationInfoChoices OPTIONAL) + * SET (SignerInfos) + * SEQUENCE (SignerInfo) + * INTEGER (CMSVersion) + * SEQUENCE (SignerIdentifier) + * SEQUENCE (DigestAlgorithmIdentifier) + * SEQUENCE (SignatureAlgorithmIdentifier) + * OCTET STRING (SignatureValue) + */ +static bool read_pkcs7(uint8_t* pkcs7_der, size_t pkcs7_der_len, uint8_t** sig_der, + size_t* sig_der_length) { + asn1_context_t* ctx = asn1_context_new(pkcs7_der, pkcs7_der_len); + if (ctx == NULL) { + return false; + } + + asn1_context_t* pkcs7_seq = asn1_sequence_get(ctx); + if (pkcs7_seq != NULL && asn1_sequence_next(pkcs7_seq)) { + asn1_context_t *signed_data_app = asn1_constructed_get(pkcs7_seq); + if (signed_data_app != NULL) { + asn1_context_t* signed_data_seq = asn1_sequence_get(signed_data_app); + if (signed_data_seq != NULL + && asn1_sequence_next(signed_data_seq) + && asn1_sequence_next(signed_data_seq) + && asn1_sequence_next(signed_data_seq) + && asn1_constructed_skip_all(signed_data_seq)) { + asn1_context_t *sig_set = asn1_set_get(signed_data_seq); + if (sig_set != NULL) { + asn1_context_t* sig_seq = asn1_sequence_get(sig_set); + if (sig_seq != NULL + && asn1_sequence_next(sig_seq) + && asn1_sequence_next(sig_seq) + && asn1_sequence_next(sig_seq) + && asn1_sequence_next(sig_seq)) { + uint8_t* sig_der_ptr; + if (asn1_octet_string_get(sig_seq, &sig_der_ptr, sig_der_length)) { + *sig_der = (uint8_t*) malloc(*sig_der_length); + if (*sig_der != NULL) { + memcpy(*sig_der, sig_der_ptr, *sig_der_length); + } + } + asn1_context_free(sig_seq); + } + asn1_context_free(sig_set); + } + asn1_context_free(signed_data_seq); + } + asn1_context_free(signed_data_app); + } + asn1_context_free(pkcs7_seq); + } + asn1_context_free(ctx); + + return *sig_der != NULL; +} + // Look for an RSA signature embedded in the .ZIP file comment given // the path to the zip. Verify it matches one of the given public // keys. @@ -79,9 +155,8 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys LOGI("comment is %d bytes; signature %d bytes from end\n", comment_size, signature_start); - if (signature_start - FOOTER_SIZE < RSANUMBYTES) { - // "signature" block isn't big enough to contain an RSA block. - LOGE("signature is too short\n"); + if (signature_start <= FOOTER_SIZE) { + LOGE("Signature start is in the footer"); fclose(f); return VERIFY_FAILURE; } @@ -187,6 +262,23 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys const uint8_t* sha1 = SHA_final(&sha1_ctx); const uint8_t* sha256 = SHA256_final(&sha256_ctx); + uint8_t* sig_der = NULL; + size_t sig_der_length = 0; + + size_t signature_size = signature_start - FOOTER_SIZE; + if (!read_pkcs7(eocd + eocd_size - signature_start, signature_size, &sig_der, + &sig_der_length)) { + LOGE("Could not find signature DER block\n"); + free(eocd); + return VERIFY_FAILURE; + } + free(eocd); + + /* + * Check to make sure at least one of the keys matches the signature. Since + * any key can match, we need to try each before determining a verification + * failure has happened. + */ for (i = 0; i < numKeys; ++i) { const uint8_t* hash; switch (pKeys[i].hash_len) { @@ -197,16 +289,46 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys // The 6 bytes is the "(signature_start) $ff $ff (comment_size)" that // the signing tool appends after the signature itself. - if (RSA_verify(pKeys[i].public_key, eocd + eocd_size - 6 - RSANUMBYTES, - RSANUMBYTES, hash, pKeys[i].hash_len)) { - LOGI("whole-file signature verified against key %d\n", i); - free(eocd); + if (pKeys[i].key_type == Certificate::RSA) { + if (sig_der_length < RSANUMBYTES) { + // "signature" block isn't big enough to contain an RSA block. + LOGI("signature is too short for RSA key %d\n", i); + continue; + } + + if (!RSA_verify(pKeys[i].rsa, sig_der, RSANUMBYTES, + hash, pKeys[i].hash_len)) { + LOGI("failed to verify against RSA key %d\n", i); + continue; + } + + LOGI("whole-file signature verified against RSA key %d\n", i); + free(sig_der); + return VERIFY_SUCCESS; + } else if (pKeys[i].key_type == Certificate::EC + && pKeys[i].hash_len == SHA256_DIGEST_SIZE) { + p256_int r, s; + if (!dsa_sig_unpack(sig_der, sig_der_length, &r, &s)) { + LOGI("Not a DSA signature block for EC key %d\n", i); + continue; + } + + p256_int p256_hash; + p256_from_bin(hash, &p256_hash); + if (!p256_ecdsa_verify(&(pKeys[i].ec->x), &(pKeys[i].ec->y), + &p256_hash, &r, &s)) { + LOGI("failed to verify against EC key %d\n", i); + continue; + } + + LOGI("whole-file signature verified against EC key %d\n", i); + free(sig_der); return VERIFY_SUCCESS; } else { - LOGI("failed to verify against key %d\n", i); + LOGI("Unknown key type %d\n", pKeys[i].key_type); } } - free(eocd); + free(sig_der); LOGE("failed to verify whole-file signature\n"); return VERIFY_FAILURE; } @@ -238,6 +360,7 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys // 2: 2048-bit RSA key with e=65537 and SHA-1 hash // 3: 2048-bit RSA key with e=3 and SHA-256 hash // 4: 2048-bit RSA key with e=65537 and SHA-256 hash +// 5: 256-bit EC key using the NIST P-256 curve parameters and SHA-256 hash // // Returns NULL if the file failed to parse, or if it contain zero keys. Certificate* @@ -258,28 +381,41 @@ load_keys(const char* filename, int* numKeys) { ++*numKeys; out = (Certificate*)realloc(out, *numKeys * sizeof(Certificate)); Certificate* cert = out + (*numKeys - 1); - cert->public_key = (RSAPublicKey*)malloc(sizeof(RSAPublicKey)); + memset(cert, '\0', sizeof(Certificate)); char start_char; if (fscanf(f, " %c", &start_char) != 1) goto exit; if (start_char == '{') { // a version 1 key has no version specifier. - cert->public_key->exponent = 3; + cert->key_type = Certificate::RSA; + cert->rsa = (RSAPublicKey*)malloc(sizeof(RSAPublicKey)); + cert->rsa->exponent = 3; cert->hash_len = SHA_DIGEST_SIZE; } else if (start_char == 'v') { int version; if (fscanf(f, "%d {", &version) != 1) goto exit; switch (version) { case 2: - cert->public_key->exponent = 65537; + cert->key_type = Certificate::RSA; + cert->rsa = (RSAPublicKey*)malloc(sizeof(RSAPublicKey)); + cert->rsa->exponent = 65537; cert->hash_len = SHA_DIGEST_SIZE; break; case 3: - cert->public_key->exponent = 3; + cert->key_type = Certificate::RSA; + cert->rsa = (RSAPublicKey*)malloc(sizeof(RSAPublicKey)); + cert->rsa->exponent = 3; cert->hash_len = SHA256_DIGEST_SIZE; break; case 4: - cert->public_key->exponent = 65537; + cert->key_type = Certificate::RSA; + cert->rsa = (RSAPublicKey*)malloc(sizeof(RSAPublicKey)); + cert->rsa->exponent = 65537; + cert->hash_len = SHA256_DIGEST_SIZE; + break; + case 5: + cert->key_type = Certificate::EC; + cert->ec = (ECPublicKey*)calloc(1, sizeof(ECPublicKey)); cert->hash_len = SHA256_DIGEST_SIZE; break; default: @@ -287,23 +423,55 @@ load_keys(const char* filename, int* numKeys) { } } - RSAPublicKey* key = cert->public_key; - if (fscanf(f, " %i , 0x%x , { %u", - &(key->len), &(key->n0inv), &(key->n[0])) != 3) { + if (cert->key_type == Certificate::RSA) { + RSAPublicKey* key = cert->rsa; + if (fscanf(f, " %i , 0x%x , { %u", + &(key->len), &(key->n0inv), &(key->n[0])) != 3) { + goto exit; + } + if (key->len != RSANUMWORDS) { + LOGE("key length (%d) does not match expected size\n", key->len); + goto exit; + } + for (i = 1; i < key->len; ++i) { + if (fscanf(f, " , %u", &(key->n[i])) != 1) goto exit; + } + if (fscanf(f, " } , { %u", &(key->rr[0])) != 1) goto exit; + for (i = 1; i < key->len; ++i) { + if (fscanf(f, " , %u", &(key->rr[i])) != 1) goto exit; + } + fscanf(f, " } } "); + + LOGI("read key e=%d hash=%d\n", key->exponent, cert->hash_len); + } else if (cert->key_type == Certificate::EC) { + ECPublicKey* key = cert->ec; + int key_len; + unsigned int byte; + uint8_t x_bytes[P256_NBYTES]; + uint8_t y_bytes[P256_NBYTES]; + if (fscanf(f, " %i , { %u", &key_len, &byte) != 2) goto exit; + if (key_len != P256_NBYTES) { + LOGE("Key length (%d) does not match expected size %d\n", key_len, P256_NBYTES); + goto exit; + } + x_bytes[P256_NBYTES - 1] = byte; + for (i = P256_NBYTES - 2; i >= 0; --i) { + if (fscanf(f, " , %u", &byte) != 1) goto exit; + x_bytes[i] = byte; + } + if (fscanf(f, " } , { %u", &byte) != 1) goto exit; + y_bytes[P256_NBYTES - 1] = byte; + for (i = P256_NBYTES - 2; i >= 0; --i) { + if (fscanf(f, " , %u", &byte) != 1) goto exit; + y_bytes[i] = byte; + } + fscanf(f, " } } "); + p256_from_bin(x_bytes, &key->x); + p256_from_bin(y_bytes, &key->y); + } else { + LOGE("Unknown key type %d\n", cert->key_type); goto exit; } - if (key->len != RSANUMWORDS) { - LOGE("key length (%d) does not match expected size\n", key->len); - goto exit; - } - for (i = 1; i < key->len; ++i) { - if (fscanf(f, " , %u", &(key->n[i])) != 1) goto exit; - } - if (fscanf(f, " } , { %u", &(key->rr[0])) != 1) goto exit; - for (i = 1; i < key->len; ++i) { - if (fscanf(f, " , %u", &(key->rr[i])) != 1) goto exit; - } - fscanf(f, " } } "); // if the line ends in a comma, this file has more keys. switch (fgetc(f)) { @@ -319,8 +487,6 @@ load_keys(const char* filename, int* numKeys) { LOGE("unexpected character between keys\n"); goto exit; } - - LOGI("read key e=%d hash=%d\n", key->exponent, cert->hash_len); } } diff --git a/verifier.h b/verifier.h index 6ce1b44d..023d3bf8 100644 --- a/verifier.h +++ b/verifier.h @@ -17,11 +17,24 @@ #ifndef _RECOVERY_VERIFIER_H #define _RECOVERY_VERIFIER_H +#include "mincrypt/p256.h" #include "mincrypt/rsa.h" -typedef struct Certificate { +typedef struct { + p256_int x; + p256_int y; +} ECPublicKey; + +typedef struct { + typedef enum { + RSA, + EC, + } KeyType; + int hash_len; // SHA_DIGEST_SIZE (SHA-1) or SHA256_DIGEST_SIZE (SHA-256) - RSAPublicKey* public_key; + KeyType key_type; + RSAPublicKey* rsa; + ECPublicKey* ec; } Certificate; /* Look in the file for a signature footer, and verify that it diff --git a/verifier_test.cpp b/verifier_test.cpp index 1063cbae..88fcad4e 100644 --- a/verifier_test.cpp +++ b/verifier_test.cpp @@ -100,6 +100,18 @@ RSAPublicKey test_f4_key = 65537 }; +ECPublicKey test_ec_key = + { + { + {0xd656fa24u, 0x931416cau, 0x1c0278c6u, 0x174ebe4cu, + 0x6018236au, 0x45ba1656u, 0xe8c05d84u, 0x670ed500u} + }, + { + {0x0d179adeu, 0x4c16827du, 0x9f8cb992u, 0x8f69ff8au, + 0x481b1020u, 0x798d91afu, 0x184db8e9u, 0xb5848dd9u} + } + }; + RecoveryUI* ui = NULL; // verifier expects to find a UI object; we provide one that does @@ -136,34 +148,86 @@ ui_print(const char* format, ...) { va_end(ap); } +static Certificate* add_certificate(Certificate** certsp, int* num_keys, + Certificate::KeyType key_type) { + int i = *num_keys; + *num_keys = *num_keys + 1; + *certsp = (Certificate*) realloc(*certsp, *num_keys * sizeof(Certificate)); + Certificate* certs = *certsp; + certs[i].rsa = NULL; + certs[i].ec = NULL; + certs[i].key_type = key_type; + certs[i].hash_len = SHA_DIGEST_SIZE; + return &certs[i]; +} + int main(int argc, char **argv) { - if (argc < 2 || argc > 4) { - fprintf(stderr, "Usage: %s [-sha256] [-f4 | -file ] \n", argv[0]); + if (argc < 2) { + fprintf(stderr, "Usage: %s [-sha256] [-ec | -f4 | -file ] \n", argv[0]); + return 2; + } + Certificate* certs = NULL; + int num_keys = 0; + + int argn = 1; + while (argn < argc) { + if (strcmp(argv[argn], "-sha256") == 0) { + if (num_keys == 0) { + fprintf(stderr, "May only specify -sha256 after key type\n"); + return 2; + } + ++argn; + Certificate* cert = &certs[num_keys - 1]; + cert->hash_len = SHA256_DIGEST_SIZE; + } else if (strcmp(argv[argn], "-ec") == 0) { + ++argn; + Certificate* cert = add_certificate(&certs, &num_keys, Certificate::EC); + cert->ec = &test_ec_key; + } else if (strcmp(argv[argn], "-e3") == 0) { + ++argn; + Certificate* cert = add_certificate(&certs, &num_keys, Certificate::RSA); + cert->rsa = &test_key; + } else if (strcmp(argv[argn], "-f4") == 0) { + ++argn; + Certificate* cert = add_certificate(&certs, &num_keys, Certificate::RSA); + cert->rsa = &test_f4_key; + } else if (strcmp(argv[argn], "-file") == 0) { + if (certs != NULL) { + fprintf(stderr, "Cannot specify -file with other certs specified\n"); + return 2; + } + ++argn; + certs = load_keys(argv[argn], &num_keys); + ++argn; + } else if (argv[argn][0] == '-') { + fprintf(stderr, "Unknown argument %s\n", argv[argn]); + return 2; + } else { + break; + } + } + + if (argn == argc) { + fprintf(stderr, "Must specify package to verify\n"); return 2; } - Certificate default_cert; - Certificate* cert = &default_cert; - cert->public_key = &test_key; - cert->hash_len = SHA_DIGEST_SIZE; - int num_keys = 1; - ++argv; - if (strcmp(argv[0], "-sha256") == 0) { - ++argv; - cert->hash_len = SHA256_DIGEST_SIZE; - } - if (strcmp(argv[0], "-f4") == 0) { - ++argv; - cert->public_key = &test_f4_key; - } else if (strcmp(argv[0], "-file") == 0) { - ++argv; - cert = load_keys(argv[0], &num_keys); - ++argv; + if (num_keys == 0) { + certs = (Certificate*) calloc(1, sizeof(Certificate)); + if (certs == NULL) { + fprintf(stderr, "Failure allocating memory for default certificate\n"); + return 1; + } + certs->key_type = Certificate::RSA; + certs->rsa = &test_key; + certs->ec = NULL; + certs->hash_len = SHA_DIGEST_SIZE; + num_keys = 1; } ui = new FakeUI(); - int result = verify_file(*argv, cert, num_keys); + int result = verify_file(argv[argn], certs, num_keys); if (result == VERIFY_SUCCESS) { printf("VERIFIED\n"); return 0; diff --git a/verifier_test.sh b/verifier_test.sh index 65f77f40..4761cef4 100755 --- a/verifier_test.sh +++ b/verifier_test.sh @@ -81,20 +81,30 @@ expect_fail unsigned.zip expect_fail jarsigned.zip # success cases -expect_succeed otasigned.zip +expect_succeed otasigned.zip -e3 expect_succeed otasigned_f4.zip -f4 -expect_succeed otasigned_sha256.zip -sha256 -expect_succeed otasigned_f4_sha256.zip -sha256 -f4 +expect_succeed otasigned_sha256.zip -e3 -sha256 +expect_succeed otasigned_f4_sha256.zip -f4 -sha256 +expect_succeed otasigned_ecdsa_sha256.zip -ec -sha256 + +# success with multiple keys +expect_succeed otasigned.zip -f4 -e3 +expect_succeed otasigned_f4.zip -ec -f4 +expect_succeed otasigned_sha256.zip -ec -e3 -e3 -sha256 +expect_succeed otasigned_f4_sha256.zip -ec -sha256 -e3 -f4 -sha256 +expect_succeed otasigned_ecdsa_sha256.zip -f4 -sha256 -e3 -ec -sha256 # verified against different key expect_fail otasigned.zip -f4 -expect_fail otasigned_f4.zip +expect_fail otasigned_f4.zip -e3 +expect_fail otasigned_ecdsa_sha256.zip -e3 -sha256 # verified against right key but wrong hash algorithm -expect_fail otasigned.zip -sha256 -expect_fail otasigned_f4.zip -sha256 -f4 +expect_fail otasigned.zip -e3 -sha256 +expect_fail otasigned_f4.zip -f4 -sha256 expect_fail otasigned_sha256.zip expect_fail otasigned_f4_sha256.zip -f4 +expect_fail otasigned_ecdsa_sha256.zip # various other cases expect_fail random.zip From ce7ca7165bb263c91ca7616a21457032c645e23d Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Wed, 6 Nov 2013 17:42:20 -0800 Subject: [PATCH 015/110] Enable incremental builder to find files that moved, and try to process them via patch + rename, instead of delete + add. b/11437930 Change-Id: I984349fbc9a8dac4379e00c0d66fc7d22c4eb834 --- updater/install.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/updater/install.c b/updater/install.c index 0a859452..9fb1b63d 100644 --- a/updater/install.c +++ b/updater/install.c @@ -285,6 +285,40 @@ done: return StringValue(result); } +Value* RenameFn(const char* name, State* state, int argc, Expr* argv[]) { + char* result = NULL; + if (argc != 2) { + return ErrorAbort(state, "%s() expects 2 args, got %d", name, argc); + } + + char* src_name; + char* dst_name; + + if (ReadArgs(state, argv, 2, &src_name, &dst_name) < 0) { + return NULL; + } + if (strlen(src_name) == 0) { + ErrorAbort(state, "src_name argument to %s() can't be empty", name); + goto done; + } + if (strlen(dst_name) == 0) { + ErrorAbort(state, "dst_name argument to %s() can't be empty", + name); + goto done; + } + + if (rename(src_name, dst_name) != 0) { + ErrorAbort(state, "Rename of %s() to %s() failed, error %s()", + src_name, dst_name, strerror(errno)); + } else { + result = dst_name; + } + +done: + free(src_name); + if (result != dst_name) free(dst_name); + return StringValue(result); +} Value* DeleteFn(const char* name, State* state, int argc, Expr* argv[]) { char** paths = malloc(argc * sizeof(char*)); @@ -1425,6 +1459,7 @@ void RegisterInstallFunctions() { RegisterFunction("read_file", ReadFileFn); RegisterFunction("sha1_check", Sha1CheckFn); + RegisterFunction("rename", RenameFn); RegisterFunction("wipe_cache", WipeCacheFn); From 9b8ae8038be65c2ec236bc04590716fbcd5363f6 Mon Sep 17 00:00:00 2001 From: Alistair Strachan Date: Wed, 17 Jul 2013 10:34:36 -0700 Subject: [PATCH 016/110] Fix rare crash seen when dereferencing backgroundIcon[NONE]. Because backgroundIcon[] is not initialized by the ScreenRecoveryUI constructor, it should be initialized explicitly to NULL in Init(). If it is not initialized, ScreenRecoveryUI::SetBackground() can fail for the NONE icon because the NULL test can fail and junk will be dereferenced. Change-Id: I4e3738d2e241ed90df43c984fb41e0072933f50a --- screen_ui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/screen_ui.cpp b/screen_ui.cpp index 8376341c..be7abca1 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -376,6 +376,7 @@ void ScreenRecoveryUI::Init() text_cols = gr_fb_width() / char_width; if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1; + backgroundIcon[NONE] = NULL; LoadBitmap("icon_installing", &backgroundIcon[INSTALLING_UPDATE]); backgroundIcon[ERASING] = backgroundIcon[INSTALLING_UPDATE]; LoadBitmap("icon_error", &backgroundIcon[ERROR]); From 027429a34fd229d7546640bd5b629156da8dd0fd Mon Sep 17 00:00:00 2001 From: Alistair Strachan Date: Wed, 17 Jul 2013 10:41:49 -0700 Subject: [PATCH 017/110] Restore default umask after forking for update-binary. A system/core change made in Mar 26 2012 6ebf12f "init: Change umask of forked processes to 077" changed the default umask of services forked from init. Because recovery is forked from init, it has a umask of 077. Therefore when update-binary is forked from recovery, it too has a umask of 077. This umask is overly restrictive and can cause problems for scripts relying on minzip to extract binaries directly into the target filesystem. Any directories updated by minzip will have their permissions reset to r-x------ and created files will have similarly restrictive permissions. As it seems unlikely this security measure was intended to have this side effect on legacy sideloads that do not have chmods to repair the damage done by minzip, this change reverts the umask to 022 in the fork made for update-binary. Change-Id: Ib1a3fc83aa4ecc7480b5d0c00f3c7d0d040d4887 --- install.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/install.cpp b/install.cpp index 797a525f..980830cc 100644 --- a/install.cpp +++ b/install.cpp @@ -120,6 +120,7 @@ try_update_binary(const char *path, ZipArchive *zip, int* wipe_cache) { pid_t pid = fork(); if (pid == 0) { + umask(022); close(pipefd[0]); execv(binary, (char* const*)args); fprintf(stdout, "E:Can't run %s (%s)\n", binary, strerror(errno)); From a0ecc8c4277c5c216915ee60b927aea972c95b25 Mon Sep 17 00:00:00 2001 From: synergy dev Date: Wed, 6 Nov 2013 16:31:54 -0800 Subject: [PATCH 018/110] minui: do not use flexible array initialization Avoiding the use of gnu extensions improves code portability Change-Id: I441a49ce08b6ecb1d735ca453552fa92026c5016 --- minui/font_10x18.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minui/font_10x18.h b/minui/font_10x18.h index 7f96465c..29d70534 100644 --- a/minui/font_10x18.h +++ b/minui/font_10x18.h @@ -3,7 +3,7 @@ struct { unsigned height; unsigned cwidth; unsigned cheight; - unsigned char rundata[]; + unsigned char rundata[2973]; } font = { .width = 960, .height = 18, From c87bab101893e8322b49d7c8600e3367b20ab50a Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 25 Nov 2013 13:53:25 -0800 Subject: [PATCH 019/110] add the functions for multi-stage packages to updater In order to support multi-stage recovery packages, we add the set_stage() and get_stage() functions, which store a short string somewhere it can be accessed across invocations of recovery. We also add reboot_now() which updater can invoke to immediately reboot the device, without doing normal recovery cleanup. (It can also choose whether to boot off the boot or recovery partition.) If the stage string is of the form "#/#", recovery's UI will be augmented with a simple indicator of what stage you're in, so it doesn't look like a reboot loop. Change-Id: I62f7ff0bc802b549c9bcf3cc154a6bad99f94603 --- bootloader.h | 15 +++++- recovery.cpp | 18 +++++++ res/images/stage_empty.png | Bin 0 -> 322 bytes res/images/stage_fill.png | Bin 0 -> 258 bytes screen_ui.cpp | 36 +++++++++++-- screen_ui.h | 12 +++-- ui.h | 2 + updater/install.c | 107 ++++++++++++++++++++++++++++++++++++- 8 files changed, 181 insertions(+), 9 deletions(-) create mode 100644 res/images/stage_empty.png create mode 100644 res/images/stage_fill.png diff --git a/bootloader.h b/bootloader.h index 712aa1a2..c2895dd9 100644 --- a/bootloader.h +++ b/bootloader.h @@ -38,11 +38,24 @@ extern "C" { * The recovery field is only written by linux and used * for the system to send a message to recovery or the * other way around. + * + * The stage field is written by packages which restart themselves + * multiple times, so that the UI can reflect which invocation of the + * package it is. If the value is of the format "#/#" (eg, "1/3"), + * the UI will add a simple indicator of that status. */ struct bootloader_message { char command[32]; char status[32]; - char recovery[1024]; + char recovery[768]; + + // The 'recovery' field used to be 1024 bytes. It has only ever + // been used to store the recovery command line, so 768 bytes + // should be plenty. We carve off the last 256 bytes to store the + // stage string (for multistage packages) and possible future + // expansion. + char stage[32]; + char reserved[224]; }; /* Read and write the bootloader command from the "misc" partition. diff --git a/recovery.cpp b/recovery.cpp index d803cadf..43cd9daf 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -56,6 +56,7 @@ static const struct option OPTIONS[] = { { "show_text", no_argument, NULL, 't' }, { "just_exit", no_argument, NULL, 'x' }, { "locale", required_argument, NULL, 'l' }, + { "stages", required_argument, NULL, 'g' }, { NULL, 0, NULL, 0 }, }; @@ -76,6 +77,7 @@ static const char *SIDELOAD_TEMP_DIR = "/tmp/sideload"; RecoveryUI* ui = NULL; char* locale = NULL; char recovery_version[PROPERTY_VALUE_MAX+1]; +char* stage = NULL; /* * The recovery tool communicates with the main system through /cache files. @@ -172,6 +174,7 @@ get_args(int *argc, char ***argv) { struct bootloader_message boot; memset(&boot, 0, sizeof(boot)); get_bootloader_message(&boot); // this may fail, leaving a zeroed structure + stage = strndup(boot.stage, sizeof(boot.stage)); if (boot.command[0] != 0 && boot.command[0] != 255) { LOGI("Boot command: %.*s\n", sizeof(boot.command), boot.command); @@ -959,6 +962,14 @@ main(int argc, char **argv) { case 't': show_text = 1; break; case 'x': just_exit = true; break; case 'l': locale = optarg; break; + case 'g': { + if (stage == NULL || *stage == '\0') { + char buffer[20] = "1/"; + strncat(buffer, optarg, sizeof(buffer)-3); + stage = strdup(buffer); + } + break; + } case '?': LOGE("Invalid command argument\n"); continue; @@ -969,12 +980,19 @@ main(int argc, char **argv) { load_locale_from_cache(); } printf("locale is [%s]\n", locale); + printf("stage is [%s]\n", stage, stage); Device* device = make_device(); ui = device->GetUI(); gCurrentUI = ui; ui->Init(); + + int st_cur, st_max; + if (stage != NULL && sscanf(stage, "%d/%d", &st_cur, &st_max) == 2) { + ui->SetStage(st_cur, st_max); + } + ui->SetLocale(locale); ui->SetBackground(RecoveryUI::NONE); if (show_text) ui->ShowText(true); diff --git a/res/images/stage_empty.png b/res/images/stage_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..251ec19699ff537238e73c77d2c74164d210eba9 GIT binary patch literal 322 zcmV-I0lof-P) z33IU0c82o6b`c}S2y};gR$LmEq>gp(LjgmqF9s-f)CJm@q=n0lx<*4WM&P=m8mMEE z8k+Yd3da=TE0U}zrJ`XpZK-H}#S_y!WX-rx3?ze9i~s-t07*qoM6N<$f_lY@HUIzs literal 0 HcmV?d00001 diff --git a/res/images/stage_fill.png b/res/images/stage_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab79e862825cc24bfb41a9915afcc3f8dcabe92 GIT binary patch literal 258 zcmV+d0sa1oP)3dQn@EfmKq?t29|7;t^y zk%3YIfk9#kgdg}~$VUd+1=5s|)`v7$q>UrP0vSor;CuKv7kJ0j6DG}uV*mgE07*qo IM6N<$f=|0=$N&HU literal 0 HcmV?d00001 diff --git a/screen_ui.cpp b/screen_ui.cpp index 8376341c..27d0a245 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -81,7 +81,9 @@ ScreenRecoveryUI::ScreenRecoveryUI() : install_overlay_offset_x(13), install_overlay_offset_y(190), overlay_offset_x(-1), - overlay_offset_y(-1) { + overlay_offset_y(-1), + stage(-1), + max_stage(-1) { for (int i = 0; i < 5; i++) backgroundIcon[i] = NULL; @@ -120,14 +122,28 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) int iconHeight = gr_get_height(surface); int textWidth = gr_get_width(text_surface); int textHeight = gr_get_height(text_surface); + int stageHeight = gr_get_height(stageMarkerEmpty); + + int sh = (max_stage >= 0) ? stageHeight : 0; int iconX = (gr_fb_width() - iconWidth) / 2; - int iconY = (gr_fb_height() - (iconHeight+textHeight+40)) / 2; + int iconY = (gr_fb_height() - (iconHeight+textHeight+40+sh)) / 2; int textX = (gr_fb_width() - textWidth) / 2; - int textY = ((gr_fb_height() - (iconHeight+textHeight+40)) / 2) + iconHeight + 40; + int textY = ((gr_fb_height() - (iconHeight+textHeight+40+sh)) / 2) + iconHeight + 40; gr_blit(surface, 0, 0, iconWidth, iconHeight, iconX, iconY); + if (stageHeight > 0) { + int sw = gr_get_width(stageMarkerEmpty); + int x = (gr_fb_width() - max_stage * gr_get_width(stageMarkerEmpty)) / 2; + int y = iconY + iconHeight + 20; + for (int i = 0; i < max_stage; ++i) { + gr_blit((i < stage) ? stageMarkerFill : stageMarkerEmpty, + 0, 0, sw, stageHeight, x, y); + x += sw; + } + } + if (icon == INSTALLING_UPDATE || icon == ERASING) { draw_install_overlay_locked(installingFrame); } @@ -383,6 +399,8 @@ void ScreenRecoveryUI::Init() LoadBitmap("progress_empty", &progressBarEmpty); LoadBitmap("progress_fill", &progressBarFill); + LoadBitmap("stage_empty", &stageMarkerEmpty); + LoadBitmap("stage_fill", &stageMarkerFill); LoadLocalizedBitmap("installing_text", &backgroundText[INSTALLING_UPDATE]); LoadLocalizedBitmap("erasing_text", &backgroundText[ERASING]); @@ -453,7 +471,10 @@ void ScreenRecoveryUI::SetBackground(Icon icon) gr_surface text = backgroundText[icon]; overlay_offset_x = install_overlay_offset_x + (gr_fb_width() - gr_get_width(bg)) / 2; overlay_offset_y = install_overlay_offset_y + - (gr_fb_height() - (gr_get_height(bg) + gr_get_height(text) + 40)) / 2; + (gr_fb_height() - (gr_get_height(bg) + + gr_get_height(text) + + 40 + + ((max_stage >= 0) ? gr_get_height(stageMarkerEmpty) : 0))) / 2; } currentIcon = icon; @@ -505,6 +526,13 @@ void ScreenRecoveryUI::SetProgress(float fraction) pthread_mutex_unlock(&updateMutex); } +void ScreenRecoveryUI::SetStage(int current, int max) { + pthread_mutex_lock(&updateMutex); + stage = current; + max_stage = max; + pthread_mutex_unlock(&updateMutex); +} + void ScreenRecoveryUI::Print(const char *fmt, ...) { char buf[256]; diff --git a/screen_ui.h b/screen_ui.h index fc35d95b..5c4366d2 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -39,6 +39,8 @@ class ScreenRecoveryUI : public RecoveryUI { void ShowProgress(float portion, float seconds); void SetProgress(float fraction); + void SetStage(int current, int max); + // text log void ShowText(bool visible); bool IsTextVisible(); @@ -58,9 +60,6 @@ class ScreenRecoveryUI : public RecoveryUI { enum UIElement { HEADER, MENU, MENU_SEL_BG, MENU_SEL_FG, LOG, TEXT_FILL }; virtual void SetColor(UIElement e); - protected: - int install_overlay_offset_x, install_overlay_offset_y; - private: Icon currentIcon; int installingFrame; @@ -73,6 +72,8 @@ class ScreenRecoveryUI : public RecoveryUI { gr_surface *progressBarIndeterminate; gr_surface progressBarEmpty; gr_surface progressBarFill; + gr_surface stageMarkerEmpty; + gr_surface stageMarkerFill; ProgressType progressBarType; @@ -102,8 +103,13 @@ class ScreenRecoveryUI : public RecoveryUI { int animation_fps; int indeterminate_frames; int installing_frames; + protected: + int install_overlay_offset_x, install_overlay_offset_y; + private: int overlay_offset_x, overlay_offset_y; + int stage, max_stage; + void draw_install_overlay_locked(int frame); void draw_background_locked(Icon icon); void draw_progress_locked(); diff --git a/ui.h b/ui.h index 6c8987a3..0757260b 100644 --- a/ui.h +++ b/ui.h @@ -30,6 +30,8 @@ class RecoveryUI { // Initialize the object; called before anything else. virtual void Init(); + // Show a stage indicator. Call immediately after Init(). + virtual void SetStage(int current, int max) { } // After calling Init(), you can tell the UI what locale it is operating in. virtual void SetLocale(const char* locale) { } diff --git a/updater/install.c b/updater/install.c index 9fb1b63d..9f299f6c 100644 --- a/updater/install.c +++ b/updater/install.c @@ -34,6 +34,9 @@ #include #include +#include "bootloader.h" +#include "applypatch/applypatch.h" +#include "cutils/android_reboot.h" #include "cutils/misc.h" #include "cutils/properties.h" #include "edify/expr.h" @@ -42,7 +45,6 @@ #include "mtdutils/mounts.h" #include "mtdutils/mtdutils.h" #include "updater.h" -#include "applypatch/applypatch.h" #ifdef USE_EXT4 #include "make_ext4fs.h" @@ -1419,6 +1421,105 @@ Value* ReadFileFn(const char* name, State* state, int argc, Expr* argv[]) { return v; } +// Immediately reboot the device. Recovery is not finished normally, +// so if you reboot into recovery it will re-start applying the +// current package (because nothing has cleared the copy of the +// arguments stored in the BCB). +// +// The argument is the partition name passed to the android reboot +// property. It can be "recovery" to boot from the recovery +// partition, or "" (empty string) to boot from the regular boot +// partition. +Value* RebootNowFn(const char* name, State* state, int argc, Expr* argv[]) { + if (argc != 2) { + return ErrorAbort(state, "%s() expects 2 args, got %d", name, argc); + } + + char* filename; + char* property; + if (ReadArgs(state, argv, 2, &filename, &property) < 0) return NULL; + + char buffer[80]; + + // zero out the 'command' field of the bootloader message. + memset(buffer, 0, sizeof(((struct bootloader_message*)0)->command)); + FILE* f = fopen(filename, "r+b"); + fseek(f, offsetof(struct bootloader_message, command), SEEK_SET); + fwrite(buffer, sizeof(((struct bootloader_message*)0)->command), 1, f); + fclose(f); + free(filename); + + strcpy(buffer, "reboot,"); + if (property != NULL) { + strncat(buffer, property, sizeof(buffer)-10); + } + + property_set(ANDROID_RB_PROPERTY, buffer); + + sleep(5); + free(property); + ErrorAbort(state, "%s() failed to reboot", name); + return NULL; +} + +// Store a string value somewhere that future invocations of recovery +// can access it. This value is called the "stage" and can be used to +// drive packages that need to do reboots in the middle of +// installation and keep track of where they are in the multi-stage +// install. +// +// The first argument is the block device for the misc partition +// ("/misc" in the fstab), which is where this value is stored. The +// second argument is the string to store; it should not exceed 31 +// bytes. +Value* SetStageFn(const char* name, State* state, int argc, Expr* argv[]) { + if (argc != 2) { + return ErrorAbort(state, "%s() expects 2 args, got %d", name, argc); + } + + char* filename; + char* stagestr; + if (ReadArgs(state, argv, 2, &filename, &stagestr) < 0) return NULL; + + // Store this value in the misc partition, immediately after the + // bootloader message that the main recovery uses to save its + // arguments in case of the device restarting midway through + // package installation. + FILE* f = fopen(filename, "r+b"); + fseek(f, offsetof(struct bootloader_message, stage), SEEK_SET); + int to_write = strlen(stagestr)+1; + int max_size = sizeof(((struct bootloader_message*)0)->stage); + if (to_write > max_size) { + to_write = max_size; + stagestr[max_size-1] = 0; + } + fwrite(stagestr, to_write, 1, f); + fclose(f); + + free(stagestr); + return StringValue(filename); +} + +// Return the value most recently saved with SetStageFn. The argument +// is the block device for the misc partition. +Value* GetStageFn(const char* name, State* state, int argc, Expr* argv[]) { + if (argc != 2) { + return ErrorAbort(state, "%s() expects 1 arg, got %d", name, argc); + } + + char* filename; + if (ReadArgs(state, argv, 1, &filename) < 0) return NULL; + + char buffer[sizeof(((struct bootloader_message*)0)->stage)]; + FILE* f = fopen(filename, "rb"); + fseek(f, offsetof(struct bootloader_message, stage), SEEK_SET); + fread(buffer, sizeof(buffer), 1, f); + fclose(f); + buffer[sizeof(buffer)-1] = '\0'; + + return StringValue(strdup(buffer)); +} + void RegisterInstallFunctions() { RegisterFunction("mount", MountFn); RegisterFunction("is_mounted", IsMountedFn); @@ -1466,4 +1567,8 @@ void RegisterInstallFunctions() { RegisterFunction("ui_print", UIPrintFn); RegisterFunction("run_program", RunProgramFn); + + RegisterFunction("reboot_now", RebootNowFn); + RegisterFunction("get_stage", GetStageFn); + RegisterFunction("set_stage", SetStageFn); } From f39989a36d4724a4852e28b9dca3d372d3f7873d Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 11 Dec 2013 15:40:28 -0800 Subject: [PATCH 020/110] recovery: wipe encryption metadata along with data partition This assumes that the metadata is correctly defined in fstab. Which apparently some devices don't do. Bug: 8766487 Bug: 12112624 Change-Id: I1b14b9d4c888e9348527984be3dce04bdd9f4de0 --- Android.mk | 2 +- roots.cpp | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Android.mk b/Android.mk index 1308066d..c544db96 100644 --- a/Android.mk +++ b/Android.mk @@ -57,7 +57,7 @@ LOCAL_STATIC_LIBRARIES := \ ifeq ($(TARGET_USERIMAGES_USE_EXT4), true) LOCAL_CFLAGS += -DUSE_EXT4 - LOCAL_C_INCLUDES += system/extras/ext4_utils + LOCAL_C_INCLUDES += system/extras/ext4_utils system/vold LOCAL_STATIC_LIBRARIES += libext4_utils_static libz endif diff --git a/roots.cpp b/roots.cpp index 113dba1b..47cea0be 100644 --- a/roots.cpp +++ b/roots.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "mtdutils/mtdutils.h" @@ -28,6 +29,10 @@ #include "roots.h" #include "common.h" #include "make_ext4fs.h" +extern "C" { +#include "wipe.h" +#include "cryptfs.h" +} static struct fstab *fstab = NULL; @@ -191,11 +196,31 @@ int format_volume(const char* volume) { } if (strcmp(v->fs_type, "ext4") == 0) { - int result = make_ext4fs(v->blk_device, v->length, volume, sehandle); + ssize_t length = 0; + if (v->length != 0) { + length = v->length; + } else if (v->key_loc != NULL && strcmp(v->key_loc, "footer") == 0) { + length = -CRYPT_FOOTER_OFFSET; + } + int result = make_ext4fs(v->blk_device, length, volume, sehandle); if (result != 0) { LOGE("format_volume: make_extf4fs failed on %s\n", v->blk_device); return -1; } + + // if there's a key_loc that looks like a path, it should be a + // block device for storing encryption metadata. wipe it too. + if (v->key_loc != NULL && v->key_loc[0] == '/') { + LOGI("wiping %s\n", v->key_loc); + int fd = open(v->key_loc, O_WRONLY | O_CREAT, 0644); + if (fd < 0) { + LOGE("format_volume: failed to open %s\n", v->key_loc); + return -1; + } + wipe_block_device(fd, get_file_size(fd)); + close(fd); + } + return 0; } From 6eed2247714967eb0ce913d7da782fa884a4c1bd Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Fri, 13 Dec 2013 17:13:11 -0800 Subject: [PATCH 021/110] Don't abort on read_file if the file is missing. Change-Id: I85726bf736203d602428114145c3b98692580656 --- updater/install.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/updater/install.c b/updater/install.c index 9f299f6c..b6852b0c 100644 --- a/updater/install.c +++ b/updater/install.c @@ -1353,7 +1353,6 @@ Value* Sha1CheckFn(const char* name, State* state, int argc, Expr* argv[]) { } if (args[0]->size < 0) { - printf("%s(): no file contents received", name); return StringValue(strdup("")); } uint8_t digest[SHA_DIGEST_SIZE]; @@ -1406,12 +1405,11 @@ Value* ReadFileFn(const char* name, State* state, int argc, Expr* argv[]) { FileContents fc; if (LoadFileContents(filename, &fc, RETOUCH_DONT_MASK) != 0) { - ErrorAbort(state, "%s() loading \"%s\" failed: %s", - name, filename, strerror(errno)); free(filename); - free(v); + v->size = -1; + v->data = NULL; free(fc.data); - return NULL; + return v; } v->size = fc.size; From 168724c31ad5241e157ebb35135a734fa075d53b Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 19 Dec 2013 15:16:57 -0800 Subject: [PATCH 022/110] fix unnecessarily slow writing of EMMC partitions These were attempts to write partitions "conservatively" in hopes of fixing the problems with writing the radio partition on Nexus 4. They didn't work (a kernel patch was needed), but got left in. They make writing of partitions unnecessarily slow (ie, we really shouldn't need to sync() after every 4kb). Roll back most of them, but leave the verification read-back in. Change-Id: I94badc0979e88816c5aa0485f6316c02be69173c --- applypatch/applypatch.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/applypatch/applypatch.c b/applypatch/applypatch.c index 6b8da2a8..cb9bc234 100644 --- a/applypatch/applypatch.c +++ b/applypatch/applypatch.c @@ -424,20 +424,18 @@ int WriteToPartition(unsigned char* data, size_t len, { size_t start = 0; int success = 0; - int fd = open(partition, O_RDWR | O_SYNC); + int fd = open(partition, O_RDWR); if (fd < 0) { printf("failed to open %s: %s\n", partition, strerror(errno)); return -1; } int attempt; - for (attempt = 0; attempt < 10; ++attempt) { - size_t next_sync = start + (1<<20); - printf("raw O_SYNC write %s attempt %d start at %d\n", partition, attempt+1, start); + for (attempt = 0; attempt < 2; ++attempt) { lseek(fd, start, SEEK_SET); while (start < len) { size_t to_write = len - start; - if (to_write > 4096) to_write = 4096; + if (to_write > 1<<20) to_write = 1<<20; ssize_t written = write(fd, data+start, to_write); if (written < 0) { @@ -450,10 +448,6 @@ int WriteToPartition(unsigned char* data, size_t len, } } start += written; - if (start >= next_sync) { - fsync(fd); - next_sync = start + (1<<20); - } } fsync(fd); @@ -506,8 +500,6 @@ int WriteToPartition(unsigned char* data, size_t len, success = true; break; } - - sleep(2); } if (!success) { @@ -519,11 +511,7 @@ int WriteToPartition(unsigned char* data, size_t len, printf("error closing %s (%s)\n", partition, strerror(errno)); return -1; } - // hack: sync and sleep after closing in hopes of getting - // the data actually onto flash. - printf("sleeping after close\n"); sync(); - sleep(5); break; } } From 2768efdf9fe67d179f6cb733e6541f04b6f2bf46 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 13 Jan 2014 10:11:20 -0800 Subject: [PATCH 023/110] remove dead code from minzip minzip had some features that were used when reading APKs, but APK handling now uses libziparchive instead of minzip. Remove these unused functions. Change-Id: Iead89209a716bfe9e3d339bf85b3e97e33a41f35 --- minzip/SysUtil.c | 117 ----------------------------------------------- minzip/SysUtil.h | 17 ------- 2 files changed, 134 deletions(-) diff --git a/minzip/SysUtil.c b/minzip/SysUtil.c index 31c76d6d..e6f65064 100644 --- a/minzip/SysUtil.c +++ b/minzip/SysUtil.c @@ -16,34 +16,6 @@ #include "Log.h" #include "SysUtil.h" -/* - * Having trouble finding a portable way to get this. sysconf(_SC_PAGE_SIZE) - * seems appropriate, but we don't have that on the device. Some systems - * have getpagesize(2), though the linux man page has some odd cautions. - */ -#define DEFAULT_PAGE_SIZE 4096 - - -/* - * Create an anonymous shared memory segment large enough to hold "length" - * bytes. The actual segment may be larger because mmap() operates on - * page boundaries (usually 4K). - */ -static void* sysCreateAnonShmem(size_t length) -{ - void* ptr; - - ptr = mmap(NULL, length, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_ANON, -1, 0); - if (ptr == MAP_FAILED) { - LOGW("mmap(%d, RW, SHARED|ANON) failed: %s\n", (int) length, - strerror(errno)); - return NULL; - } - - return ptr; -} - static int getFileStartAndLength(int fd, off_t *start_, size_t *length_) { off_t start, end; @@ -73,41 +45,6 @@ static int getFileStartAndLength(int fd, off_t *start_, size_t *length_) return 0; } -/* - * Pull the contents of a file into an new shared memory segment. We grab - * everything from fd's current offset on. - * - * We need to know the length ahead of time so we can allocate a segment - * of sufficient size. - */ -int sysLoadFileInShmem(int fd, MemMapping* pMap) -{ - off_t start; - size_t length, actual; - void* memPtr; - - assert(pMap != NULL); - - if (getFileStartAndLength(fd, &start, &length) < 0) - return -1; - - memPtr = sysCreateAnonShmem(length); - if (memPtr == NULL) - return -1; - - pMap->baseAddr = pMap->addr = memPtr; - pMap->baseLength = pMap->length = length; - - actual = TEMP_FAILURE_RETRY(read(fd, memPtr, length)); - if (actual != length) { - LOGE("only read %d of %d bytes\n", (int) actual, (int) length); - sysReleaseShmem(pMap); - return -1; - } - - return 0; -} - /* * Map a file (from fd's current offset) into a shared, read-only memory * segment. The file offset must be a multiple of the page size. @@ -139,59 +76,6 @@ int sysMapFileInShmem(int fd, MemMapping* pMap) return 0; } -/* - * Map part of a file (from fd's current offset) into a shared, read-only - * memory segment. - * - * On success, returns 0 and fills out "pMap". On failure, returns a nonzero - * value and does not disturb "pMap". - */ -int sysMapFileSegmentInShmem(int fd, off_t start, long length, - MemMapping* pMap) -{ - off_t dummy; - size_t fileLength, actualLength; - off_t actualStart; - int adjust; - void* memPtr; - - assert(pMap != NULL); - - if (getFileStartAndLength(fd, &dummy, &fileLength) < 0) - return -1; - - if (start + length > (long)fileLength) { - LOGW("bad segment: st=%d len=%ld flen=%d\n", - (int) start, length, (int) fileLength); - return -1; - } - - /* adjust to be page-aligned */ - adjust = start % DEFAULT_PAGE_SIZE; - actualStart = start - adjust; - actualLength = length + adjust; - - memPtr = mmap(NULL, actualLength, PROT_READ, MAP_FILE | MAP_SHARED, - fd, actualStart); - if (memPtr == MAP_FAILED) { - LOGW("mmap(%d, R, FILE|SHARED, %d, %d) failed: %s\n", - (int) actualLength, fd, (int) actualStart, strerror(errno)); - return -1; - } - - pMap->baseAddr = memPtr; - pMap->baseLength = actualLength; - pMap->addr = (char*)memPtr + adjust; - pMap->length = length; - - LOGVV("mmap seg (st=%d ln=%d): bp=%p bl=%d ad=%p ln=%d\n", - (int) start, (int) length, - pMap->baseAddr, (int) pMap->baseLength, - pMap->addr, (int) pMap->length); - - return 0; -} - /* * Release a memory mapping. */ @@ -209,4 +93,3 @@ void sysReleaseShmem(MemMapping* pMap) pMap->baseLength = 0; } } - diff --git a/minzip/SysUtil.h b/minzip/SysUtil.h index ec3a4bcf..55cd0e76 100644 --- a/minzip/SysUtil.h +++ b/minzip/SysUtil.h @@ -26,17 +26,6 @@ INLINE void sysCopyMap(MemMapping* dst, const MemMapping* src) { *dst = *src; } -/* - * Load a file into a new shared memory segment. All data from the current - * offset to the end of the file is pulled in. - * - * The segment is read-write, allowing VM fixups. (It should be modified - * to support .gz/.zip compressed data.) - * - * On success, "pMap" is filled in, and zero is returned. - */ -int sysLoadFileInShmem(int fd, MemMapping* pMap); - /* * Map a file (from fd's current offset) into a shared, * read-only memory segment. @@ -45,12 +34,6 @@ int sysLoadFileInShmem(int fd, MemMapping* pMap); */ int sysMapFileInShmem(int fd, MemMapping* pMap); -/* - * Like sysMapFileInShmem, but on only part of a file. - */ -int sysMapFileSegmentInShmem(int fd, off_t start, long length, - MemMapping* pMap); - /* * Release the pages associated with a shared memory segment. * From 2c9d5b2839307987812db8a939d88272b865bacc Mon Sep 17 00:00:00 2001 From: Stephen Smalley Date: Mon, 13 Jan 2014 09:44:42 -0500 Subject: [PATCH 024/110] Set SELinux security contexts correctly for init and services. Otherwise everything is left running in the kernel domain when booting recovery. Change-Id: Ie3d86547d5be0b68dd1875a97afe1e00fc3e4da1 Signed-off-by: Stephen Smalley --- etc/init.rc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/etc/init.rc b/etc/init.rc index 17548906..5f9ce80a 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -1,6 +1,13 @@ import /init.recovery.${ro.hardware}.rc on early-init + # Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls. + write /sys/fs/selinux/checkreqprot 0 + + # Set the security context for the init process. + # This should occur before anything else (e.g. ueventd) is started. + setcon u:r:init:s0 + start ueventd start healthd @@ -43,15 +50,19 @@ on property:sys.powerctl=* service ueventd /sbin/ueventd critical + seclabel u:r:ueventd:s0 service healthd /sbin/healthd -n critical + seclabel u:r:healthd:s0 service recovery /sbin/recovery + seclabel u:r:recovery:s0 service adbd /sbin/adbd recovery disabled socket adbd stream 660 system system + seclabel u:r:adbd:s0 # Always start adbd on userdebug and eng builds on property:ro.debuggable=1 From 075ef327d494ea1ce07eb038fcc367fb78b14500 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 14 Jan 2014 09:50:35 -0800 Subject: [PATCH 025/110] correctly mount tmpfs as /tmp in recovery The syntax of init's mount command changed in April 2008 but recovery's init.rc was never updated, so recovery's /tmp has been on the root fs all this time. Fix. Also add /system/bin to the PATH in recovery, which is handy for debugging. Change-Id: I39f7ae435a8ce3bad691e4b7c307db0bd8de1302 --- etc/init.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/init.rc b/etc/init.rc index 5f9ce80a..8d49f24e 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -12,7 +12,7 @@ on early-init start healthd on init - export PATH /sbin + export PATH /sbin:/system/bin export ANDROID_ROOT /system export ANDROID_DATA /data export EXTERNAL_STORAGE /sdcard @@ -23,7 +23,7 @@ on init mkdir /system mkdir /data mkdir /cache - mount /tmp /tmp tmpfs + mount tmpfs tmpfs /tmp chown root shell /tmp chmod 0775 /tmp From 99916f0496cfe37891d40f21a9a0e387620a8a60 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 13 Jan 2014 14:16:58 -0800 Subject: [PATCH 026/110] do verification and extraction on memory, not files Changes minzip and recovery's file signature verification to work on memory regions, rather than files. For packages which are regular files, install.cpp now mmap()s them into memory and then passes the mapped memory to the verifier and to the minzip library. Support for files which are raw block maps (which will be used when we have packages written to encrypted data partitions) is present but largely untested so far. Bug: 12188746 Change-Id: I12cc3e809834745a489dd9d4ceb558cbccdc3f71 --- Android.mk | 1 + install.cpp | 30 ++++++--- minzip/SysUtil.c | 152 ++++++++++++++++++++++++++++++++++++++++------ minzip/SysUtil.h | 38 +++++++----- minzip/Zip.c | 121 +++++++----------------------------- minzip/Zip.h | 12 ++-- roots.cpp | 10 ++- updater/updater.c | 15 +++-- verifier.cpp | 70 +++++---------------- verifier.h | 9 ++- verifier_test.cpp | 12 +++- 11 files changed, 261 insertions(+), 209 deletions(-) diff --git a/Android.mk b/Android.mk index c544db96..bd8d09b8 100644 --- a/Android.mk +++ b/Android.mk @@ -98,6 +98,7 @@ LOCAL_SRC_FILES := \ LOCAL_STATIC_LIBRARIES := \ libmincrypt \ libminui \ + libminzip \ libcutils \ libstdc++ \ libc diff --git a/install.cpp b/install.cpp index 980830cc..0bd7945c 100644 --- a/install.cpp +++ b/install.cpp @@ -186,12 +186,22 @@ really_install_package(const char *path, int* wipe_cache) ui->ShowProgress(VERIFICATION_PROGRESS_FRACTION, VERIFICATION_PROGRESS_TIME); LOGI("Update location: %s\n", path); - if (ensure_path_mounted(path) != 0) { - LOGE("Can't mount %s\n", path); - return INSTALL_CORRUPT; + // Map the update package into memory. + ui->Print("Opening update package...\n"); + + if (path) { + if (path[0] == '@') { + ensure_path_mounted(path+1); + } else { + ensure_path_mounted(path); + } } - ui->Print("Opening update package...\n"); + MemMapping map; + if (sysMapFile(path, &map) != 0) { + LOGE("failed to map file\n"); + return INSTALL_CORRUPT; + } int numKeys; Certificate* loadedKeys = load_keys(PUBLIC_KEYS_FILE, &numKeys); @@ -204,27 +214,33 @@ really_install_package(const char *path, int* wipe_cache) ui->Print("Verifying update package...\n"); int err; - err = verify_file(path, loadedKeys, numKeys); + err = verify_file(map.addr, map.length, loadedKeys, numKeys); free(loadedKeys); LOGI("verify_file returned %d\n", err); if (err != VERIFY_SUCCESS) { LOGE("signature verification failed\n"); + sysReleaseMap(&map); return INSTALL_CORRUPT; } /* Try to open the package. */ ZipArchive zip; - err = mzOpenZipArchive(path, &zip); + err = mzOpenZipArchive(map.addr, map.length, &zip); if (err != 0) { LOGE("Can't open %s\n(%s)\n", path, err != -1 ? strerror(err) : "bad"); + sysReleaseMap(&map); return INSTALL_CORRUPT; } /* Verify and install the contents of the package. */ ui->Print("Installing update...\n"); - return try_update_binary(path, &zip, wipe_cache); + int result = try_update_binary(path, &zip, wipe_cache); + + sysReleaseMap(&map); + + return result; } int diff --git a/minzip/SysUtil.c b/minzip/SysUtil.c index e6f65064..2cfa39ae 100644 --- a/minzip/SysUtil.c +++ b/minzip/SysUtil.c @@ -8,11 +8,14 @@ #include #include #include +#include +#include +#include #include #include #include -#define LOG_TAG "minzip" +#define LOG_TAG "sysutil" #include "Log.h" #include "SysUtil.h" @@ -46,13 +49,13 @@ static int getFileStartAndLength(int fd, off_t *start_, size_t *length_) } /* - * Map a file (from fd's current offset) into a shared, read-only memory + * Map a file (from fd's current offset) into a private, read-only memory * segment. The file offset must be a multiple of the page size. * * On success, returns 0 and fills out "pMap". On failure, returns a nonzero * value and does not disturb "pMap". */ -int sysMapFileInShmem(int fd, MemMapping* pMap) +static int sysMapFD(int fd, MemMapping* pMap) { off_t start; size_t length; @@ -63,33 +66,146 @@ int sysMapFileInShmem(int fd, MemMapping* pMap) if (getFileStartAndLength(fd, &start, &length) < 0) return -1; - memPtr = mmap(NULL, length, PROT_READ, MAP_FILE | MAP_SHARED, fd, start); + memPtr = mmap(NULL, length, PROT_READ, MAP_PRIVATE, fd, start); if (memPtr == MAP_FAILED) { - LOGW("mmap(%d, R, FILE|SHARED, %d, %d) failed: %s\n", (int) length, + LOGW("mmap(%d, R, PRIVATE, %d, %d) failed: %s\n", (int) length, fd, (int) start, strerror(errno)); return -1; } - pMap->baseAddr = pMap->addr = memPtr; - pMap->baseLength = pMap->length = length; + pMap->addr = memPtr; + pMap->length = length; + pMap->range_count = 1; + pMap->ranges = malloc(sizeof(MappedRange)); + pMap->ranges[0].addr = memPtr; + pMap->ranges[0].length = length; return 0; } +static int sysMapBlockFile(FILE* mapf, MemMapping* pMap) +{ + char block_dev[PATH_MAX+1]; + size_t size; + unsigned int blksize; + unsigned int blocks; + unsigned int range_count; + unsigned int i; + + if (fgets(block_dev, sizeof(block_dev), mapf) == NULL) { + LOGW("failed to read block device from header\n"); + return -1; + } + for (i = 0; i < sizeof(block_dev); ++i) { + if (block_dev[i] == '\n') { + block_dev[i] = 0; + break; + } + } + + if (fscanf(mapf, "%d %d\n%d\n", &size, &blksize, &range_count) != 3) { + LOGW("failed to parse block map header\n"); + return -1; + } + + blocks = ((size-1) / blksize) + 1; + + pMap->range_count = range_count; + pMap->ranges = malloc(range_count * sizeof(MappedRange)); + memset(pMap->ranges, 0, range_count * sizeof(MappedRange)); + + // Reserve enough contiguous address space for the whole file. + unsigned char* reserve; + reserve = mmap64(NULL, blocks * blksize, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0); + if (reserve == MAP_FAILED) { + LOGW("failed to reserve address space: %s\n", strerror(errno)); + return -1; + } + + pMap->ranges[range_count-1].addr = reserve; + pMap->ranges[range_count-1].length = blocks * blksize; + + int fd = open(block_dev, O_RDONLY); + if (fd < 0) { + LOGW("failed to open block device %s: %s\n", block_dev, strerror(errno)); + return -1; + } + + unsigned char* next = reserve; + for (i = 0; i < range_count; ++i) { + int start, end; + if (fscanf(mapf, "%d %d\n", &start, &end) != 2) { + LOGW("failed to parse range %d in block map\n", i); + return -1; + } + + void* addr = mmap64(next, (end-start)*blksize, PROT_READ, MAP_PRIVATE | MAP_FIXED, fd, ((off64_t)start)*blksize); + if (addr == MAP_FAILED) { + LOGW("failed to map block %d: %s\n", i, strerror(errno)); + return -1; + } + pMap->ranges[i].addr = addr; + pMap->ranges[i].length = (end-start)*blksize; + + next += pMap->ranges[i].length; + } + + pMap->addr = reserve; + pMap->length = size; + + return 0; +} + +int sysMapFile(const char* fn, MemMapping* pMap) +{ + memset(pMap, 0, sizeof(*pMap)); + + if (fn && fn[0] == '@') { + // A map of blocks + FILE* mapf = fopen(fn+1, "r"); + if (mapf == NULL) { + LOGV("Unable to open '%s': %s\n", fn+1, strerror(errno)); + return -1; + } + + if (sysMapBlockFile(mapf, pMap) != 0) { + LOGW("Map of '%s' failed\n", fn); + return -1; + } + + fclose(mapf); + } else { + // This is a regular file. + int fd = open(fn, O_RDONLY, 0); + if (fd < 0) { + LOGE("Unable to open '%s': %s\n", fn, strerror(errno)); + return -1; + } + + if (sysMapFD(fd, pMap) != 0) { + LOGE("Map of '%s' failed\n", fn); + close(fd); + return -1; + } + + close(fd); + } + return 0; +} + /* * Release a memory mapping. */ -void sysReleaseShmem(MemMapping* pMap) +void sysReleaseMap(MemMapping* pMap) { - if (pMap->baseAddr == NULL && pMap->baseLength == 0) - return; - - if (munmap(pMap->baseAddr, pMap->baseLength) < 0) { - LOGW("munmap(%p, %d) failed: %s\n", - pMap->baseAddr, (int)pMap->baseLength, strerror(errno)); - } else { - LOGV("munmap(%p, %d) succeeded\n", pMap->baseAddr, pMap->baseLength); - pMap->baseAddr = NULL; - pMap->baseLength = 0; + int i; + for (i = 0; i < pMap->range_count; ++i) { + if (munmap(pMap->ranges[i].addr, pMap->ranges[i].length) < 0) { + LOGW("munmap(%p, %d) failed: %s\n", + pMap->ranges[i].addr, (int)pMap->ranges[i].length, strerror(errno)); + } } + free(pMap->ranges); + pMap->ranges = NULL; + pMap->range_count = 0; } diff --git a/minzip/SysUtil.h b/minzip/SysUtil.h index 55cd0e76..7adff1e5 100644 --- a/minzip/SysUtil.h +++ b/minzip/SysUtil.h @@ -6,39 +6,47 @@ #ifndef _MINZIP_SYSUTIL #define _MINZIP_SYSUTIL -#include "inline_magic.h" - +#include #include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct MappedRange { + void* addr; + size_t length; +} MappedRange; + /* * Use this to keep track of mapped segments. */ typedef struct MemMapping { - void* addr; /* start of data */ - size_t length; /* length of data */ + unsigned char* addr; /* start of data */ + size_t length; /* length of data */ - void* baseAddr; /* page-aligned base address */ - size_t baseLength; /* length of mapping */ + int range_count; + MappedRange* ranges; } MemMapping; -/* copy a map */ -INLINE void sysCopyMap(MemMapping* dst, const MemMapping* src) { - *dst = *src; -} - /* - * Map a file (from fd's current offset) into a shared, - * read-only memory segment. + * Map a file into a private, read-only memory segment. If 'fn' + * begins with an '@' character, it is a map of blocks to be mapped, + * otherwise it is treated as an ordinary file. * * On success, "pMap" is filled in, and zero is returned. */ -int sysMapFileInShmem(int fd, MemMapping* pMap); +int sysMapFile(const char* fn, MemMapping* pMap); /* * Release the pages associated with a shared memory segment. * * This does not free "pMap"; it just releases the memory. */ -void sysReleaseShmem(MemMapping* pMap); +void sysReleaseMap(MemMapping* pMap); + +#ifdef __cplusplus +} +#endif #endif /*_MINZIP_SYSUTIL*/ diff --git a/minzip/Zip.c b/minzip/Zip.c index 439e5d9c..6752bced 100644 --- a/minzip/Zip.c +++ b/minzip/Zip.c @@ -184,7 +184,7 @@ static int validFilename(const char *fileName, unsigned int fileNameLen) * * Returns "true" on success. */ -static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) +static bool parseZipArchive(ZipArchive* pArchive) { bool result = false; const unsigned char* ptr; @@ -196,7 +196,7 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) * signature for the first file (LOCSIG) or, if the archive doesn't * have any files in it, the end-of-central-directory signature (ENDSIG). */ - val = get4LE(pMap->addr); + val = get4LE(pArchive->addr); if (val == ENDSIG) { LOGI("Found Zip archive, but it looks empty\n"); goto bail; @@ -209,14 +209,14 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) * Find the EOCD. We'll find it immediately unless they have a file * comment. */ - ptr = pMap->addr + pMap->length - ENDHDR; + ptr = pArchive->addr + pArchive->length - ENDHDR; - while (ptr >= (const unsigned char*) pMap->addr) { + while (ptr >= (const unsigned char*) pArchive->addr) { if (*ptr == (ENDSIG & 0xff) && get4LE(ptr) == ENDSIG) break; ptr--; } - if (ptr < (const unsigned char*) pMap->addr) { + if (ptr < (const unsigned char*) pArchive->addr) { LOGI("Could not find end-of-central-directory in Zip\n"); goto bail; } @@ -230,9 +230,9 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) cdOffset = get4LE(ptr + ENDOFF); LOGVV("numEntries=%d cdOffset=%d\n", numEntries, cdOffset); - if (numEntries == 0 || cdOffset >= pMap->length) { + if (numEntries == 0 || cdOffset >= pArchive->length) { LOGW("Invalid entries=%d offset=%d (len=%zd)\n", - numEntries, cdOffset, pMap->length); + numEntries, cdOffset, pArchive->length); goto bail; } @@ -245,14 +245,14 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) if (pArchive->pEntries == NULL || pArchive->pHash == NULL) goto bail; - ptr = pMap->addr + cdOffset; + ptr = pArchive->addr + cdOffset; for (i = 0; i < numEntries; i++) { ZipEntry* pEntry; unsigned int fileNameLen, extraLen, commentLen, localHdrOffset; const unsigned char* localHdr; const char *fileName; - if (ptr + CENHDR > (const unsigned char*)pMap->addr + pMap->length) { + if (ptr + CENHDR > (const unsigned char*)pArchive->addr + pArchive->length) { LOGW("Ran off the end (at %d)\n", i); goto bail; } @@ -266,7 +266,7 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) extraLen = get2LE(ptr + CENEXT); commentLen = get2LE(ptr + CENCOM); fileName = (const char*)ptr + CENHDR; - if (fileName + fileNameLen > (const char*)pMap->addr + pMap->length) { + if (fileName + fileNameLen > (const char*)pArchive->addr + pArchive->length) { LOGW("Filename ran off the end (at %d)\n", i); goto bail; } @@ -352,15 +352,15 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) } pEntry->externalFileAttributes = get4LE(ptr + CENATX); - // Perform pMap->addr + localHdrOffset, ensuring that it won't + // Perform pArchive->addr + localHdrOffset, ensuring that it won't // overflow. This is needed because localHdrOffset is untrusted. - if (!safe_add((uintptr_t *)&localHdr, (uintptr_t)pMap->addr, + if (!safe_add((uintptr_t *)&localHdr, (uintptr_t)pArchive->addr, (uintptr_t)localHdrOffset)) { LOGW("Integer overflow adding in parseZipArchive\n"); goto bail; } if ((uintptr_t)localHdr + LOCHDR > - (uintptr_t)pMap->addr + pMap->length) { + (uintptr_t)pArchive->addr + pArchive->length) { LOGW("Bad offset to local header: %d (at %d)\n", localHdrOffset, i); goto bail; } @@ -374,7 +374,7 @@ static bool parseZipArchive(ZipArchive* pArchive, const MemMapping* pMap) LOGW("Integer overflow adding in parseZipArchive\n"); goto bail; } - if ((size_t)pEntry->offset + pEntry->compLen > pMap->length) { + if ((size_t)pEntry->offset + pEntry->compLen > pArchive->length) { LOGW("Data ran off the end (at %d)\n", i); goto bail; } @@ -427,50 +427,30 @@ bail: * * On success, we fill out the contents of "pArchive". */ -int mzOpenZipArchive(const char* fileName, ZipArchive* pArchive) +int mzOpenZipArchive(unsigned char* addr, size_t length, ZipArchive* pArchive) { - MemMapping map; int err; - LOGV("Opening archive '%s' %p\n", fileName, pArchive); - - map.addr = NULL; - memset(pArchive, 0, sizeof(*pArchive)); - - pArchive->fd = open(fileName, O_RDONLY, 0); - if (pArchive->fd < 0) { - err = errno ? errno : -1; - LOGV("Unable to open '%s': %s\n", fileName, strerror(err)); - goto bail; - } - - if (sysMapFileInShmem(pArchive->fd, &map) != 0) { - err = -1; - LOGW("Map of '%s' failed\n", fileName); - goto bail; - } - - if (map.length < ENDHDR) { + if (length < ENDHDR) { err = -1; LOGV("File '%s' too small to be zip (%zd)\n", fileName, map.length); goto bail; } - if (!parseZipArchive(pArchive, &map)) { + pArchive->addr = addr; + pArchive->length = length; + + if (!parseZipArchive(pArchive)) { err = -1; LOGV("Parsing '%s' failed\n", fileName); goto bail; } err = 0; - sysCopyMap(&pArchive->map, &map); - map.addr = NULL; bail: if (err != 0) mzCloseZipArchive(pArchive); - if (map.addr != NULL) - sysReleaseShmem(&map); return err; } @@ -483,16 +463,10 @@ void mzCloseZipArchive(ZipArchive* pArchive) { LOGV("Closing archive %p\n", pArchive); - if (pArchive->fd >= 0) - close(pArchive->fd); - if (pArchive->map.addr != NULL) - sysReleaseShmem(&pArchive->map); - free(pArchive->pEntries); mzHashTableFree(pArchive->pHash); - pArchive->fd = -1; pArchive->pHash = NULL; pArchive->pEntries = NULL; } @@ -528,29 +502,7 @@ static bool processStoredEntry(const ZipArchive *pArchive, const ZipEntry *pEntry, ProcessZipEntryContentsFunction processFunction, void *cookie) { - size_t bytesLeft = pEntry->compLen; - while (bytesLeft > 0) { - unsigned char buf[32 * 1024]; - ssize_t n; - size_t count; - bool ret; - - count = bytesLeft; - if (count > sizeof(buf)) { - count = sizeof(buf); - } - n = read(pArchive->fd, buf, count); - if (n < 0 || (size_t)n != count) { - LOGE("Can't read %zu bytes from zip file: %ld\n", count, n); - return false; - } - ret = processFunction(buf, n, cookie); - if (!ret) { - return false; - } - bytesLeft -= count; - } - return true; + return processFunction(pArchive->addr + pEntry->offset, pEntry->uncompLen, cookie); } static bool processDeflatedEntry(const ZipArchive *pArchive, @@ -573,8 +525,8 @@ static bool processDeflatedEntry(const ZipArchive *pArchive, zstream.zalloc = Z_NULL; zstream.zfree = Z_NULL; zstream.opaque = Z_NULL; - zstream.next_in = NULL; - zstream.avail_in = 0; + zstream.next_in = pArchive->addr + pEntry->offset; + zstream.avail_in = pEntry->compLen; zstream.next_out = (Bytef*) procBuf; zstream.avail_out = sizeof(procBuf); zstream.data_type = Z_UNKNOWN; @@ -598,25 +550,6 @@ static bool processDeflatedEntry(const ZipArchive *pArchive, * Loop while we have data. */ do { - /* read as much as we can */ - if (zstream.avail_in == 0) { - long getSize = (compRemaining > (long)sizeof(readBuf)) ? - (long)sizeof(readBuf) : compRemaining; - LOGVV("+++ reading %ld bytes (%ld left)\n", - getSize, compRemaining); - - int cc = read(pArchive->fd, readBuf, getSize); - if (cc != (int) getSize) { - LOGW("inflate read failed (%d vs %ld)\n", cc, getSize); - goto z_bail; - } - - compRemaining -= getSize; - - zstream.next_in = readBuf; - zstream.avail_in = getSize; - } - /* uncompress the data */ zerr = inflate(&zstream, Z_NO_FLUSH); if (zerr != Z_OK && zerr != Z_STREAM_END) { @@ -676,12 +609,6 @@ bool mzProcessZipEntryContents(const ZipArchive *pArchive, bool ret = false; off_t oldOff; - /* save current offset */ - oldOff = lseek(pArchive->fd, 0, SEEK_CUR); - - /* Seek to the beginning of the entry's compressed data. */ - lseek(pArchive->fd, pEntry->offset, SEEK_SET); - switch (pEntry->compression) { case STORED: ret = processStoredEntry(pArchive, pEntry, processFunction, cookie); @@ -695,8 +622,6 @@ bool mzProcessZipEntryContents(const ZipArchive *pArchive, break; } - /* restore file offset */ - lseek(pArchive->fd, oldOff, SEEK_SET); return ret; } diff --git a/minzip/Zip.h b/minzip/Zip.h index c9428282..05a2e60e 100644 --- a/minzip/Zip.h +++ b/minzip/Zip.h @@ -46,11 +46,11 @@ typedef struct ZipEntry { * One Zip archive. Treat as opaque. */ typedef struct ZipArchive { - int fd; - unsigned int numEntries; - ZipEntry* pEntries; - HashTable* pHash; // maps file name to ZipEntry - MemMapping map; + unsigned int numEntries; + ZipEntry* pEntries; + HashTable* pHash; // maps file name to ZipEntry + unsigned char* addr; + size_t length; } ZipArchive; /* @@ -68,7 +68,7 @@ typedef struct { * On success, returns 0 and populates "pArchive". Returns nonzero errno * value on failure. */ -int mzOpenZipArchive(const char* fileName, ZipArchive* pArchive); +int mzOpenZipArchive(unsigned char* addr, size_t length, ZipArchive* pArchive); /* * Close archive, releasing resources associated with it. diff --git a/roots.cpp b/roots.cpp index 47cea0be..28004a79 100644 --- a/roots.cpp +++ b/roots.cpp @@ -238,10 +238,16 @@ int setup_install_mounts() { if (strcmp(v->mount_point, "/tmp") == 0 || strcmp(v->mount_point, "/cache") == 0) { - if (ensure_path_mounted(v->mount_point) != 0) return -1; + if (ensure_path_mounted(v->mount_point) != 0) { + LOGE("failed to mount %s\n", v->mount_point); + return -1; + } } else { - if (ensure_path_unmounted(v->mount_point) != 0) return -1; + if (ensure_path_unmounted(v->mount_point) != 0) { + LOGE("failed to unmount %s\n", v->mount_point); + return -1; + } } } return 0; diff --git a/updater/updater.c b/updater/updater.c index c7009fea..4e1cc9c3 100644 --- a/updater/updater.c +++ b/updater/updater.c @@ -22,6 +22,7 @@ #include "updater.h" #include "install.h" #include "minzip/Zip.h" +#include "minzip/SysUtil.h" // Generated by the makefile, this function defines the // RegisterDeviceExtensions() function, which calls all the @@ -65,19 +66,24 @@ int main(int argc, char** argv) { // Extract the script from the package. - char* package_data = argv[3]; + const char* package_filename = argv[3]; + MemMapping map; + if (sysMapFile(package_filename, &map) != 0) { + printf("failed to map package %s\n", argv[3]); + return 3; + } ZipArchive za; int err; - err = mzOpenZipArchive(package_data, &za); + err = mzOpenZipArchive(map.addr, map.length, &za); if (err != 0) { printf("failed to open package %s: %s\n", - package_data, strerror(err)); + argv[3], strerror(err)); return 3; } const ZipEntry* script_entry = mzFindZipEntry(&za, SCRIPT_NAME); if (script_entry == NULL) { - printf("failed to find %s in %s\n", SCRIPT_NAME, package_data); + printf("failed to find %s in %s\n", SCRIPT_NAME, package_filename); return 4; } @@ -152,6 +158,7 @@ int main(int argc, char** argv) { if (updater_info.package_zip) { mzCloseZipArchive(updater_info.package_zip); } + sysReleaseMap(&map); free(script); return 0; diff --git a/verifier.cpp b/verifier.cpp index 0930fbd1..55d58ee2 100644 --- a/verifier.cpp +++ b/verifier.cpp @@ -111,15 +111,10 @@ static bool read_pkcs7(uint8_t* pkcs7_der, size_t pkcs7_der_len, uint8_t** sig_d // Return VERIFY_SUCCESS, VERIFY_FAILURE (if any error is encountered // or no key matches the signature). -int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys) { +int verify_file(unsigned char* addr, size_t length, + const Certificate* pKeys, unsigned int numKeys) { ui->SetProgress(0.0); - FILE* f = fopen(path, "rb"); - if (f == NULL) { - LOGE("failed to open %s (%s)\n", path, strerror(errno)); - return VERIFY_FAILURE; - } - // An archive with a whole-file signature will end in six bytes: // // (2-byte signature start) $ff $ff (2-byte comment size) @@ -131,22 +126,15 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys #define FOOTER_SIZE 6 - if (fseek(f, -FOOTER_SIZE, SEEK_END) != 0) { - LOGE("failed to seek in %s (%s)\n", path, strerror(errno)); - fclose(f); + if (length < FOOTER_SIZE) { + LOGE("not big enough to contain footer\n"); return VERIFY_FAILURE; } - unsigned char footer[FOOTER_SIZE]; - if (fread(footer, 1, FOOTER_SIZE, f) != FOOTER_SIZE) { - LOGE("failed to read footer from %s (%s)\n", path, strerror(errno)); - fclose(f); - return VERIFY_FAILURE; - } + unsigned char* footer = addr + length - FOOTER_SIZE; if (footer[2] != 0xff || footer[3] != 0xff) { LOGE("footer is wrong\n"); - fclose(f); return VERIFY_FAILURE; } @@ -157,7 +145,6 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys if (signature_start <= FOOTER_SIZE) { LOGE("Signature start is in the footer"); - fclose(f); return VERIFY_FAILURE; } @@ -167,9 +154,8 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys // comment length. size_t eocd_size = comment_size + EOCD_HEADER_SIZE; - if (fseek(f, -eocd_size, SEEK_END) != 0) { - LOGE("failed to seek in %s (%s)\n", path, strerror(errno)); - fclose(f); + if (length < eocd_size) { + LOGE("not big enough to contain EOCD\n"); return VERIFY_FAILURE; } @@ -177,26 +163,15 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys // This is everything except the signature data and length, which // includes all of the EOCD except for the comment length field (2 // bytes) and the comment data. - size_t signed_len = ftell(f) + EOCD_HEADER_SIZE - 2; + size_t signed_len = length - eocd_size + EOCD_HEADER_SIZE - 2; - unsigned char* eocd = (unsigned char*)malloc(eocd_size); - if (eocd == NULL) { - LOGE("malloc for EOCD record failed\n"); - fclose(f); - return VERIFY_FAILURE; - } - if (fread(eocd, 1, eocd_size, f) != eocd_size) { - LOGE("failed to read eocd from %s (%s)\n", path, strerror(errno)); - fclose(f); - return VERIFY_FAILURE; - } + unsigned char* eocd = addr + length - eocd_size; // If this is really is the EOCD record, it will begin with the // magic number $50 $4b $05 $06. if (eocd[0] != 0x50 || eocd[1] != 0x4b || eocd[2] != 0x05 || eocd[3] != 0x06) { LOGE("signature length doesn't match EOCD marker\n"); - fclose(f); return VERIFY_FAILURE; } @@ -209,7 +184,6 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys // which could be exploitable. Fail verification if // this sequence occurs anywhere after the real one. LOGE("EOCD marker occurs after start of EOCD\n"); - fclose(f); return VERIFY_FAILURE; } } @@ -229,35 +203,23 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys SHA256_CTX sha256_ctx; SHA_init(&sha1_ctx); SHA256_init(&sha256_ctx); - unsigned char* buffer = (unsigned char*)malloc(BUFFER_SIZE); - if (buffer == NULL) { - LOGE("failed to alloc memory for sha1 buffer\n"); - fclose(f); - return VERIFY_FAILURE; - } double frac = -1.0; size_t so_far = 0; - fseek(f, 0, SEEK_SET); while (so_far < signed_len) { - size_t size = BUFFER_SIZE; - if (signed_len - so_far < size) size = signed_len - so_far; - if (fread(buffer, 1, size, f) != size) { - LOGE("failed to read data from %s (%s)\n", path, strerror(errno)); - fclose(f); - return VERIFY_FAILURE; - } - if (need_sha1) SHA_update(&sha1_ctx, buffer, size); - if (need_sha256) SHA256_update(&sha256_ctx, buffer, size); + size_t size = signed_len - so_far; + if (size > BUFFER_SIZE) size = BUFFER_SIZE; + + if (need_sha1) SHA_update(&sha1_ctx, addr + so_far, size); + if (need_sha256) SHA256_update(&sha256_ctx, addr + so_far, size); so_far += size; + double f = so_far / (double)signed_len; if (f > frac + 0.02 || size == so_far) { ui->SetProgress(f); frac = f; } } - fclose(f); - free(buffer); const uint8_t* sha1 = SHA_final(&sha1_ctx); const uint8_t* sha256 = SHA256_final(&sha256_ctx); @@ -269,10 +231,8 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys if (!read_pkcs7(eocd + eocd_size - signature_start, signature_size, &sig_der, &sig_der_length)) { LOGE("Could not find signature DER block\n"); - free(eocd); return VERIFY_FAILURE; } - free(eocd); /* * Check to make sure at least one of the keys matches the signature. Since diff --git a/verifier.h b/verifier.h index 023d3bf8..15f8d98e 100644 --- a/verifier.h +++ b/verifier.h @@ -37,10 +37,13 @@ typedef struct { ECPublicKey* ec; } Certificate; -/* Look in the file for a signature footer, and verify that it - * matches one of the given keys. Return one of the constants below. +/* addr and length define a an update package file that has been + * loaded (or mmap'ed, or whatever) into memory. Verify that the file + * is signed and the signature matches one of the given keys. Return + * one of the constants below. */ -int verify_file(const char* path, const Certificate *pKeys, unsigned int numKeys); +int verify_file(unsigned char* addr, size_t length, + const Certificate *pKeys, unsigned int numKeys); Certificate* load_keys(const char* filename, int* numKeys); diff --git a/verifier_test.cpp b/verifier_test.cpp index 88fcad4e..10a5ddaa 100644 --- a/verifier_test.cpp +++ b/verifier_test.cpp @@ -17,12 +17,16 @@ #include #include #include +#include +#include +#include #include "common.h" #include "verifier.h" #include "ui.h" #include "mincrypt/sha.h" #include "mincrypt/sha256.h" +#include "minzip/SysUtil.h" // This is build/target/product/security/testkey.x509.pem after being // dumped out by dumpkey.jar. @@ -227,7 +231,13 @@ int main(int argc, char **argv) { ui = new FakeUI(); - int result = verify_file(argv[argn], certs, num_keys); + MemMapping map; + if (sysMapFile(argv[argn], &map) != 0) { + fprintf(stderr, "failed to mmap %s: %s\n", argv[argn], strerror(errno)); + return 4; + } + + int result = verify_file(map.addr, map.length, certs, num_keys); if (result == VERIFY_SUCCESS) { printf("VERIFIED\n"); return 0; From 76adfc5309936a07218ce53b5ab284d5746fa84c Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 13 Jan 2014 10:04:25 -0800 Subject: [PATCH 027/110] program to store unencrypted files in an encrypted filesystem uncrypt can read a file on an encrypted filesystem and rewrite it to the same blocks on the underlying (unencrypted) block device. This destroys the contents of the file as far as the encrypted filesystem is concerned, but allows the data to be read without the encryption key if you know which blocks of the raw device to access. uncrypt produces a "block map" file which lists the blocks that contain the file. For unencrypted filesystem, uncrypt will produce the block map without touching the data. Bug: 12188746 Change-Id: Ib7259b9e14dac8af406796b429d58378a00c7c63 --- Android.mk | 1 + uncrypt/Android.mk | 28 ++++ uncrypt/uncrypt.c | 377 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 406 insertions(+) create mode 100644 uncrypt/Android.mk create mode 100644 uncrypt/uncrypt.c diff --git a/Android.mk b/Android.mk index bd8d09b8..b1e3798c 100644 --- a/Android.mk +++ b/Android.mk @@ -113,5 +113,6 @@ include $(LOCAL_PATH)/minui/Android.mk \ $(LOCAL_PATH)/tests/Android.mk \ $(LOCAL_PATH)/tools/Android.mk \ $(LOCAL_PATH)/edify/Android.mk \ + $(LOCAL_PATH)/uncrypt/Android.mk \ $(LOCAL_PATH)/updater/Android.mk \ $(LOCAL_PATH)/applypatch/Android.mk diff --git a/uncrypt/Android.mk b/uncrypt/Android.mk new file mode 100644 index 00000000..756bc964 --- /dev/null +++ b/uncrypt/Android.mk @@ -0,0 +1,28 @@ +# Copyright (C) 2014 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. + +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := uncrypt.c + +LOCAL_MODULE := uncrypt + +LOCAL_STATIC_LIBRARIES := \ + libfs_mgr \ + libcutils \ + libc + +include $(BUILD_EXECUTABLE) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c new file mode 100644 index 00000000..1f0f59db --- /dev/null +++ b/uncrypt/uncrypt.c @@ -0,0 +1,377 @@ +/* + * Copyright (C) 2014 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. + */ + +// This program takes a file on an ext4 filesystem and produces a list +// of the blocks that file occupies, which enables the file contents +// to be read directly from the block device without mounting the +// filesystem. +// +// If the filesystem is using an encrypted block device, it will also +// read the file and rewrite it to the same blocks of the underlying +// (unencrypted) block device, so the file contents can be read +// without the need for the decryption key. +// +// The output of this program is a "block map" which looks like this: +// +// /dev/block/platform/msm_sdcc.1/by-name/userdata # block device +// 49652 4096 # file size in bytes, block size +// 3 # count of block ranges +// 1000 1008 # block range 0 +// 2100 2102 # ... block range 1 +// 30 33 # ... block range 2 +// +// Each block range represents a half-open interval; the line "30 33" +// reprents the blocks [30, 31, 32]. +// +// Recovery can take this block map file and retrieve the underlying +// file data to use as an update package. + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define WINDOW_SIZE 5 +#define RECOVERY_COMMAND_FILE "/cache/recovery/command" +#define RECOVERY_COMMAND_FILE_TMP "/cache/recovery/command.tmp" +#define CACHE_BLOCK_MAP "/cache/recovery/block.map" + +static int write_at_offset(unsigned char* buffer, size_t size, + int wfd, off64_t offset) +{ + lseek64(wfd, offset, SEEK_SET); + size_t written = 0; + while (written < size) { + ssize_t wrote = write(wfd, buffer + written, size - written); + if (wrote < 0) { + fprintf(stderr, "error writing offset %lld: %s\n", offset, strerror(errno)); + return -1; + } + written += wrote; + } + return 0; +} + +void add_block_to_ranges(int** ranges, int* range_alloc, int* range_used, int new_block) +{ + // If the current block start is < 0, set the start to the new + // block. (This only happens for the very first block of the very + // first range.) + if ((*ranges)[*range_used*2-2] < 0) { + (*ranges)[*range_used*2-2] = new_block; + (*ranges)[*range_used*2-1] = new_block; + } + + if (new_block == (*ranges)[*range_used*2-1]) { + // If the new block comes immediately after the current range, + // all we have to do is extend the current range. + ++(*ranges)[*range_used*2-1]; + } else { + // We need to start a new range. + + // If there isn't enough room in the array, we need to expand it. + if (*range_used >= *range_alloc) { + *range_alloc *= 2; + *ranges = realloc(*ranges, *range_alloc * 2 * sizeof(int)); + } + + ++*range_used; + (*ranges)[*range_used*2-2] = new_block; + (*ranges)[*range_used*2-1] = new_block+1; + } +} + +const char* find_block_device(const char* path, int* encryptable, int* encrypted) +{ + // The fstab path is always "/fstab.${ro.hardware}". + char fstab_path[PATH_MAX+1] = "/fstab."; + if (!property_get("ro.hardware", fstab_path+strlen(fstab_path), "")) { + fprintf(stderr, "failed to get ro.hardware\n"); + return NULL; + } + + struct fstab* fstab = fs_mgr_read_fstab(fstab_path); + if (!fstab) { + fprintf(stderr, "failed to read %s\n", fstab_path); + return NULL; + } + + // Look for a volume whose mount point is the prefix of path and + // return its block device. Set encrypted if it's currently + // encrypted. + int i; + for (i = 0; i < fstab->num_entries; ++i) { + struct fstab_rec* v = &fstab->recs[i]; + if (!v->mount_point) continue; + int len = strlen(v->mount_point); + if (strncmp(path, v->mount_point, len) == 0 && + (path[len] == '/' || path[len] == 0)) { + *encrypted = 0; + *encryptable = 0; + if (fs_mgr_is_encryptable(v)) { + *encryptable = 1; + char buffer[PROPERTY_VALUE_MAX+1]; + if (property_get("ro.crypto.state", buffer, "") && + strcmp(buffer, "encrypted") == 0) { + *encrypted = 1; + } + } + return v->blk_device; + } + } + + return NULL; +} + +char* parse_recovery_command_file() +{ + char* fn = NULL; + int count = 0; + char temp[1024]; + + FILE* fo = fopen(RECOVERY_COMMAND_FILE_TMP, "w"); + + FILE* f = fopen(RECOVERY_COMMAND_FILE, "r"); + while (fgets(temp, sizeof(temp), f)) { + printf("read: %s", temp); + if (strncmp(temp, "--update_package=", strlen("--update_package=")) == 0) { + fn = strdup(temp + strlen("--update_package=")); + strcpy(temp, "--update_package=@" CACHE_BLOCK_MAP "\n"); + } + fputs(temp, fo); + } + fclose(f); + fclose(fo); + + if (fn) { + char* newline = strchr(fn, '\n'); + if (newline) *newline = 0; + } + return fn; +} + +int produce_block_map(const char* path, const char* map_file, const char* blk_dev, + int encrypted) +{ + struct stat sb; + int ret; + + FILE* mapf = fopen(map_file, "w"); + + ret = stat(path, &sb); + if (ret != 0) { + fprintf(stderr, "failed to stat %s\n", path); + return -1; + } + + printf(" block size: %ld bytes\n", sb.st_blksize); + + int blocks = ((sb.st_size-1) / sb.st_blksize) + 1; + printf(" file size: %lld bytes, %d blocks\n", sb.st_size, blocks); + + int* ranges; + int range_alloc = 1; + int range_used = 1; + ranges = malloc(range_alloc * 2 * sizeof(int)); + ranges[0] = -1; + ranges[1] = -1; + + fprintf(mapf, "%s\n%lld %lu\n", blk_dev, sb.st_size, sb.st_blksize); + + unsigned char* buffers[WINDOW_SIZE]; + int i; + if (encrypted) { + for (i = 0; i < WINDOW_SIZE; ++i) { + buffers[i] = malloc(sb.st_blksize); + } + } + int head_block = 0; + int head = 0, tail = 0; + size_t pos = 0; + + int fd = open(path, O_RDONLY); + if (fd < 0) { + fprintf(stderr, "failed to open fd for reading: %s\n", strerror(errno)); + return -1; + } + fsync(fd); + + int wfd = -1; + if (encrypted) { + wfd = open(blk_dev, O_WRONLY); + if (wfd < 0) { + fprintf(stderr, "failed to open fd for writing: %s\n", strerror(errno)); + return -1; + } + } + + while (pos < sb.st_size) { + if ((tail+1) % WINDOW_SIZE == head) { + // write out head buffer + int block = head_block; + ret = ioctl(fd, FIBMAP, &block); + if (ret != 0) { + fprintf(stderr, "failed to find block %d\n", head_block); + return -1; + } + add_block_to_ranges(&ranges, &range_alloc, &range_used, block); + if (encrypted) { + if (write_at_offset(buffers[head], sb.st_blksize, wfd, (off64_t)sb.st_blksize * block) != 0) { + return -1; + } + } + head = (head + 1) % WINDOW_SIZE; + ++head_block; + } + + // read next block to tail + if (encrypted) { + size_t so_far = 0; + while (so_far < sb.st_blksize && pos < sb.st_size) { + ssize_t this_read = read(fd, buffers[tail] + so_far, sb.st_blksize - so_far); + if (this_read < 0) { + fprintf(stderr, "failed to read: %s\n", strerror(errno)); + return -1; + } + so_far += this_read; + pos += this_read; + } + } else { + // If we're not encrypting; we don't need to actually read + // anything, just skip pos forward as if we'd read a + // block. + pos += sb.st_blksize; + } + tail = (tail+1) % WINDOW_SIZE; + } + + while (head != tail) { + // write out head buffer + int block = head_block; + ret = ioctl(fd, FIBMAP, &block); + if (ret != 0) { + fprintf(stderr, "failed to find block %d\n", head_block); + return -1; + } + add_block_to_ranges(&ranges, &range_alloc, &range_used, block); + if (encrypted) { + if (write_at_offset(buffers[head], sb.st_blksize, wfd, (off64_t)sb.st_blksize * block) != 0) { + return -1; + } + } + head = (head + 1) % WINDOW_SIZE; + ++head_block; + } + + fprintf(mapf, "%d\n", range_used); + for (i = 0; i < range_used; ++i) { + fprintf(mapf, "%d %d\n", ranges[i*2], ranges[i*2+1]); + } + + fclose(mapf); + close(fd); + if (encrypted) { + close(wfd); + } + + return 0; +} + +void reboot_to_recovery() { + property_set("sys.powerctl", "reboot,recovery"); + sleep(10); +} + +int main(int argc, char** argv) +{ + const char* input_path; + const char* map_file; + int do_reboot = 1; + + if (argc != 1 && argc != 3) { + fprintf(stderr, "usage: %s [ ]\n", argv[0]); + return 2; + } + + if (argc == 3) { + // when command-line args are given this binary is being used + // for debugging; don't reboot to recovery at the end. + input_path = argv[1]; + map_file = argv[2]; + do_reboot = 0; + } else { + input_path = parse_recovery_command_file(); + if (input_path == NULL) { + // if we're rebooting to recovery without a package (say, + // to wipe data), then we don't need to do anything before + // going to recovery. + fprintf(stderr, "no recovery command file or no update package arg"); + reboot_to_recovery(); + return 1; + } + map_file = CACHE_BLOCK_MAP; + } + + // Turn the name of the file we're supposed to convert into an + // absolute path, so we can find what filesystem it's on. + char path[PATH_MAX+1]; + if (realpath(input_path, path) == NULL) { + fprintf(stderr, "failed to convert %s to absolute path: %s\n", input_path, strerror(errno)); + return 1; + } + + int encryptable; + int encrypted; + const char* blk_dev = find_block_device(path, &encryptable, &encrypted); + if (blk_dev == NULL) { + fprintf(stderr, "failed to find block device for %s\n", path); + return 1; + } + + // If the filesystem it's on isn't encrypted, we only produce the + // block map, we don't rewrite the file contents (it would be + // pointless to do so). + printf("encryptable: %s\n", encryptable ? "yes" : "no"); + printf(" encrypted: %s\n", encrypted ? "yes" : "no"); + + if (!encryptable) { + // If the file is on a filesystem that doesn't support + // encryption (eg, /cache), then leave it alone. + // + // TODO: change this to be !encrypted -- if the file is on + // /data but /data isn't encrypted, we don't need to use the + // block map mechanism. We do for now so as to get more + // testing of it (since most dogfood devices aren't + // encrypted). + + unlink(RECOVERY_COMMAND_FILE_TMP); + } else { + if (produce_block_map(path, map_file, blk_dev, encrypted) != 0) { + return 1; + } + } + + rename(RECOVERY_COMMAND_FILE_TMP, RECOVERY_COMMAND_FILE); + reboot_to_recovery(); + return 0; +} From 65ad928602479379187d6fbe1d924f0fd60bea0e Mon Sep 17 00:00:00 2001 From: Da Zhou Date: Fri, 17 Jan 2014 01:04:07 -0800 Subject: [PATCH 028/110] ADB sideload command not work In kernel(3.10) USB ADB gadget driver is removed. Using Functionfs for USB adb gadget. Android recovery uses a stripped down version of adb command for sideload only. It's missing the ffs function support, so add the ffs support to allow sideload command to work b/12608946 Change-Id: I4ad024723dfc5bdb544548391f99637c390b171e Signed-off-by: Pierre Couillaud --- minadbd/adb.c | 2 +- minadbd/adb.h | 11 ++ minadbd/usb_linux_client.c | 360 +++++++++++++++++++++++++++++++++++-- 3 files changed, 360 insertions(+), 13 deletions(-) diff --git a/minadbd/adb.c b/minadbd/adb.c index 948f4b75..7291b4bd 100644 --- a/minadbd/adb.c +++ b/minadbd/adb.c @@ -387,7 +387,7 @@ int adb_main() init_transport_registration(); // The minimal version of adbd only uses USB. - if (access("/dev/android_adb", F_OK) == 0) { + if (access(USB_ADB_PATH, F_OK) == 0 || access(USB_FFS_ADB_EP0, F_OK) == 0) { // listen on USB usb_init(); } diff --git a/minadbd/adb.h b/minadbd/adb.h index 98fa5972..1f28279d 100644 --- a/minadbd/adb.h +++ b/minadbd/adb.h @@ -410,6 +410,17 @@ extern int SHELL_EXIT_NOTIFY_FD; #define CHUNK_SIZE (64*1024) +#if !ADB_HOST +#define USB_ADB_PATH "/dev/android_adb" + +#define USB_FFS_ADB_PATH "/dev/usb-ffs/adb/" +#define USB_FFS_ADB_EP(x) USB_FFS_ADB_PATH#x + +#define USB_FFS_ADB_EP0 USB_FFS_ADB_EP(ep0) +#define USB_FFS_ADB_OUT USB_FFS_ADB_EP(ep1) +#define USB_FFS_ADB_IN USB_FFS_ADB_EP(ep2) +#endif + int sendfailmsg(int fd, const char *reason); int handle_host_request(char *service, transport_type ttype, char* serial, int reply_fd, asocket *s); diff --git a/minadbd/usb_linux_client.c b/minadbd/usb_linux_client.c index 635fa4bb..c135d639 100644 --- a/minadbd/usb_linux_client.c +++ b/minadbd/usb_linux_client.c @@ -19,6 +19,8 @@ #include #include +#include +#include #include #include #include @@ -29,12 +31,114 @@ #define TRACE_TAG TRACE_USB #include "adb.h" +#define MAX_PACKET_SIZE_FS 64 +#define MAX_PACKET_SIZE_HS 512 + +#define cpu_to_le16(x) htole16(x) +#define cpu_to_le32(x) htole32(x) struct usb_handle { int fd; adb_cond_t notify; adb_mutex_t lock; + + int (*write)(usb_handle *h, const void *data, int len); + int (*read)(usb_handle *h, void *data, int len); + void (*kick)(usb_handle *h); + + int control; + int bulk_out; /* "out" from the host's perspective => source for adbd */ + int bulk_in; /* "in" from the host's perspective => sink for adbd */ +}; + +static const struct { + struct usb_functionfs_descs_head header; + struct { + struct usb_interface_descriptor intf; + struct usb_endpoint_descriptor_no_audio source; + struct usb_endpoint_descriptor_no_audio sink; + } __attribute__((packed)) fs_descs, hs_descs; +} __attribute__((packed)) descriptors = { + .header = { + .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC), + .length = cpu_to_le32(sizeof(descriptors)), + .fs_count = 3, + .hs_count = 3, + }, + .fs_descs = { + .intf = { + .bLength = sizeof(descriptors.fs_descs.intf), + .bDescriptorType = USB_DT_INTERFACE, + .bInterfaceNumber = 0, + .bNumEndpoints = 2, + .bInterfaceClass = ADB_CLASS, + .bInterfaceSubClass = ADB_SUBCLASS, + .bInterfaceProtocol = ADB_PROTOCOL, + .iInterface = 1, /* first string from the provided table */ + }, + .source = { + .bLength = sizeof(descriptors.fs_descs.source), + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = 1 | USB_DIR_OUT, + .bmAttributes = USB_ENDPOINT_XFER_BULK, + .wMaxPacketSize = MAX_PACKET_SIZE_FS, + }, + .sink = { + .bLength = sizeof(descriptors.fs_descs.sink), + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = 2 | USB_DIR_IN, + .bmAttributes = USB_ENDPOINT_XFER_BULK, + .wMaxPacketSize = MAX_PACKET_SIZE_FS, + }, + }, + .hs_descs = { + .intf = { + .bLength = sizeof(descriptors.hs_descs.intf), + .bDescriptorType = USB_DT_INTERFACE, + .bInterfaceNumber = 0, + .bNumEndpoints = 2, + .bInterfaceClass = ADB_CLASS, + .bInterfaceSubClass = ADB_SUBCLASS, + .bInterfaceProtocol = ADB_PROTOCOL, + .iInterface = 1, /* first string from the provided table */ + }, + .source = { + .bLength = sizeof(descriptors.hs_descs.source), + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = 1 | USB_DIR_OUT, + .bmAttributes = USB_ENDPOINT_XFER_BULK, + .wMaxPacketSize = MAX_PACKET_SIZE_HS, + }, + .sink = { + .bLength = sizeof(descriptors.hs_descs.sink), + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = 2 | USB_DIR_IN, + .bmAttributes = USB_ENDPOINT_XFER_BULK, + .wMaxPacketSize = MAX_PACKET_SIZE_HS, + }, + }, +}; + +#define STR_INTERFACE_ "ADB Interface" + +static const struct { + struct usb_functionfs_strings_head header; + struct { + __le16 code; + const char str1[sizeof(STR_INTERFACE_)]; + } __attribute__((packed)) lang0; +} __attribute__((packed)) strings = { + .header = { + .magic = cpu_to_le32(FUNCTIONFS_STRINGS_MAGIC), + .length = cpu_to_le32(sizeof(strings)), + .str_count = cpu_to_le32(1), + .lang_count = cpu_to_le32(1), + }, + .lang0 = { + cpu_to_le16(0x0409), /* en-us */ + STR_INTERFACE_, + }, }; void usb_cleanup() @@ -42,7 +146,7 @@ void usb_cleanup() // nothing to do here } -static void *usb_open_thread(void *x) +static void *usb_adb_open_thread(void *x) { struct usb_handle *usb = (struct usb_handle *)x; int fd; @@ -61,6 +165,7 @@ static void *usb_open_thread(void *x) if (fd < 0) { // to support older kernels fd = unix_open("/dev/android", O_RDWR); + fprintf(stderr, "usb_adb_open_thread: %d\n", fd ); } if (fd < 0) { adb_sleep_ms(1000); @@ -79,7 +184,7 @@ static void *usb_open_thread(void *x) return 0; } -int usb_write(usb_handle *h, const void *data, int len) +static int usb_adb_write(usb_handle *h, const void *data, int len) { int n; @@ -94,7 +199,7 @@ int usb_write(usb_handle *h, const void *data, int len) return 0; } -int usb_read(usb_handle *h, void *data, int len) +static int usb_adb_read(usb_handle *h, void *data, int len) { int n; @@ -109,23 +214,42 @@ int usb_read(usb_handle *h, void *data, int len) return 0; } -void usb_init() +static void usb_adb_kick(usb_handle *h) +{ + D("usb_kick\n"); + adb_mutex_lock(&h->lock); + adb_close(h->fd); + h->fd = -1; + + // notify usb_adb_open_thread that we are disconnected + adb_cond_signal(&h->notify); + adb_mutex_unlock(&h->lock); +} + +static void usb_adb_init() { usb_handle *h; adb_thread_t tid; int fd; h = calloc(1, sizeof(usb_handle)); + + h->write = usb_adb_write; + h->read = usb_adb_read; + h->kick = usb_adb_kick; h->fd = -1; + adb_cond_init(&h->notify, 0); adb_mutex_init(&h->lock, 0); + fprintf(stderr, "Starting to open usb_init()\n"); // Open the file /dev/android_adb_enable to trigger // the enabling of the adb USB function in the kernel. // We never touch this file again - just leave it open // indefinitely so the kernel will know when we are running // and when we are not. fd = unix_open("/dev/android_adb_enable", O_RDWR); + fprintf(stderr, "unix_open to open usb_init(): %d\n", fd); if (fd < 0) { D("failed to open /dev/android_adb_enable\n"); } else { @@ -133,25 +257,237 @@ void usb_init() } D("[ usb_init - starting thread ]\n"); - if(adb_thread_create(&tid, usb_open_thread, h)){ + if(adb_thread_create(&tid, usb_adb_open_thread, h)){ fatal_errno("cannot create usb thread"); + fprintf(stderr, "cannot create the usb thread()\n"); } } -void usb_kick(usb_handle *h) -{ - D("usb_kick\n"); - adb_mutex_lock(&h->lock); - adb_close(h->fd); - h->fd = -1; - // notify usb_open_thread that we are disconnected +static void init_functionfs(struct usb_handle *h) +{ + ssize_t ret; + + D("OPENING %s\n", USB_FFS_ADB_EP0); + h->control = adb_open(USB_FFS_ADB_EP0, O_RDWR); + if (h->control < 0) { + D("[ %s: cannot open control endpoint: errno=%d]\n", USB_FFS_ADB_EP0, errno); + goto err; + } + + ret = adb_write(h->control, &descriptors, sizeof(descriptors)); + if (ret < 0) { + D("[ %s: write descriptors failed: errno=%d ]\n", USB_FFS_ADB_EP0, errno); + goto err; + } + + ret = adb_write(h->control, &strings, sizeof(strings)); + if (ret < 0) { + D("[ %s: writing strings failed: errno=%d]\n", USB_FFS_ADB_EP0, errno); + goto err; + } + + h->bulk_out = adb_open(USB_FFS_ADB_OUT, O_RDWR); + if (h->bulk_out < 0) { + D("[ %s: cannot open bulk-out ep: errno=%d ]\n", USB_FFS_ADB_OUT, errno); + goto err; + } + + h->bulk_in = adb_open(USB_FFS_ADB_IN, O_RDWR); + if (h->bulk_in < 0) { + D("[ %s: cannot open bulk-in ep: errno=%d ]\n", USB_FFS_ADB_IN, errno); + goto err; + } + + return; + +err: + if (h->bulk_in > 0) { + adb_close(h->bulk_in); + h->bulk_in = -1; + } + if (h->bulk_out > 0) { + adb_close(h->bulk_out); + h->bulk_out = -1; + } + if (h->control > 0) { + adb_close(h->control); + h->control = -1; + } + return; +} + +static void *usb_ffs_open_thread(void *x) +{ + struct usb_handle *usb = (struct usb_handle *)x; + + while (1) { + // wait until the USB device needs opening + adb_mutex_lock(&usb->lock); + while (usb->control != -1) + adb_cond_wait(&usb->notify, &usb->lock); + adb_mutex_unlock(&usb->lock); + + while (1) { + init_functionfs(usb); + + if (usb->control >= 0) + break; + + adb_sleep_ms(1000); + } + + D("[ usb_thread - registering device ]\n"); + register_usb_transport(usb, 0, 1); + } + + // never gets here + return 0; +} + +static int bulk_write(int bulk_in, const char *buf, size_t length) +{ + size_t count = 0; + int ret; + + do { + ret = adb_write(bulk_in, buf + count, length - count); + if (ret < 0) { + if (errno != EINTR) + return ret; + } else { + count += ret; + } + } while (count < length); + + D("[ bulk_write done fd=%d ]\n", bulk_in); + return count; +} + +static int usb_ffs_write(usb_handle *h, const void *data, int len) +{ + int n; + + D("about to write (fd=%d, len=%d)\n", h->bulk_in, len); + n = bulk_write(h->bulk_in, data, len); + if (n != len) { + D("ERROR: fd = %d, n = %d, errno = %d (%s)\n", + h->bulk_in, n, errno, strerror(errno)); + return -1; + } + D("[ done fd=%d ]\n", h->bulk_in); + return 0; +} + +static int bulk_read(int bulk_out, char *buf, size_t length) +{ + size_t count = 0; + int ret; + + do { + ret = adb_read(bulk_out, buf + count, length - count); + if (ret < 0) { + if (errno != EINTR) { + D("[ bulk_read failed fd=%d length=%d count=%d ]\n", + bulk_out, length, count); + return ret; + } + } else { + count += ret; + } + } while (count < length); + + return count; +} + +static int usb_ffs_read(usb_handle *h, void *data, int len) +{ + int n; + + D("about to read (fd=%d, len=%d)\n", h->bulk_out, len); + n = bulk_read(h->bulk_out, data, len); + if (n != len) { + D("ERROR: fd = %d, n = %d, errno = %d (%s)\n", + h->bulk_out, n, errno, strerror(errno)); + return -1; + } + D("[ done fd=%d ]\n", h->bulk_out); + return 0; +} + +static void usb_ffs_kick(usb_handle *h) +{ + int err; + + err = ioctl(h->bulk_in, FUNCTIONFS_CLEAR_HALT); + if (err < 0) + D("[ kick: source (fd=%d) clear halt failed (%d) ]", h->bulk_in, errno); + + err = ioctl(h->bulk_out, FUNCTIONFS_CLEAR_HALT); + if (err < 0) + D("[ kick: sink (fd=%d) clear halt failed (%d) ]", h->bulk_out, errno); + + adb_mutex_lock(&h->lock); + adb_close(h->control); + adb_close(h->bulk_out); + adb_close(h->bulk_in); + h->control = h->bulk_out = h->bulk_in = -1; + + // notify usb_ffs_open_thread that we are disconnected adb_cond_signal(&h->notify); adb_mutex_unlock(&h->lock); } +static void usb_ffs_init() +{ + usb_handle *h; + adb_thread_t tid; + + D("[ usb_init - using FunctionFS ]\n"); + + h = calloc(1, sizeof(usb_handle)); + + h->write = usb_ffs_write; + h->read = usb_ffs_read; + h->kick = usb_ffs_kick; + + h->control = -1; + h->bulk_out = -1; + h->bulk_out = -1; + + adb_cond_init(&h->notify, 0); + adb_mutex_init(&h->lock, 0); + + D("[ usb_init - starting thread ]\n"); + if (adb_thread_create(&tid, usb_ffs_open_thread, h)){ + fatal_errno("[ cannot create usb thread ]\n"); + } +} + +void usb_init() +{ + if (access(USB_FFS_ADB_EP0, F_OK) == 0) + usb_ffs_init(); + else + usb_adb_init(); +} + +int usb_write(usb_handle *h, const void *data, int len) +{ + return h->write(h, data, len); +} + +int usb_read(usb_handle *h, void *data, int len) +{ + return h->read(h, data, len); +} int usb_close(usb_handle *h) { // nothing to do here return 0; } + +void usb_kick(usb_handle *h) +{ + h->kick(h); +} From c52c5b8e3d690201b2ae009a2d396d1899033e3d Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Sat, 18 Jan 2014 09:22:50 -0800 Subject: [PATCH 029/110] adbd: switch to su domain when running as root When adbd runs as root, it should transition into the su domain. This is needed to run the adbd and shell domains in enforcing on userdebug / eng devices without breaking developer workflows. Use the new device_banner command line option. Change-Id: Ib33c0dd2dd6172035230514ac84fcaed2ecf44d6 --- etc/init.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/init.rc b/etc/init.rc index 8d49f24e..159747e2 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -59,7 +59,7 @@ service healthd /sbin/healthd -n service recovery /sbin/recovery seclabel u:r:recovery:s0 -service adbd /sbin/adbd recovery +service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery disabled socket adbd stream 660 system system seclabel u:r:adbd:s0 From 19a8e2463c31a97121c35b4666a8e6879fa7e338 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 21 Jan 2014 09:25:41 -0800 Subject: [PATCH 030/110] log extra info for debugging Make recovery log its PID, and when we use a block map file, log how many ranges it contains. Change-Id: I1b4299f8163af68a770b48c029ae25e6cb45d26b --- minzip/SysUtil.c | 2 ++ recovery.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/minzip/SysUtil.c b/minzip/SysUtil.c index 2cfa39ae..c046a8cf 100644 --- a/minzip/SysUtil.c +++ b/minzip/SysUtil.c @@ -153,6 +153,8 @@ static int sysMapBlockFile(FILE* mapf, MemMapping* pMap) pMap->addr = reserve; pMap->length = size; + LOGI("mmapped %d ranges\n", range_count); + return 0; } diff --git a/recovery.cpp b/recovery.cpp index 43cd9daf..0a8c3b52 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -938,7 +938,7 @@ main(int argc, char **argv) { return 0; } - printf("Starting recovery on %s", ctime(&start)); + printf("Starting recovery (pid %d) on %s", getpid(), ctime(&start)); load_volume_table(); ensure_path_mounted(LAST_LOG_FILE); From e787fee8f28d7cf6ab15635671ec46b1ce6bc87d Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 23 Jan 2014 16:39:22 -0800 Subject: [PATCH 031/110] minadbd: remove dead code Change-Id: Ia1f34a17ae582575f8cd3514ed7bc015b0a5006e --- minadbd/adb.h | 4 ---- minadbd/transport.c | 21 --------------------- 2 files changed, 25 deletions(-) diff --git a/minadbd/adb.h b/minadbd/adb.h index 98fa5972..688a6f27 100644 --- a/minadbd/adb.h +++ b/minadbd/adb.h @@ -244,15 +244,11 @@ void kick_transport( atransport* t ); #if ADB_HOST int get_available_local_transport_index(); #endif -int init_socket_transport(atransport *t, int s, int port, int local); void init_usb_transport(atransport *t, usb_handle *usb, int state); /* for MacOS X cleanup */ void close_usb_devices(); -/* cause new transports to be init'd and added to the list */ -void register_socket_transport(int s, const char *serial, int port, int local); - /* these should only be used for the "adb disconnect" command */ void unregister_transport(atransport *t); void unregister_all_tcp_transports(); diff --git a/minadbd/transport.c b/minadbd/transport.c index ff200493..4c0c97f7 100644 --- a/minadbd/transport.c +++ b/minadbd/transport.c @@ -678,27 +678,6 @@ retry: return result; } -void register_socket_transport(int s, const char *serial, int port, int local) -{ - atransport *t = calloc(1, sizeof(atransport)); - char buff[32]; - - if (!serial) { - snprintf(buff, sizeof buff, "T-%p", t); - serial = buff; - } - D("transport: %s init'ing for socket %d, on port %d\n", serial, s, port); - if ( init_socket_transport(t, s, port, local) < 0 ) { - adb_close(s); - free(t); - return; - } - if(serial) { - t->serial = strdup(serial); - } - register_transport(t); -} - void register_usb_transport(usb_handle *usb, const char *serial, unsigned writeable) { atransport *t = calloc(1, sizeof(atransport)); From 92cdf9c37225c6f76b96c8f137896cd9e9015bbd Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 5 Feb 2014 17:30:31 -0800 Subject: [PATCH 032/110] recovery: fix building with pointer-to-int errors turned on Use intptr_t/uintptr_t to cast between pointer and int to allow building with -Werror=pointer-to-int-cast and Werror=int-to-pointer-cast turned on. Cast to char* instead of unsigned int for pointer arithmetic. Change-Id: Ia862306fdcca53866b330e8cf726f3d62f2248a0 --- minadbd/services.c | 4 ++-- minui/graphics.c | 2 +- minzip/Zip.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/minadbd/services.c b/minadbd/services.c index aef37f7e..4698528e 100644 --- a/minadbd/services.c +++ b/minadbd/services.c @@ -46,7 +46,7 @@ void *service_bootstrap_func(void *x) static void sideload_service(int s, void *cookie) { unsigned char buf[4096]; - unsigned count = (unsigned) cookie; + unsigned count = (unsigned)(uintptr_t)cookie; int fd; fprintf(stderr, "sideload_service invoked\n"); @@ -149,7 +149,7 @@ int service_to_fd(const char *name) int ret = -1; if (!strncmp(name, "sideload:", 9)) { - ret = create_service_thread(sideload_service, (void*) atoi(name + 9)); + ret = create_service_thread(sideload_service, (void*)(uintptr_t)atoi(name + 9)); #if 0 } else if(!strncmp(name, "echo:", 5)){ ret = create_service_thread(echo_service, 0); diff --git a/minui/graphics.c b/minui/graphics.c index d7571653..a2014dca 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -157,7 +157,7 @@ static int get_framebuffer(GGLSurface *fb) fb->width = vi.xres; fb->height = vi.yres; fb->stride = fi.line_length/PIXEL_SIZE; - fb->data = (void*) (((unsigned) bits) + vi.yres * fi.line_length); + fb->data = (void*) (((char*) bits) + vi.yres * fi.line_length); fb->format = PIXEL_FORMAT; memset(fb->data, 0, vi.yres * fi.line_length); diff --git a/minzip/Zip.c b/minzip/Zip.c index 439e5d9c..f4f38a9f 100644 --- a/minzip/Zip.c +++ b/minzip/Zip.c @@ -772,7 +772,7 @@ bool mzReadZipEntry(const ZipArchive* pArchive, const ZipEntry* pEntry, static bool writeProcessFunction(const unsigned char *data, int dataLen, void *cookie) { - int fd = (int)cookie; + int fd = (int)(intptr_t)cookie; ssize_t soFar = 0; while (true) { @@ -802,7 +802,7 @@ bool mzExtractZipEntryToFile(const ZipArchive *pArchive, const ZipEntry *pEntry, int fd) { bool ret = mzProcessZipEntryContents(pArchive, pEntry, writeProcessFunction, - (void*)fd); + (void*)(intptr_t)fd); if (!ret) { LOGE("Can't extract entry to file.\n"); return false; From a9300301ce0bddb6f46e1e1a7499c13b615713c6 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 10 Feb 2014 12:35:19 -0800 Subject: [PATCH 033/110] add mzGetStoredEntry function mzGetStoredEntry gives you a pointer and address to the data of a zip entry, assuming that entry is stored rather than deflated. Change-Id: Ifb39777c98d1d50475ef7de419cf28935f5f9965 --- minzip/Zip.c | 21 +++++++++++++++++++-- minzip/Zip.h | 11 +++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/minzip/Zip.c b/minzip/Zip.c index 6785d4ea..abc98901 100644 --- a/minzip/Zip.c +++ b/minzip/Zip.c @@ -703,7 +703,7 @@ static bool writeProcessFunction(const unsigned char *data, int dataLen, while (true) { ssize_t n = write(fd, data+soFar, dataLen-soFar); if (n <= 0) { - LOGE("Error writing %ld bytes from zip file from %p: %s\n", + LOGE("Error writing %zd bytes from zip file from %p: %s\n", dataLen-soFar, data+soFar, strerror(errno)); if (errno != EINTR) { return false; @@ -712,7 +712,7 @@ static bool writeProcessFunction(const unsigned char *data, int dataLen, soFar += n; if (soFar == dataLen) return true; if (soFar > dataLen) { - LOGE("write overrun? (%ld bytes instead of %d)\n", + LOGE("write overrun? (%zd bytes instead of %d)\n", soFar, dataLen); return false; } @@ -735,6 +735,23 @@ bool mzExtractZipEntryToFile(const ZipArchive *pArchive, return true; } +/* + * Obtain a pointer to the in-memory representation of a stored entry. + */ +bool mzGetStoredEntry(const ZipArchive *pArchive, + const ZipEntry *pEntry, unsigned char **addr, size_t *length) +{ + if (pEntry->compression != STORED) { + LOGE("Can't getStoredEntry for '%s'; not stored\n", + pEntry->fileName); + return false; + } + + *addr = pArchive->addr + pEntry->offset; + *length = pEntry->uncompLen; + return true; +} + typedef struct { unsigned char* buffer; long len; diff --git a/minzip/Zip.h b/minzip/Zip.h index 05a2e60e..2054b38a 100644 --- a/minzip/Zip.h +++ b/minzip/Zip.h @@ -182,6 +182,17 @@ bool mzExtractZipEntryToFile(const ZipArchive *pArchive, bool mzExtractZipEntryToBuffer(const ZipArchive *pArchive, const ZipEntry *pEntry, unsigned char* buffer); +/* + * Return a pointer and length for a given entry. The returned region + * should be valid until pArchive is closed, and should be treated as + * read-only. + * + * Only makes sense for entries which are stored (ie, not compressed). + * No guarantees are made regarding alignment of the returned pointer. + */ +bool mzGetStoredEntry(const ZipArchive *pArchive, + const ZipEntry* pEntry, unsigned char **addr, size_t *length); + /* * Inflate all entries under zipDir to the directory specified by * targetDir, which must exist and be a writable directory. From 52b4036eb820042d0309b32b579c52b63ca58b4d Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 10 Feb 2014 15:30:30 -0800 Subject: [PATCH 034/110] add syspatch support to updater Add the syspatch() function, which can apply xdelta3+xz patches using the libsyspatch library. Change-Id: Idc1921e449020923bcaf425a1983bec0833e47ed --- updater/Android.mk | 2 + updater/install.c | 127 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 115 insertions(+), 14 deletions(-) diff --git a/updater/Android.mk b/updater/Android.mk index 67e98ecd..2e92504c 100644 --- a/updater/Android.mk +++ b/updater/Android.mk @@ -35,6 +35,8 @@ LOCAL_STATIC_LIBRARIES += libcutils liblog libstdc++ libc LOCAL_STATIC_LIBRARIES += libselinux LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. +LOCAL_STATIC_LIBRARIES += libsyspatch libxz libxdelta3 + # Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function # named "Register_()". Here we emit a little C function that # gets #included by updater.c. It calls all those registration diff --git a/updater/install.c b/updater/install.c index aebd4f34..2cf00bf1 100644 --- a/updater/install.c +++ b/updater/install.c @@ -45,11 +45,25 @@ #include "mtdutils/mounts.h" #include "mtdutils/mtdutils.h" #include "updater.h" +#include "syspatch.h" #ifdef USE_EXT4 #include "make_ext4fs.h" #endif +// Take a sha-1 digest and return it as a newly-allocated hex string. +static char* PrintSha1(uint8_t* digest) { + char* buffer = malloc(SHA_DIGEST_SIZE*2 + 1); + int i; + const char* alphabet = "0123456789abcdef"; + for (i = 0; i < SHA_DIGEST_SIZE; ++i) { + buffer[i*2] = alphabet[(digest[i] >> 4) & 0xf]; + buffer[i*2+1] = alphabet[digest[i] & 0xf]; + } + buffer[i*2] = '\0'; + return buffer; +} + // mount(fs_type, partition_type, location, mount_point) // // fs_type="yaffs2" partition_type="MTD" location=partition @@ -1053,8 +1067,104 @@ Value* ApplyPatchSpaceFn(const char* name, State* state, return StringValue(strdup(CacheSizeCheck(bytes) ? "" : "t")); } +// syspatch(file, size, tgt_sha1, init_sha1, patch) + +Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { + if (argc != 5) { + return ErrorAbort(state, "%s(): expected 5 args, got %d", name, argc); + } + + char* filename; + char* filename_size_str; + char* target_sha1; + char* init_sha1; + char* patch_filename; + uint8_t target_digest[SHA_DIGEST_SIZE]; + uint8_t init_digest[SHA_DIGEST_SIZE]; + + if (ReadArgs(state, argv, 5, &filename, &filename_size_str, + &target_sha1, &init_sha1, &patch_filename) < 0) { + return NULL; + } + + if (ParseSha1(target_sha1, target_digest) != 0) { + printf("%s(): failed to parse '%s' as target SHA-1", name, target_sha1); + memset(target_digest, 0, SHA_DIGEST_SIZE); + } + if (ParseSha1(init_sha1, init_digest) != 0) { + printf("%s(): failed to parse '%s' as init SHA-1", name, init_sha1); + memset(init_digest, 0, SHA_DIGEST_SIZE); + } + + size_t len = strtoull(filename_size_str, NULL, 0); + + SHA_CTX ctx; + SHA_init(&ctx); + FILE* src = fopen(filename, "r"); + size_t pos = 0; + unsigned char buffer[4096]; + while (pos < len) { + size_t to_read = len - pos; + if (to_read > sizeof(buffer)) to_read = sizeof(buffer); + size_t read = fread(buffer, 1, to_read, src); + if (read <= 0) { + printf("%s(): short read after %zu bytes\n", name, pos); + break; + } + SHA_update(&ctx, buffer, read); + pos += read; + } + rewind(src); + uint8_t* digest = SHA_final(&ctx); + + char* hexdigest = PrintSha1(digest); + printf(" system partition sha1 = %s\n", hexdigest); + + if (memcmp(digest, target_digest, SHA_DIGEST_SIZE) == 0) { + printf("%s(): %s is already target\n", name, filename); + fclose(src); + goto done; + } + + if (memcmp(digest, init_digest, SHA_DIGEST_SIZE) != 0) { + return ErrorAbort(state, "%s(): %s in unknown state\n", name, filename); + } + + ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; + + const ZipEntry* entry = mzFindZipEntry(za, patch_filename); + if (entry == NULL) { + return ErrorAbort(state, "%s(): no %s in package\n", name, patch_filename); + } + + unsigned char* patch_data; + size_t patch_len; + if (!mzGetStoredEntry(za, entry, &patch_data, &patch_len)) { + return ErrorAbort(state, "%s(): failed to get %s entry\n", name, patch_filename); + } + + FILE* tgt = fopen(filename, "r+"); + + int ret = syspatch(src, patch_data, patch_len, tgt); + + fclose(src); + fclose(tgt); + + if (ret != 0) { + return ErrorAbort(state, "%s(): patching failed\n", name); + } + + done: + free(filename_size_str); + free(target_sha1); + free(init_sha1); + free(patch_filename); + return StringValue(filename); + +} + +// apply_patch(file, size, init_sha1, tgt_sha1, patch) -// apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ...) Value* ApplyPatchFn(const char* name, State* state, int argc, Expr* argv[]) { if (argc < 6 || (argc % 2) == 1) { return ErrorAbort(state, "%s(): expected at least 6 args and an " @@ -1239,19 +1349,6 @@ Value* RunProgramFn(const char* name, State* state, int argc, Expr* argv[]) { return StringValue(strdup(buffer)); } -// Take a sha-1 digest and return it as a newly-allocated hex string. -static char* PrintSha1(uint8_t* digest) { - char* buffer = malloc(SHA_DIGEST_SIZE*2 + 1); - int i; - const char* alphabet = "0123456789abcdef"; - for (i = 0; i < SHA_DIGEST_SIZE; ++i) { - buffer[i*2] = alphabet[(digest[i] >> 4) & 0xf]; - buffer[i*2+1] = alphabet[digest[i] & 0xf]; - } - buffer[i*2] = '\0'; - return buffer; -} - // sha1_check(data) // to return the sha1 of the data (given in the format returned by // read_file). @@ -1469,6 +1566,8 @@ void RegisterInstallFunctions() { RegisterFunction("apply_patch_check", ApplyPatchCheckFn); RegisterFunction("apply_patch_space", ApplyPatchSpaceFn); + RegisterFunction("syspatch", SysPatchFn); + RegisterFunction("read_file", ReadFileFn); RegisterFunction("sha1_check", Sha1CheckFn); RegisterFunction("rename", RenameFn); From a1bc148c7c81f886426c253f2ea7beb0f301f6b0 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 13 Feb 2014 15:18:19 -0800 Subject: [PATCH 035/110] remove 'retouch' ASLR support Older versions of android supported an ASLR system where binaries were randomly twiddled at OTA install time. Remove support for this; we now use the ASLR support in the linux kernel. Change-Id: I8348eb0d6424692668dc1a00e2416fbef6c158a2 --- Android.mk | 1 - applypatch/applypatch.c | 35 ++----- applypatch/applypatch.h | 4 +- applypatch/main.c | 4 +- minelf/Android.mk | 27 ------ minelf/Retouch.c | 196 ---------------------------------------- minelf/Retouch.h | 45 --------- updater/install.c | 2 +- 8 files changed, 12 insertions(+), 302 deletions(-) delete mode 100644 minelf/Android.mk delete mode 100644 minelf/Retouch.c delete mode 100644 minelf/Retouch.h diff --git a/Android.mk b/Android.mk index b1e3798c..9773d5e8 100644 --- a/Android.mk +++ b/Android.mk @@ -106,7 +106,6 @@ include $(BUILD_EXECUTABLE) include $(LOCAL_PATH)/minui/Android.mk \ - $(LOCAL_PATH)/minelf/Android.mk \ $(LOCAL_PATH)/minzip/Android.mk \ $(LOCAL_PATH)/minadbd/Android.mk \ $(LOCAL_PATH)/mtdutils/Android.mk \ diff --git a/applypatch/applypatch.c b/applypatch/applypatch.c index cb9bc234..c9c40c98 100644 --- a/applypatch/applypatch.c +++ b/applypatch/applypatch.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "mincrypt/sha.h" #include "applypatch.h" @@ -44,14 +45,11 @@ static int GenerateTarget(FileContents* source_file, static int mtd_partitions_scanned = 0; -// Read a file into memory; optionally (retouch_flag == RETOUCH_DO_MASK) mask -// the retouched entries back to their original value (such that SHA-1 checks -// don't fail due to randomization); store the file contents and associated +// Read a file into memory; store the file contents and associated // metadata in *file. // // Return 0 on success. -int LoadFileContents(const char* filename, FileContents* file, - int retouch_flag) { +int LoadFileContents(const char* filename, FileContents* file) { file->data = NULL; // A special 'filename' beginning with "MTD:" or "EMMC:" means to @@ -87,20 +85,6 @@ int LoadFileContents(const char* filename, FileContents* file, } fclose(f); - // apply_patch[_check] functions are blind to randomization. Randomization - // is taken care of in [Undo]RetouchBinariesFn. If there is a mismatch - // within a file, this means the file is assumed "corrupt" for simplicity. - if (retouch_flag) { - int32_t desired_offset = 0; - if (retouch_mask_data(file->data, file->size, - &desired_offset, NULL) != RETOUCH_DATA_MATCHED) { - printf("error trying to mask retouch entries\n"); - free(file->data); - file->data = NULL; - return -1; - } - } - SHA_hash(file->data, file->size, file->sha1); return 0; } @@ -579,7 +563,7 @@ int applypatch_check(const char* filename, // LoadFileContents is successful. (Useful for reading // partitions, where the filename encodes the sha1s; no need to // check them twice.) - if (LoadFileContents(filename, &file, RETOUCH_DO_MASK) != 0 || + if (LoadFileContents(filename, &file) != 0 || (num_patches > 0 && FindMatchingPatch(file.sha1, patch_sha1_str, num_patches) < 0)) { printf("file \"%s\" doesn't have any of expected " @@ -594,7 +578,7 @@ int applypatch_check(const char* filename, // exists and matches the sha1 we're looking for, the check still // passes. - if (LoadFileContents(CACHE_TEMP_SOURCE, &file, RETOUCH_DO_MASK) != 0) { + if (LoadFileContents(CACHE_TEMP_SOURCE, &file) != 0) { printf("failed to load cache file\n"); return 1; } @@ -730,8 +714,7 @@ int applypatch(const char* source_filename, const Value* copy_patch_value = NULL; // We try to load the target file into the source_file object. - if (LoadFileContents(target_filename, &source_file, - RETOUCH_DO_MASK) == 0) { + if (LoadFileContents(target_filename, &source_file) == 0) { if (memcmp(source_file.sha1, target_sha1, SHA_DIGEST_SIZE) == 0) { // The early-exit case: the patch was already applied, this file // has the desired hash, nothing for us to do. @@ -750,8 +733,7 @@ int applypatch(const char* source_filename, // target file, or we did but it's different from the source file. free(source_file.data); source_file.data = NULL; - LoadFileContents(source_filename, &source_file, - RETOUCH_DO_MASK); + LoadFileContents(source_filename, &source_file); } if (source_file.data != NULL) { @@ -767,8 +749,7 @@ int applypatch(const char* source_filename, source_file.data = NULL; printf("source file is bad; trying copy\n"); - if (LoadFileContents(CACHE_TEMP_SOURCE, ©_file, - RETOUCH_DO_MASK) < 0) { + if (LoadFileContents(CACHE_TEMP_SOURCE, ©_file) < 0) { // fail. printf("failed to read copy file\n"); return 1; diff --git a/applypatch/applypatch.h b/applypatch/applypatch.h index f1f13a10..ee54c24e 100644 --- a/applypatch/applypatch.h +++ b/applypatch/applypatch.h @@ -19,7 +19,6 @@ #include #include "mincrypt/sha.h" -#include "minelf/Retouch.h" #include "edify/expr.h" typedef struct _Patch { @@ -61,8 +60,7 @@ int applypatch_check(const char* filename, int num_patches, char** const patch_sha1_str); -int LoadFileContents(const char* filename, FileContents* file, - int retouch_flag); +int LoadFileContents(const char* filename, FileContents* file); int SaveFileContents(const char* filename, const FileContents* file); void FreeFileContents(FileContents* file); int FindMatchingPatch(uint8_t* sha1, char* const * const patch_sha1_str, diff --git a/applypatch/main.c b/applypatch/main.c index f61db5d9..8e9fe80e 100644 --- a/applypatch/main.c +++ b/applypatch/main.c @@ -74,7 +74,7 @@ static int ParsePatchArgs(int argc, char** argv, (*patches)[i] = NULL; } else { FileContents fc; - if (LoadFileContents(colon, &fc, RETOUCH_DONT_MASK) != 0) { + if (LoadFileContents(colon, &fc) != 0) { goto abort; } (*patches)[i] = malloc(sizeof(Value)); @@ -103,7 +103,7 @@ int PatchMode(int argc, char** argv) { Value* bonus = NULL; if (argc >= 3 && strcmp(argv[1], "-b") == 0) { FileContents fc; - if (LoadFileContents(argv[2], &fc, RETOUCH_DONT_MASK) != 0) { + if (LoadFileContents(argv[2], &fc) != 0) { printf("failed to load bonus file %s\n", argv[2]); return 1; } diff --git a/minelf/Android.mk b/minelf/Android.mk deleted file mode 100644 index 0f41ff52..00000000 --- a/minelf/Android.mk +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (C) 2009 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. - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - Retouch.c - -LOCAL_C_INCLUDES += bootable/recovery - -LOCAL_MODULE := libminelf - -LOCAL_CFLAGS += -Wall - -include $(BUILD_STATIC_LIBRARY) diff --git a/minelf/Retouch.c b/minelf/Retouch.c deleted file mode 100644 index d75eec1e..00000000 --- a/minelf/Retouch.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (C) 2009 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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include "Retouch.h" -#include "applypatch/applypatch.h" - -typedef struct { - int32_t mmap_addr; - char tag[4]; /* 'P', 'R', 'E', ' ' */ -} prelink_info_t __attribute__((packed)); - -#define false 0 -#define true 1 - -static int32_t offs_prev; -static uint32_t cont_prev; - -static void init_compression_state(void) { - offs_prev = 0; - cont_prev = 0; -} - -// For details on the encoding used for relocation lists, please -// refer to build/tools/retouch/retouch-prepare.c. The intent is to -// save space by removing most of the inherent redundancy. - -static void decode_bytes(uint8_t *encoded_bytes, int encoded_size, - int32_t *dst_offset, uint32_t *dst_contents) { - if (encoded_size == 2) { - *dst_offset = offs_prev + (((encoded_bytes[0]&0x60)>>5)+1)*4; - - // if the original was negative, we need to 1-pad before applying delta - int32_t tmp = (((encoded_bytes[0] & 0x0000001f) << 8) | - encoded_bytes[1]); - if (tmp & 0x1000) tmp = 0xffffe000 | tmp; - *dst_contents = cont_prev + tmp; - } else if (encoded_size == 3) { - *dst_offset = offs_prev + (((encoded_bytes[0]&0x30)>>4)+1)*4; - - // if the original was negative, we need to 1-pad before applying delta - int32_t tmp = (((encoded_bytes[0] & 0x0000000f) << 16) | - (encoded_bytes[1] << 8) | - encoded_bytes[2]); - if (tmp & 0x80000) tmp = 0xfff00000 | tmp; - *dst_contents = cont_prev + tmp; - } else { - *dst_offset = - (encoded_bytes[0]<<24) | - (encoded_bytes[1]<<16) | - (encoded_bytes[2]<<8) | - encoded_bytes[3]; - if (*dst_offset == 0x3fffffff) *dst_offset = -1; - *dst_contents = - (encoded_bytes[4]<<24) | - (encoded_bytes[5]<<16) | - (encoded_bytes[6]<<8) | - encoded_bytes[7]; - } -} - -static uint8_t *decode_in_memory(uint8_t *encoded_bytes, - int32_t *offset, uint32_t *contents) { - int input_size, charIx; - uint8_t input[8]; - - input[0] = *(encoded_bytes++); - if (input[0] & 0x80) - input_size = 2; - else if (input[0] & 0x40) - input_size = 3; - else - input_size = 8; - - // we already read one byte.. - charIx = 1; - while (charIx < input_size) { - input[charIx++] = *(encoded_bytes++); - } - - // depends on the decoder state! - decode_bytes(input, input_size, offset, contents); - - offs_prev = *offset; - cont_prev = *contents; - - return encoded_bytes; -} - -int retouch_mask_data(uint8_t *binary_object, - int32_t binary_size, - int32_t *desired_offset, - int32_t *retouch_offset) { - retouch_info_t *r_info; - prelink_info_t *p_info; - - int32_t target_offset = 0; - if (desired_offset) target_offset = *desired_offset; - - int32_t p_offs = binary_size-sizeof(prelink_info_t); // prelink_info_t - int32_t r_offs = p_offs-sizeof(retouch_info_t); // retouch_info_t - int32_t b_offs; // retouch data blob - - // If not retouched, we say it was a match. This might get invoked on - // non-retouched binaries, so that's why we need to do this. - if (retouch_offset != NULL) *retouch_offset = target_offset; - if (r_offs < 0) return (desired_offset == NULL) ? - RETOUCH_DATA_NOTAPPLICABLE : RETOUCH_DATA_MATCHED; - p_info = (prelink_info_t *)(binary_object+p_offs); - r_info = (retouch_info_t *)(binary_object+r_offs); - if (strncmp(p_info->tag, "PRE ", 4) || - strncmp(r_info->tag, "RETOUCH ", 8)) - return (desired_offset == NULL) ? - RETOUCH_DATA_NOTAPPLICABLE : RETOUCH_DATA_MATCHED; - - b_offs = r_offs-r_info->blob_size; - if (b_offs < 0) { - printf("negative binary offset: %d = %d - %d\n", - b_offs, r_offs, r_info->blob_size); - return RETOUCH_DATA_ERROR; - } - uint8_t *b_ptr = binary_object+b_offs; - - // Retouched: let's go through the work then. - int32_t offset_candidate = target_offset; - bool offset_set = false, offset_mismatch = false; - init_compression_state(); - while (b_ptr < (uint8_t *)r_info) { - int32_t retouch_entry_offset; - uint32_t *retouch_entry; - uint32_t retouch_original_value; - - b_ptr = decode_in_memory(b_ptr, - &retouch_entry_offset, - &retouch_original_value); - if (retouch_entry_offset < (-1) || - retouch_entry_offset >= b_offs) { - printf("bad retouch_entry_offset: %d", retouch_entry_offset); - return RETOUCH_DATA_ERROR; - } - - // "-1" means this is the value in prelink_info_t, which also gets - // randomized. - if (retouch_entry_offset == -1) - retouch_entry = (uint32_t *)&(p_info->mmap_addr); - else - retouch_entry = (uint32_t *)(binary_object+retouch_entry_offset); - - if (desired_offset) - *retouch_entry = retouch_original_value + target_offset; - - // Infer the randomization shift, compare to previously inferred. - int32_t offset_of_this_entry = (int32_t)(*retouch_entry- - retouch_original_value); - if (!offset_set) { - offset_candidate = offset_of_this_entry; - offset_set = true; - } else { - if (offset_candidate != offset_of_this_entry) { - offset_mismatch = true; - printf("offset is mismatched: %d, this entry is %d," - " original 0x%x @ 0x%x", - offset_candidate, offset_of_this_entry, - retouch_original_value, retouch_entry_offset); - } - } - } - if (b_ptr > (uint8_t *)r_info) { - printf("b_ptr went too far: %p, while r_info is %p", - b_ptr, r_info); - return RETOUCH_DATA_ERROR; - } - - if (offset_mismatch) return RETOUCH_DATA_MISMATCHED; - if (retouch_offset != NULL) *retouch_offset = offset_candidate; - return RETOUCH_DATA_MATCHED; -} diff --git a/minelf/Retouch.h b/minelf/Retouch.h deleted file mode 100644 index 13bacd5a..00000000 --- a/minelf/Retouch.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2009 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. - */ - -#ifndef _MINELF_RETOUCH -#define _MINELF_RETOUCH - -#include -#include - -typedef struct { - char tag[8]; /* "RETOUCH ", not zero-terminated */ - uint32_t blob_size; /* in bytes, located right before this struct */ -} retouch_info_t __attribute__((packed)); - -#define RETOUCH_DONT_MASK 0 -#define RETOUCH_DO_MASK 1 - -#define RETOUCH_DATA_ERROR 0 // This is bad. Should not happen. -#define RETOUCH_DATA_MATCHED 1 // Up to an uniform random offset. -#define RETOUCH_DATA_MISMATCHED 2 // Partially randomized, or total mess. -#define RETOUCH_DATA_NOTAPPLICABLE 3 // Not retouched. Only when inferring. - -// Mask retouching in-memory. Used before apply_patch[_check]. -// Also used to determine status of retouching after a crash. -// -// If desired_offset is not NULL, then apply retouching instead, -// and return that in retouch_offset. -int retouch_mask_data(uint8_t *binary_object, - int32_t binary_size, - int32_t *desired_offset, - int32_t *retouch_offset); -#endif diff --git a/updater/install.c b/updater/install.c index 2cf00bf1..e85ba50a 100644 --- a/updater/install.c +++ b/updater/install.c @@ -1419,7 +1419,7 @@ Value* ReadFileFn(const char* name, State* state, int argc, Expr* argv[]) { v->type = VAL_BLOB; FileContents fc; - if (LoadFileContents(filename, &fc, RETOUCH_DONT_MASK) != 0) { + if (LoadFileContents(filename, &fc) != 0) { free(filename); v->size = -1; v->data = NULL; From 0d32f259cddeaf46917bdc4af3514114c206dd76 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 13 Feb 2014 15:07:56 -0800 Subject: [PATCH 036/110] clean up some warnings when building recovery Change-Id: I1541534ee6978ddf8d548433986679ce9507d508 --- Android.mk | 2 ++ edify/Android.mk | 2 ++ edify/expr.c | 2 -- edify/expr.h | 2 ++ edify/main.c | 7 ++----- edify/parser.y | 9 +++++++++ recovery.cpp | 2 +- updater/Android.mk | 1 + updater/install.c | 6 +++--- updater/updater.c | 3 +-- 10 files changed, 23 insertions(+), 13 deletions(-) diff --git a/Android.mk b/Android.mk index 9773d5e8..c910e7db 100644 --- a/Android.mk +++ b/Android.mk @@ -35,6 +35,7 @@ LOCAL_FORCE_STATIC_EXECUTABLE := true RECOVERY_API_VERSION := 3 RECOVERY_FSTAB_VERSION := 2 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION) +LOCAL_CFLAGS += -Wno-unused-parameter LOCAL_STATIC_LIBRARIES := \ libext4_utils_static \ @@ -90,6 +91,7 @@ LOCAL_MODULE := verifier_test LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_TAGS := tests LOCAL_CFLAGS += -DNO_RECOVERY_MOUNT +LOCAL_CFLAGS += -Wno-unused-parameter LOCAL_SRC_FILES := \ verifier_test.cpp \ asn1_decoder.cpp \ diff --git a/edify/Android.mk b/edify/Android.mk index fac0ba71..61ed6fa1 100644 --- a/edify/Android.mk +++ b/edify/Android.mk @@ -23,6 +23,7 @@ LOCAL_SRC_FILES := \ LOCAL_CFLAGS := $(edify_cflags) -g -O0 LOCAL_MODULE := edify LOCAL_YACCFLAGS := -v +LOCAL_CFLAGS += -Wno-unused-parameter include $(BUILD_HOST_EXECUTABLE) @@ -34,6 +35,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := $(edify_src_files) LOCAL_CFLAGS := $(edify_cflags) +LOCAL_CFLAGS += -Wno-unused-parameter LOCAL_MODULE := libedify include $(BUILD_STATIC_LIBRARY) diff --git a/edify/expr.c b/edify/expr.c index a2f1f99d..79f6282d 100644 --- a/edify/expr.c +++ b/edify/expr.c @@ -287,13 +287,11 @@ Value* LessThanIntFn(const char* name, State* state, int argc, Expr* argv[]) { long l_int = strtol(left, &end, 10); if (left[0] == '\0' || *end != '\0') { - printf("[%s] is not an int\n", left); goto done; } long r_int = strtol(right, &end, 10); if (right[0] == '\0' || *end != '\0') { - printf("[%s] is not an int\n", right); goto done; } diff --git a/edify/expr.h b/edify/expr.h index 0d8ed8f5..a9ed2f9c 100644 --- a/edify/expr.h +++ b/edify/expr.h @@ -164,6 +164,8 @@ Value* StringValue(char* str); // Free a Value object. void FreeValue(Value* v); +int parse_string(const char* str, Expr** root, int* error_count); + #ifdef __cplusplus } // extern "C" #endif diff --git a/edify/main.c b/edify/main.c index 9e6bab7c..b3fad53b 100644 --- a/edify/main.c +++ b/edify/main.c @@ -30,9 +30,7 @@ int expect(const char* expr_str, const char* expected, int* errors) { printf("."); - yy_scan_string(expr_str); - int error_count = 0; - error = yyparse(&e, &error_count); + int error_count = parse_string(expr_str, &e, &error_count); if (error > 0 || error_count > 0) { printf("error parsing \"%s\" (%d errors)\n", expr_str, error_count); @@ -193,8 +191,7 @@ int main(int argc, char** argv) { Expr* root; int error_count = 0; - yy_scan_bytes(buffer, size); - int error = yyparse(&root, &error_count); + int error = parse_string(buffer, &root, &error_count); printf("parse returned %d; %d errors encountered\n", error, error_count); if (error == 0 || error_count > 0) { diff --git a/edify/parser.y b/edify/parser.y index 3f9ade14..f8fb2d12 100644 --- a/edify/parser.y +++ b/edify/parser.y @@ -29,6 +29,10 @@ extern int gColumn; void yyerror(Expr** root, int* error_count, const char* s); int yyparse(Expr** root, int* error_count); +struct yy_buffer_state; +void yy_switch_to_buffer(struct yy_buffer_state* new_buffer); +struct yy_buffer_state* yy_scan_string(const char* yystr); + %} %locations @@ -128,3 +132,8 @@ void yyerror(Expr** root, int* error_count, const char* s) { printf("line %d col %d: %s\n", gLine, gColumn, s); ++*error_count; } + +int parse_string(const char* str, Expr** root, int* error_count) { + yy_switch_to_buffer(yy_scan_string(str)); + return yyparse(root, error_count); +} diff --git a/recovery.cpp b/recovery.cpp index 0a8c3b52..db35f1e9 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -980,7 +980,7 @@ main(int argc, char **argv) { load_locale_from_cache(); } printf("locale is [%s]\n", locale); - printf("stage is [%s]\n", stage, stage); + printf("stage is [%s]\n", stage); Device* device = make_device(); ui = device->GetUI(); diff --git a/updater/Android.mk b/updater/Android.mk index 2e92504c..c21ff8ec 100644 --- a/updater/Android.mk +++ b/updater/Android.mk @@ -20,6 +20,7 @@ LOCAL_SRC_FILES := $(updater_src_files) ifeq ($(TARGET_USERIMAGES_USE_EXT4), true) LOCAL_CFLAGS += -DUSE_EXT4 +LOCAL_CFLAGS += -Wno-unused-parameter LOCAL_C_INCLUDES += system/extras/ext4_utils LOCAL_STATIC_LIBRARIES += \ libext4_utils_static \ diff --git a/updater/install.c b/updater/install.c index e85ba50a..ccafad9c 100644 --- a/updater/install.c +++ b/updater/install.c @@ -52,7 +52,7 @@ #endif // Take a sha-1 digest and return it as a newly-allocated hex string. -static char* PrintSha1(uint8_t* digest) { +static char* PrintSha1(const uint8_t* digest) { char* buffer = malloc(SHA_DIGEST_SIZE*2 + 1); int i; const char* alphabet = "0123456789abcdef"; @@ -1115,9 +1115,9 @@ Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { pos += read; } rewind(src); - uint8_t* digest = SHA_final(&ctx); + const uint8_t* digest = SHA_final(&ctx); - char* hexdigest = PrintSha1(digest); + const char* hexdigest = PrintSha1(digest); printf(" system partition sha1 = %s\n", hexdigest); if (memcmp(digest, target_digest, SHA_DIGEST_SIZE) == 0) { diff --git a/updater/updater.c b/updater/updater.c index 4e1cc9c3..b7af3e50 100644 --- a/updater/updater.c +++ b/updater/updater.c @@ -105,8 +105,7 @@ int main(int argc, char** argv) { Expr* root; int error_count = 0; - yy_scan_string(script); - int error = yyparse(&root, &error_count); + int error = parse_string(script, &root, &error_count); if (error != 0 || error_count > 0) { printf("%d parse errors\n", error_count); return 6; From 3eb681d1de4eb0a4807e851c323568ed3f360381 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 13 Feb 2014 15:49:35 -0800 Subject: [PATCH 037/110] remove remaining libminelf references Change-Id: Id38b08607829bccc031693cc03e60e849903b6f8 --- applypatch/Android.mk | 4 ++-- updater/Android.mk | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/applypatch/Android.mk b/applypatch/Android.mk index ef57f243..4984093d 100644 --- a/applypatch/Android.mk +++ b/applypatch/Android.mk @@ -28,7 +28,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := main.c LOCAL_MODULE := applypatch LOCAL_C_INCLUDES += bootable/recovery -LOCAL_STATIC_LIBRARIES += libapplypatch libmtdutils libmincrypt libbz libminelf +LOCAL_STATIC_LIBRARIES += libapplypatch libmtdutils libmincrypt libbz LOCAL_SHARED_LIBRARIES += libz libcutils libstdc++ libc include $(BUILD_EXECUTABLE) @@ -40,7 +40,7 @@ LOCAL_MODULE := applypatch_static LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_TAGS := eng LOCAL_C_INCLUDES += bootable/recovery -LOCAL_STATIC_LIBRARIES += libapplypatch libmtdutils libmincrypt libbz libminelf +LOCAL_STATIC_LIBRARIES += libapplypatch libmtdutils libmincrypt libbz LOCAL_STATIC_LIBRARIES += libz libcutils libstdc++ libc include $(BUILD_EXECUTABLE) diff --git a/updater/Android.mk b/updater/Android.mk index 2e92504c..ebcfef15 100644 --- a/updater/Android.mk +++ b/updater/Android.mk @@ -30,7 +30,6 @@ endif LOCAL_STATIC_LIBRARIES += $(TARGET_RECOVERY_UPDATER_LIBS) $(TARGET_RECOVERY_UPDATER_EXTRA_LIBS) LOCAL_STATIC_LIBRARIES += libapplypatch libedify libmtdutils libminzip libz LOCAL_STATIC_LIBRARIES += libmincrypt libbz -LOCAL_STATIC_LIBRARIES += libminelf LOCAL_STATIC_LIBRARIES += libcutils liblog libstdc++ libc LOCAL_STATIC_LIBRARIES += libselinux LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. From e7b288824589b2828d83e1d47f6f12b0bd0fb353 Mon Sep 17 00:00:00 2001 From: Maxim Siniavine Date: Thu, 13 Feb 2014 15:48:53 -0800 Subject: [PATCH 038/110] Fix a crash when going into recovery mode. When going into recovery mode withoug recovery command file present, uncrypt crashes and the device gets stuck and eventually shuts down. Check that the command file is present before trying to read from it. Change-Id: If0192d597032be0067738e437188d92993ce56f7 --- uncrypt/uncrypt.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index 1f0f59db..7c2d9947 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -149,9 +149,14 @@ char* parse_recovery_command_file() int count = 0; char temp[1024]; - FILE* fo = fopen(RECOVERY_COMMAND_FILE_TMP, "w"); + FILE* f = fopen(RECOVERY_COMMAND_FILE, "r"); + if (f == NULL) { + return NULL; + } + FILE* fo = fopen(RECOVERY_COMMAND_FILE_TMP, "w"); + while (fgets(temp, sizeof(temp), f)) { printf("read: %s", temp); if (strncmp(temp, "--update_package=", strlen("--update_package=")) == 0) { From 1b9641127c539c73cf97d7a69fa917838043db92 Mon Sep 17 00:00:00 2001 From: Benoit Goby Date: Wed, 19 Feb 2014 17:41:02 -0800 Subject: [PATCH 039/110] recovery: Fix adb with linux 3.10 In kernel 3.10, f_adb has been removed and adbd can use functionfs instead. Mount functionfs on boot for adbd. On older kernels, mount will fail silently and adbd will revert to f_adb. Change-Id: I5db57aaf35b35859ea88c7d0e0661d8c553e5811 --- etc/init.rc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/init.rc b/etc/init.rc index 159747e2..6e0595b4 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -28,9 +28,15 @@ on init chown root shell /tmp chmod 0775 /tmp +on fs + mkdir /dev/usb-ffs 0770 shell shell + mkdir /dev/usb-ffs/adb 0770 shell shell + mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000 + write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct D001 + write /sys/class/android_usb/android0/f_ffs/aliases adb write /sys/class/android_usb/android0/functions adb write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer} write /sys/class/android_usb/android0/iProduct ${ro.product.model} From 0ac1cbaa76f1ab88ed575b197b06d042e015c10e Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 20 Feb 2014 09:46:19 -0800 Subject: [PATCH 040/110] add flag for GPL license updater now depends on the GPL'd libraries libsyspatch and libxdelta3, so be careful when taking code from this directory. Change-Id: Ib6f8c50ce7052912b9d81ff96d095f778bf9a3d0 --- updater/MODULE_LICENSE_GPL | 0 updater/NOTICE | 339 +++++++++++++++++++++++++++++++++++++ 2 files changed, 339 insertions(+) create mode 100644 updater/MODULE_LICENSE_GPL create mode 100644 updater/NOTICE diff --git a/updater/MODULE_LICENSE_GPL b/updater/MODULE_LICENSE_GPL new file mode 100644 index 00000000..e69de29b diff --git a/updater/NOTICE b/updater/NOTICE new file mode 100644 index 00000000..e77696ae --- /dev/null +++ b/updater/NOTICE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. From c9d6e4ff514b91b0ef08facb4dd480f166beae84 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 24 Feb 2014 16:02:50 -0800 Subject: [PATCH 041/110] support don't-care maps when writing the system image Make package_extract_file() take an optional third argument which is the pathname (in the package zip) of a map of don't-care regions to skip over when writing the file. Modify syspatch() to take source and target don't-care maps and use them when patching the system partition. Add the wipe_block_device() function to do a discard of all data on the partition. Change-Id: I8c856054edfb6aab2f3e5177f16d9d78add20be4 --- updater/install.c | 250 +++++++++++++++++++++++++++++++++------------- 1 file changed, 180 insertions(+), 70 deletions(-) diff --git a/updater/install.c b/updater/install.c index ccafad9c..faa1bb2f 100644 --- a/updater/install.c +++ b/updater/install.c @@ -46,9 +46,11 @@ #include "mtdutils/mtdutils.h" #include "updater.h" #include "syspatch.h" +#include "install.h" #ifdef USE_EXT4 #include "make_ext4fs.h" +#include "wipe.h" #endif // Take a sha-1 digest and return it as a newly-allocated hex string. @@ -428,6 +430,54 @@ Value* PackageExtractDirFn(const char* name, State* state, } +DontCareMap* ReadDontCareMapFromZip(ZipArchive* za, const char* path) { + const char* name = "ReadDontCareMapFromZip"; + + const ZipEntry* entry = mzFindZipEntry(za, path); + if (entry == NULL) { + printf("%s: no %s in package\n", name, path); + return NULL; + } + + size_t map_size = mzGetZipEntryUncompLen(entry); + char* map_data = malloc(map_size); + if (map_data == NULL) { + printf("%s: failed to allocate %zu bytes for %s\n", + name, map_size, path); + return NULL; + } + + if (!mzExtractZipEntryToBuffer(za, entry, (unsigned char*) map_data)) { + printf("%s: failed to read %s\n", name, path); + return NULL; + } + + char* p = map_data; + DontCareMap* map = (DontCareMap*) malloc(sizeof(DontCareMap)); + + map->block_size = strtoul(p, &p, 0); + if (map->block_size != 4096) { + printf("%s: unexpected block size %zu\n", name, map->block_size); + return NULL; + } + + map->region_count = strtoul(p, &p, 0); + map->regions = (int*) malloc(map->region_count * sizeof(int)); + + int i; + for (i = 0; i < map->region_count; ++i) { + map->regions[i] = strtoul(p, &p, 0); + } + + return map; +} + +bool MapWriter(const unsigned char* data, int dataLen, void* cookie) { + return write_with_map(data, dataLen, (MapState*) cookie) == dataLen; +} + +// package_extract_file(package_path, destination_path, map_path) +// or // package_extract_file(package_path, destination_path) // or // package_extract_file(package_path) @@ -435,19 +485,30 @@ Value* PackageExtractDirFn(const char* name, State* state, // function (the char* returned is actually a FileContents*). Value* PackageExtractFileFn(const char* name, State* state, int argc, Expr* argv[]) { - if (argc != 1 && argc != 2) { - return ErrorAbort(state, "%s() expects 1 or 2 args, got %d", + if (argc < 1 || argc > 3) { + return ErrorAbort(state, "%s() expects 1 or 2 or 3 args, got %d", name, argc); } bool success = false; - if (argc == 2) { - // The two-argument version extracts to a file. + if (argc >= 2) { + // The two-argument version extracts to a file; the three-arg + // version extracts to a file, skipping over regions in a + // don't care map. + + ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; char* zip_path; char* dest_path; - if (ReadArgs(state, argv, 2, &zip_path, &dest_path) < 0) return NULL; + char* map_path = NULL; + DontCareMap* map = NULL; + if (argc == 2) { + if (ReadArgs(state, argv, 2, &zip_path, &dest_path) < 0) return NULL; + } else { + if (ReadArgs(state, argv, 3, &zip_path, &dest_path, &map_path) < 0) return NULL; + map = ReadDontCareMapFromZip(za, map_path); + if (map == NULL) goto done2; + } - ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; const ZipEntry* entry = mzFindZipEntry(za, zip_path); if (entry == NULL) { printf("%s: no %s in package\n", name, zip_path); @@ -460,12 +521,26 @@ Value* PackageExtractFileFn(const char* name, State* state, name, dest_path, strerror(errno)); goto done2; } - success = mzExtractZipEntryToFile(za, entry, fileno(f)); + if (map) { + MapState state; + state.map = map; + state.cr = 0; + state.so_far = 0; + state.f = f; + success = mzProcessZipEntryContents(za, entry, MapWriter, &state); + } else { + success = mzExtractZipEntryToFile(za, entry, fileno(f)); + } fclose(f); done2: free(zip_path); free(dest_path); + free(map_path); + if (map) { + free(map->regions); + free(map); + } return StringValue(strdup(success ? "t" : "")); } else { // The one-argument version returns the contents of the file @@ -1067,23 +1142,48 @@ Value* ApplyPatchSpaceFn(const char* name, State* state, return StringValue(strdup(CacheSizeCheck(bytes) ? "" : "t")); } -// syspatch(file, size, tgt_sha1, init_sha1, patch) +bool CheckMappedFileSha1(FILE* f, DontCareMap* map, uint8_t* intended_digest) { + MapState state; + + state.f = f; + state.so_far = 0; + state.cr = 0; + state.map = map; + + SHA_CTX ctx; + SHA_init(&ctx); + + unsigned char buffer[32173]; + size_t bytes_read; + + while ((bytes_read = read_with_map(buffer, sizeof(buffer), &state)) > 0) { + SHA_update(&ctx, buffer, bytes_read); + } + const uint8_t* digest = SHA_final(&ctx); + + return memcmp(digest, intended_digest, SHA_DIGEST_SIZE) == 0; +} + + +// syspatch(file, tgt_mapfile, tgt_sha1, init_mapfile, init_sha1, patch) Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { - if (argc != 5) { - return ErrorAbort(state, "%s(): expected 5 args, got %d", name, argc); + if (argc != 6) { + return ErrorAbort(state, "%s(): expected 6 args, got %d", name, argc); } char* filename; - char* filename_size_str; + char* target_mapfilename; char* target_sha1; + char* init_mapfilename; char* init_sha1; char* patch_filename; uint8_t target_digest[SHA_DIGEST_SIZE]; uint8_t init_digest[SHA_DIGEST_SIZE]; - if (ReadArgs(state, argv, 5, &filename, &filename_size_str, - &target_sha1, &init_sha1, &patch_filename) < 0) { + if (ReadArgs(state, argv, 6, &filename, + &target_mapfilename, &target_sha1, + &init_mapfilename, &init_sha1, &patch_filename) < 0) { return NULL; } @@ -1096,68 +1196,56 @@ Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { memset(init_digest, 0, SHA_DIGEST_SIZE); } - size_t len = strtoull(filename_size_str, NULL, 0); - - SHA_CTX ctx; - SHA_init(&ctx); - FILE* src = fopen(filename, "r"); - size_t pos = 0; - unsigned char buffer[4096]; - while (pos < len) { - size_t to_read = len - pos; - if (to_read > sizeof(buffer)) to_read = sizeof(buffer); - size_t read = fread(buffer, 1, to_read, src); - if (read <= 0) { - printf("%s(): short read after %zu bytes\n", name, pos); - break; - } - SHA_update(&ctx, buffer, read); - pos += read; - } - rewind(src); - const uint8_t* digest = SHA_final(&ctx); - - const char* hexdigest = PrintSha1(digest); - printf(" system partition sha1 = %s\n", hexdigest); - - if (memcmp(digest, target_digest, SHA_DIGEST_SIZE) == 0) { - printf("%s(): %s is already target\n", name, filename); - fclose(src); - goto done; - } - - if (memcmp(digest, init_digest, SHA_DIGEST_SIZE) != 0) { - return ErrorAbort(state, "%s(): %s in unknown state\n", name, filename); - } - ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; + FILE* src = fopen(filename, "r"); - const ZipEntry* entry = mzFindZipEntry(za, patch_filename); - if (entry == NULL) { - return ErrorAbort(state, "%s(): no %s in package\n", name, patch_filename); + DontCareMap* init_map = ReadDontCareMapFromZip(za, init_mapfilename); + if (init_map == NULL) return ErrorAbort(state, "%s(): failed to read init map\n", name); + DontCareMap* target_map = ReadDontCareMapFromZip(za, target_mapfilename); + if (target_map == NULL) return ErrorAbort(state, "%s(): failed to read target map\n", name); + + if (CheckMappedFileSha1(src, init_map, init_digest)) { + // If the partition contents match the init_digest, then we need to apply the patch. + + rewind(src); + + const ZipEntry* entry = mzFindZipEntry(za, patch_filename); + if (entry == NULL) { + return ErrorAbort(state, "%s(): no %s in package\n", name, patch_filename); + } + + unsigned char* patch_data; + size_t patch_len; + if (!mzGetStoredEntry(za, entry, &patch_data, &patch_len)) { + return ErrorAbort(state, "%s(): failed to get %s entry\n", name, patch_filename); + } + + FILE* tgt = fopen(filename, "r+"); + + int ret = syspatch(src, init_map, patch_data, patch_len, tgt, target_map); + + fclose(src); + fclose(tgt); + + if (ret != 0) { + return ErrorAbort(state, "%s(): patching failed\n", name); + } + } else { + rewind(src); + if (CheckMappedFileSha1(src, target_map, target_digest)) { + // If the partition contents match the target already, we + // don't need to do anything. + printf("%s: output is already target\n", name); + } else { + return ErrorAbort(state, "%s(): %s in unknown state\n", name, filename); + } } - unsigned char* patch_data; - size_t patch_len; - if (!mzGetStoredEntry(za, entry, &patch_data, &patch_len)) { - return ErrorAbort(state, "%s(): failed to get %s entry\n", name, patch_filename); - } - - FILE* tgt = fopen(filename, "r+"); - - int ret = syspatch(src, patch_data, patch_len, tgt); - - fclose(src); - fclose(tgt); - - if (ret != 0) { - return ErrorAbort(state, "%s(): patching failed\n", name); - } - - done: - free(filename_size_str); + done: free(target_sha1); + free(target_mapfilename); free(init_sha1); + free(init_mapfilename); free(patch_filename); return StringValue(filename); @@ -1516,7 +1604,7 @@ Value* SetStageFn(const char* name, State* state, int argc, Expr* argv[]) { // Return the value most recently saved with SetStageFn. The argument // is the block device for the misc partition. Value* GetStageFn(const char* name, State* state, int argc, Expr* argv[]) { - if (argc != 2) { + if (argc != 1) { return ErrorAbort(state, "%s() expects 1 arg, got %d", name, argc); } @@ -1533,6 +1621,27 @@ Value* GetStageFn(const char* name, State* state, int argc, Expr* argv[]) { return StringValue(strdup(buffer)); } +Value* WipeBlockDeviceFn(const char* name, State* state, int argc, Expr* argv[]) { + if (argc != 2) { + return ErrorAbort(state, "%s() expects 2 args, got %d", name, argc); + } + + char* filename; + char* len_str; + if (ReadArgs(state, argv, 2, &filename, &len_str) < 0) return NULL; + + size_t len = strtoull(len_str, NULL, 0); + int fd = open(filename, O_WRONLY, 0644); + int success = wipe_block_device(fd, len); + + free(filename); + free(len_str); + + close(fd); + + return StringValue(strdup(success ? "t" : "")); +} + void RegisterInstallFunctions() { RegisterFunction("mount", MountFn); RegisterFunction("is_mounted", IsMountedFn); @@ -1566,6 +1675,7 @@ void RegisterInstallFunctions() { RegisterFunction("apply_patch_check", ApplyPatchCheckFn); RegisterFunction("apply_patch_space", ApplyPatchSpaceFn); + RegisterFunction("wipe_block_device", WipeBlockDeviceFn); RegisterFunction("syspatch", SysPatchFn); RegisterFunction("read_file", ReadFileFn); From a8c56072ecf826d5a1c49ea8d180092e7d6496e9 Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Mon, 3 Mar 2014 11:22:49 -0800 Subject: [PATCH 042/110] Fix build break caused by vold change cryptfs.h now includes sha header from libcrypto folder Change-Id: Icd02c88971aedf96040c3bd9ca759e531546023b --- Android.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/Android.mk b/Android.mk index c910e7db..3b899b5f 100644 --- a/Android.mk +++ b/Android.mk @@ -75,6 +75,7 @@ else endif LOCAL_C_INCLUDES += system/extras/ext4_utils +LOCAL_C_INCLUDES += external/openssl/include include $(BUILD_EXECUTABLE) From eac881c952fc6be0beeb5f719e3a70e651f3610e Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 7 Mar 2014 09:21:25 -0800 Subject: [PATCH 043/110] change how recovery animation is implemented Instead of one 'base' installing image and a number of overlay images that are drawn on top of it, we represent the installing animation with one PNG that contains all the animation frames, interlaced by row. The PNG is expected to have a text chunk with the keyword 'Frames' and a value that's the number of frames (as an ascii string). This representation provides better compression, removes the need to subclass ScreenRecoveryUI just to change the position of the overlay or number of frames, and doesn't require gr_blit() to support an alpha channel. We also remove the 'indeterminate' progress bar used when wiping data and/or cache. The main animation serves the same purpose (showing that the device is still alive); the spinning progress bar has been redundant for a while. This changes the default recovery animation to include the antenna-wiggling and gear-turning that's used in the Nexus 5 recovery animation. Change-Id: I51930a76035ac09969a25472f4e572b289418729 --- minui/minui.h | 1 + minui/resources.c | 182 ++++++++++++++++++++++- res/images/icon_installing.png | Bin 25261 -> 118562 bytes res/images/icon_installing_overlay01.png | Bin 10095 -> 0 bytes res/images/icon_installing_overlay02.png | Bin 9990 -> 0 bytes res/images/icon_installing_overlay03.png | Bin 9782 -> 0 bytes res/images/icon_installing_overlay04.png | Bin 9817 -> 0 bytes res/images/icon_installing_overlay05.png | Bin 9863 -> 0 bytes res/images/icon_installing_overlay06.png | Bin 9944 -> 0 bytes res/images/icon_installing_overlay07.png | Bin 10062 -> 0 bytes res/images/indeterminate01.png | Bin 673 -> 0 bytes res/images/indeterminate02.png | Bin 687 -> 0 bytes res/images/indeterminate03.png | Bin 661 -> 0 bytes res/images/indeterminate04.png | Bin 665 -> 0 bytes res/images/indeterminate05.png | Bin 683 -> 0 bytes res/images/indeterminate06.png | Bin 676 -> 0 bytes screen_ui.cpp | 109 +++----------- screen_ui.h | 9 +- 18 files changed, 202 insertions(+), 99 deletions(-) delete mode 100644 res/images/icon_installing_overlay01.png delete mode 100644 res/images/icon_installing_overlay02.png delete mode 100644 res/images/icon_installing_overlay03.png delete mode 100644 res/images/icon_installing_overlay04.png delete mode 100644 res/images/icon_installing_overlay05.png delete mode 100644 res/images/icon_installing_overlay06.png delete mode 100644 res/images/icon_installing_overlay07.png delete mode 100644 res/images/indeterminate01.png delete mode 100644 res/images/indeterminate02.png delete mode 100644 res/images/indeterminate03.png delete mode 100644 res/images/indeterminate04.png delete mode 100644 res/images/indeterminate05.png delete mode 100644 res/images/indeterminate06.png diff --git a/minui/minui.h b/minui/minui.h index 573dd71f..3250955c 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -73,6 +73,7 @@ int ev_get_epollfd(void); // Returns 0 if no error, else negative. int res_create_surface(const char* name, gr_surface* pSurface); +int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurface); int res_create_localized_surface(const char* name, gr_surface* pSurface); void res_free_surface(gr_surface surface); diff --git a/minui/resources.c b/minui/resources.c index b20c00ab..91b01eb1 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -189,6 +189,182 @@ exit: return result; } +int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurface) { + char resPath[256]; + int result = 0; + unsigned char header[8]; + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; + int i; + GGLSurface** surface = NULL; + + *pSurface = NULL; + *frames = -1; + + snprintf(resPath, sizeof(resPath)-1, "/res/images/%s.png", name); + resPath[sizeof(resPath)-1] = '\0'; + FILE* fp = fopen(resPath, "rb"); + if (fp == NULL) { + result = -1; + goto exit; + } + + size_t bytesRead = fread(header, 1, sizeof(header), fp); + if (bytesRead != sizeof(header)) { + result = -2; + goto exit; + } + + if (png_sig_cmp(header, 0, sizeof(header))) { + result = -3; + goto exit; + } + + png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) { + result = -4; + goto exit; + } + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + result = -5; + goto exit; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + result = -6; + goto exit; + } + + png_init_io(png_ptr, fp); + png_set_sig_bytes(png_ptr, sizeof(header)); + png_read_info(png_ptr, info_ptr); + + int color_type, bit_depth; + png_uint_32 width, height; + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, + &color_type, NULL, NULL, NULL); + + int channels = png_get_channels(png_ptr, info_ptr); + + if (!(bit_depth == 8 && + ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || + (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || + (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || + color_type == PNG_COLOR_TYPE_GRAY))))) { + return -7; + goto exit; + } + + *frames = 1; + png_textp text; + int num_text; + if (png_get_text(png_ptr, info_ptr, &text, &num_text)) { + for (i = 0; i < num_text; ++i) { + if (text[i].key && strcmp(text[i].key, "Frames") == 0 && text[i].text) { + *frames = atoi(text[i].text); + break; + } + } + printf(" found frames = %d\n", *frames); + } + + if (height % *frames != 0) { + printf("bad height (%d) for frame count (%d)\n", height, *frames); + result = -9; + goto exit; + } + + size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; + size_t pixelSize = stride * height / *frames; + + surface = malloc(*frames * sizeof(GGLSurface*)); + if (surface == NULL) { + result = -8; + goto exit; + } + for (i = 0; i < *frames; ++i) { + surface[i] = malloc(sizeof(GGLSurface) + pixelSize); + surface[i]->version = sizeof(GGLSurface); + surface[i]->width = width; + surface[i]->height = height / *frames; + surface[i]->stride = width; /* Yes, pixels, not bytes */ + surface[i]->data = (unsigned char*) (surface[i] + 1); + + if (channels == 3) { + surface[i]->format = GGL_PIXEL_FORMAT_RGBX_8888; + } else if (color_type == PNG_COLOR_TYPE_PALETTE) { + surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; + } else if (channels == 1) { + surface[i]->format = GGL_PIXEL_FORMAT_L_8; + } else { + surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; + } + } + + int alpha = (channels == 4); + if (color_type == PNG_COLOR_TYPE_PALETTE) { + png_set_palette_to_rgb(png_ptr); + } + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { + png_set_tRNS_to_alpha(png_ptr); + alpha = 1; + } + if (color_type == PNG_COLOR_TYPE_GRAY) { + alpha = 1; + } + + png_uint_32 y; + if (channels == 3 || (channels == 1 && !alpha)) { + for (y = 0; y < height; ++y) { + int fy = y / *frames; + int fr = y % *frames; + unsigned char* pRow = surface[fr]->data + fy * stride; + png_read_row(png_ptr, pRow, NULL); + + int x; + for(x = width - 1; x >= 0; x--) { + int sx = x * 3; + int dx = x * 4; + unsigned char r = pRow[sx]; + unsigned char g = pRow[sx + 1]; + unsigned char b = pRow[sx + 2]; + unsigned char a = 0xff; + pRow[dx ] = r; // r + pRow[dx + 1] = g; // g + pRow[dx + 2] = b; // b + pRow[dx + 3] = a; + } + } + } else { + for (y = 0; y < height; ++y) { + int fy = y / *frames; + int fr = y % *frames; + unsigned char* pRow = surface[fr]->data + fy * stride; + png_read_row(png_ptr, pRow, NULL); + } + } + + *pSurface = (gr_surface*) surface; + +exit: + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + + if (fp != NULL) { + fclose(fp); + } + if (result < 0) { + if (surface) { + for (i = 0; i < *frames; ++i) { + if (surface[i]) free(surface[i]); + } + free(surface); + } + } + return result; +} + static int matches_locale(const char* loc) { if (locale == NULL) return 0; @@ -257,7 +433,7 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { png_read_info(png_ptr, info_ptr); int color_type, bit_depth; - size_t width, height; + png_uint_32 width, height; png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, NULL, NULL, NULL); int channels = png_get_channels(png_ptr, info_ptr); @@ -269,13 +445,13 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { } unsigned char* row = malloc(width); - int y; + png_uint_32 y; for (y = 0; y < height; ++y) { png_read_row(png_ptr, row, NULL); int w = (row[1] << 8) | row[0]; int h = (row[3] << 8) | row[2]; int len = row[4]; - char* loc = row+5; + char* loc = (char*)row+5; if (y+1+h >= height || matches_locale(loc)) { printf(" %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y); diff --git a/res/images/icon_installing.png b/res/images/icon_installing.png index 571eb8b0f23660a0a16c1d23902b764fd614295e..c2c02016251af9263f778ee7f3f3329520d9fd39 100644 GIT binary patch literal 118562 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 z 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 literal 25261 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
  • 2lxABsHK;WE2PYMvqXfyQPjno`( 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 diff --git a/res/images/icon_installing_overlay01.png b/res/images/icon_installing_overlay01.png deleted file mode 100644 index e762d6cbe8b31f91307d54e29db24217c98d7f00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10095 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 Rn5zH)002ovPDHLkV1gHb`9}Z% diff --git a/res/images/icon_installing_overlay02.png b/res/images/icon_installing_overlay02.png deleted file mode 100644 index f7a853017e51e13eeac0159998f1714f8e143088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9990 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 QwEzGB07*qoM6N<$f;CZ382|tP diff --git a/res/images/icon_installing_overlay04.png b/res/images/icon_installing_overlay04.png deleted file mode 100644 index a74903d33175f9e067c8482383a94b0084f2407a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9817 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 diff --git a/res/images/icon_installing_overlay05.png b/res/images/icon_installing_overlay05.png deleted file mode 100644 index d17bdc0062760a3d6e3a344b95d15a5c813e8fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9863 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 diff --git a/res/images/icon_installing_overlay06.png b/res/images/icon_installing_overlay06.png deleted file mode 100644 index 1200b75cb310f5dfd0b45439656f662c17636b9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9944 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 diff --git a/res/images/indeterminate01.png b/res/images/indeterminate01.png deleted file mode 100644 index 933528d6d42ed28588e6a9ff806617082ae7214f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmV;S0$%-zP)8nu5dK&T_T(t2`AoC%c9Sp81`w?QHjZ|KjBP?R9%^zx)1!Bg!p0>Gk)WxX@&xIfn z!O;uXG;d`q|DtS3zm@+^Jj^BlFq_cTIm++jdd~C!(r~=EJXLEzRU3b%zr8NnixYcP zjcnYRei`26?YB$g@qHagP)dJ9H-Z~~fGz|V{*Z!#g8l#n7cTTigpy`eOH8&& zCOFOPf-RFV*TrP|KIb{gEK1D{%)9T*x#vBSb0?1>0H|!CQiBwv3`t5*!{nqh0x+M9 z<`chEt(B^E(n}SlYmF>2X``dc#deoFnFJsT22n69Z#2rA+qspB3swfpBu}*+;y+5w zf?<3)^49C#dPA1Ts@;Q1QED?MBEu3$1R(BW zKJiP{`pVt`kA>_GqF`9w++N#1vT+Iy>kpsP^s49V zo@OV(yc=JRyp6`{gF`l1x+z&!WETk5R#G8JUj-K{vV!!^I2@x=qur*wmInYkO*(!G z0wu;!69A+n07y;}A_*500oQmNe{Zks9o&2LoKn}*O-~Rgl_w}5WGO?|mJ6>6eKFPU z%A+v5fk-pUU(%vv{PARZ-dfu~+IsTR#wj>V)0@vb)pHgXvpmxf;XiE(*>{|LKE1lW zI9+{sc>nPW7E3HxED4A_-Ef+#V7d>!=>=vsWTm|^>j_xsFc`nSfcqWVZPM|x6a#=# z=6Ae|W!%wNntmDoU3dV{@9@|6$=`GG{4e56-v%)2wts$pb9c}5EdbN=*7(DTjZ<*k zsx$r7#p&Y8uW#*{o_l8ixYq&R8E5*?M_=0|0DuJY4{vXh>#S>W8&n@>u8~E~d>>=m zVKzIzO|7L-FaQw!7)*2P6d8YG`pjxOWbX<&;$WCuuhjMPb)Ab`@Y@>zq0c>q_8Yxa VX`y~)fd&8o002ovPDHLkV1j{UJZJy_ diff --git a/res/images/indeterminate03.png b/res/images/indeterminate03.png deleted file mode 100644 index 0e97399d1e88892b23280df21df786c9840603da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4w8P`6#h=?6oI-m4I*Tw9omUjY9FE%8{!2JVuCm6gd(1RvA{zlQq7c9N;+E}oMfYw zs2d-K%l*H$jDVIx&T#MXch6t!?>I*$Jb4OF$l8QTzD+Spd7e_M(`a=J56{vCN-X^x zWya*}6<$@=zWY^{%Nmx?>K$ZeQV*;*D zdW%WCvbA^b*=y1)CNdPUOGPap8J=K)%FWeP5LefosN?HP=hWOa*%guj7o)-2&cVYM zZ_OU`N$+;{ZIIr7m)V>P@RZFf2Vnr1emK578$8(FUw{6_491$BtU|MKV(A7cwJr;m zx(&)YSoH!kdtq6Z%4{pwAA7|lZfx$Z9KBLS8rABu8x?nXDNFe$Wl8#_{C5)J^LvOt z5d!4@W6ha9Cqgfvq2^#(vOORvYL3iO};-THbXR)_a>NPpAvGo&x|_MkjV v#LA;VEq6PAy{@Y={*|vcVl5Dt*$DX#!z*cCJM$h+00000NkvXXu0mjflfpWZ diff --git a/res/images/indeterminate04.png b/res/images/indeterminate04.png deleted file mode 100644 index c7d5b4e04a4285096133a59ef87f157c58376e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)8nu5dJQ)vv_Q(!SGyo@D>m0Lljxt7bw~-kCLrFFVL(-9>M}5PgMcCv*4hzGde&k z$m}4WcqC6smbR(uGa%l5{CGS|A0c% zWD}XZwq+CmD)OvYX5DDejRqRwehZlDAN{jtoJI*;`xbgbxw=7=w9jTlVL?ShW`hr=;*BoP)Qf~yCjV1bBn zD(E#n?u(wglobeo?$WpteQ$KC65Ik5dx+?N_Yw#+qrh#N`!Xr=?1)c7$TY2@Z|rr2 zCX4cM1JT(8!gw>e5F^*6P-C6P$dlrpA30YCFJ6O{L@Ze803bs7`NL+O91O?Zvp1ED ztIJNTeX=Sh5>C~!Qy)N_p5TCxse-hcZ?$Uk+Ykg=US8aNjeDchr!UVf!Ad+tM5N!- zgO&X^L?7PET+KP^`EIaIe?M7?&3+!7V_s9oW;a(+PleI>|rj@2UULp1z!211M(+ z@J<#K?&-B%K05d|_2;OK1hTpTU{;HAmT;$RAfm_k^#(wZXX`Z92>07=e7)Ho(^zM= zioTU=gSI#6VAZPR2YtO+E#Rt=XORmnsE+Ly4%cb$5r+6qhUa_64=Gc$2fj5a4Q_uTJ(=iD>NcQThDJbnh(!Y;xdRvuBY90LThC}a#0 zbeJ}f!gTjYBP%!Rx1-BW@L+YJR7r{Qj1D2+{Grpw--a54we7xlk-Sq0Y_|m~%M*0xf!}xfVF=QL$WDs~U@fLk28B zBA9w0avDU$c|mKiaTRk7M3(F z@^fTto~AjIkh*FLjYSKk8z?1_ z5-jiU@>zq{s`p;L1wb^>11VifCk`d8Vj|(hqjHi9XtJTo1HjH{`biSu|NQ##s(HAy zzPa-Hy^&vUr)<5sYGqewgc9ACR9AKo01vuj9L2!QzP$l(({BR@DN&x$ zA>`Z4zP$l3>bGO{BVF{q=nTl;73o|(nXc=y$nxz?e2q>WrrlHt%()x@zX1xuXrNr7 RAw>WH002ovPDHLkV1kpzLDc{N diff --git a/res/images/indeterminate06.png b/res/images/indeterminate06.png deleted file mode 100644 index 44867619fd3a68331ecaeab35fd186e5a2cd7638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)K370?&E?5RVa0(B44113&SUpLyXh>0UA?`MX}!^UEcyB+xxQ*WdD>dvtm2X4 zER#yJFiDB3Q;{VCKxMmZ8R;PkXE)=<<4)7OlyjLD)Vk2mtYJpoI zxxQ+xZ?5egaNPRf=M=rFIlHE*l2E#;3XK<~;{>({fXE-sZpKZw+uGhENi`aZK`g%t zl2Qvn|9>(h0OE;*!&d+>=p*pNR2kw6e4R=*1f)n;uK8%KUPwt#U8LZXj%Cf2SLrUE_QIDunW#>=-H zHbrl~%T&!-bV_`tAySmu6kKhsr>*Fi;t5Rs9V z)kdTTpqyG1$*Ls~XwXOCHL$d$EtoAuzqExj2ZKHU1Remo^k(>gf8$Jl?+*dooe#g^ z-C~{T&rY-PJX39kuKSd3R%iu`FfL%cjv=J z`+Ad(x7EBq5q;@yJ7n*Qa;}`r*L4{-jY0s^C`>S_Oi}CC8{ijeV{{}tj;@;k0000< KMNUMnLSTaaAUco$ diff --git a/screen_ui.cpp b/screen_ui.cpp index fd1a6c7f..a72da58a 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -69,19 +69,8 @@ ScreenRecoveryUI::ScreenRecoveryUI() : menu_top(0), menu_items(0), menu_sel(0), - - // These values are correct for the default image resources - // provided with the android platform. Devices which use - // different resources should have a subclass of ScreenRecoveryUI - // that overrides Init() to set these values appropriately and - // then call the superclass Init(). animation_fps(20), - indeterminate_frames(6), - installing_frames(7), - install_overlay_offset_x(13), - install_overlay_offset_y(190), - overlay_offset_x(-1), - overlay_offset_y(-1), + installing_frames(-1), stage(-1), max_stage(-1) { @@ -92,20 +81,6 @@ ScreenRecoveryUI::ScreenRecoveryUI() : self = this; } -// Draw the given frame over the installation overlay animation. The -// background is not cleared or draw with the base icon first; we -// assume that the frame already contains some other frame of the -// animation. Does nothing if no overlay animation is defined. -// Should only be called with updateMutex locked. -void ScreenRecoveryUI::draw_install_overlay_locked(int frame) { - if (installationOverlay == NULL || overlay_offset_x < 0) return; - gr_surface surface = installationOverlay[frame]; - int iconWidth = gr_get_width(surface); - int iconHeight = gr_get_height(surface); - gr_blit(surface, 0, 0, iconWidth, iconHeight, - overlay_offset_x, overlay_offset_y); -} - // Clear the screen and draw the currently selected background icon (if any). // Should only be called with updateMutex locked. void ScreenRecoveryUI::draw_background_locked(Icon icon) @@ -116,6 +91,9 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) if (icon) { gr_surface surface = backgroundIcon[icon]; + if (icon == INSTALLING_UPDATE || icon == ERASING) { + surface = installation[installingFrame]; + } gr_surface text_surface = backgroundText[icon]; int iconWidth = gr_get_width(surface); @@ -126,8 +104,8 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) int sh = (max_stage >= 0) ? stageHeight : 0; - int iconX = (gr_fb_width() - iconWidth) / 2; - int iconY = (gr_fb_height() - (iconHeight+textHeight+40+sh)) / 2; + iconX = (gr_fb_width() - iconWidth) / 2; + iconY = (gr_fb_height() - (iconHeight+textHeight+40+sh)) / 2; int textX = (gr_fb_width() - textWidth) / 2; int textY = ((gr_fb_height() - (iconHeight+textHeight+40+sh)) / 2) + iconHeight + 40; @@ -144,10 +122,6 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) } } - if (icon == INSTALLING_UPDATE || icon == ERASING) { - draw_install_overlay_locked(installingFrame); - } - gr_color(255, 255, 255, 255); gr_texticon(textX, textY, text_surface); } @@ -160,7 +134,8 @@ void ScreenRecoveryUI::draw_progress_locked() if (currentIcon == ERROR) return; if (currentIcon == INSTALLING_UPDATE || currentIcon == ERASING) { - draw_install_overlay_locked(installingFrame); + gr_surface icon = installation[installingFrame]; + gr_blit(icon, 0, 0, gr_get_width(icon), gr_get_height(icon), iconX, iconY); } if (progressBarType != EMPTY) { @@ -197,18 +172,6 @@ void ScreenRecoveryUI::draw_progress_locked() } } } - - if (progressBarType == INDETERMINATE) { - static int frame = 0; - gr_blit(progressBarIndeterminate[frame], 0, 0, width, height, dx, dy); - // in RTL locales, we run the animation backwards, which - // makes the spinner spin the other way. - if (rtl_locale) { - frame = (frame + indeterminate_frames - 1) % indeterminate_frames; - } else { - frame = (frame + 1) % indeterminate_frames; - } - } } } @@ -335,12 +298,6 @@ void ScreenRecoveryUI::progress_loop() { redraw = 1; } - // update the progress bar animation, if active - // skip this if we have a text overlay (too expensive to update) - if (progressBarType == INDETERMINATE && !show_text) { - redraw = 1; - } - // move the progress bar forward on timed intervals, if configured int duration = progressScopeDuration; if (progressBarType == DETERMINATE && duration > 0) { @@ -371,6 +328,13 @@ void ScreenRecoveryUI::LoadBitmap(const char* filename, gr_surface* surface) { } } +void ScreenRecoveryUI::LoadBitmapArray(const char* filename, int* frames, gr_surface** surface) { + int result = res_create_multi_surface(filename, frames, surface); + if (result < 0) { + LOGE("missing bitmap %s\n(Code %d)\n", filename, result); + } +} + void ScreenRecoveryUI::LoadLocalizedBitmap(const char* filename, gr_surface* surface) { int result = res_create_localized_surface(filename, surface); if (result < 0) { @@ -393,7 +357,8 @@ void ScreenRecoveryUI::Init() if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1; backgroundIcon[NONE] = NULL; - LoadBitmap("icon_installing", &backgroundIcon[INSTALLING_UPDATE]); + LoadBitmapArray("icon_installing", &installing_frames, &installation); + backgroundIcon[INSTALLING_UPDATE] = installing_frames ? installation[0] : NULL; backgroundIcon[ERASING] = backgroundIcon[INSTALLING_UPDATE]; LoadBitmap("icon_error", &backgroundIcon[ERROR]); backgroundIcon[NO_COMMAND] = backgroundIcon[ERROR]; @@ -408,31 +373,6 @@ void ScreenRecoveryUI::Init() LoadLocalizedBitmap("no_command_text", &backgroundText[NO_COMMAND]); LoadLocalizedBitmap("error_text", &backgroundText[ERROR]); - int i; - - progressBarIndeterminate = (gr_surface*)malloc(indeterminate_frames * - sizeof(gr_surface)); - for (i = 0; i < indeterminate_frames; ++i) { - char filename[40]; - // "indeterminate01.png", "indeterminate02.png", ... - sprintf(filename, "indeterminate%02d", i+1); - LoadBitmap(filename, progressBarIndeterminate+i); - } - - if (installing_frames > 0) { - installationOverlay = (gr_surface*)malloc(installing_frames * - sizeof(gr_surface)); - for (i = 0; i < installing_frames; ++i) { - char filename[40]; - // "icon_installing_overlay01.png", - // "icon_installing_overlay02.png", ... - sprintf(filename, "icon_installing_overlay%02d", i+1); - LoadBitmap(filename, installationOverlay+i); - } - } else { - installationOverlay = NULL; - } - pthread_create(&progress_t, NULL, progress_thread, NULL); RecoveryUI::Init(); @@ -465,19 +405,6 @@ void ScreenRecoveryUI::SetBackground(Icon icon) { pthread_mutex_lock(&updateMutex); - // Adjust the offset to account for the positioning of the - // base image on the screen. - if (backgroundIcon[icon] != NULL) { - gr_surface bg = backgroundIcon[icon]; - gr_surface text = backgroundText[icon]; - overlay_offset_x = install_overlay_offset_x + (gr_fb_width() - gr_get_width(bg)) / 2; - overlay_offset_y = install_overlay_offset_y + - (gr_fb_height() - (gr_get_height(bg) + - gr_get_height(text) + - 40 + - ((max_stage >= 0) ? gr_get_height(stageMarkerEmpty) : 0))) / 2; - } - currentIcon = icon; update_screen_locked(); @@ -517,7 +444,7 @@ void ScreenRecoveryUI::SetProgress(float fraction) if (fraction > 1.0) fraction = 1.0; if (progressBarType == DETERMINATE && fraction > progress) { // Skip updates that aren't visibly different. - int width = gr_get_width(progressBarIndeterminate[0]); + int width = gr_get_width(progressBarEmpty); float scale = width * progressScopeSize; if ((int) (progress * scale) != (int) (fraction * scale)) { progress = fraction; diff --git a/screen_ui.h b/screen_ui.h index 5c4366d2..0221ff25 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -68,8 +68,7 @@ class ScreenRecoveryUI : public RecoveryUI { pthread_mutex_t updateMutex; gr_surface backgroundIcon[5]; gr_surface backgroundText[5]; - gr_surface *installationOverlay; - gr_surface *progressBarIndeterminate; + gr_surface *installation; gr_surface progressBarEmpty; gr_surface progressBarFill; gr_surface stageMarkerEmpty; @@ -101,12 +100,11 @@ class ScreenRecoveryUI : public RecoveryUI { pthread_t progress_t; int animation_fps; - int indeterminate_frames; int installing_frames; protected: - int install_overlay_offset_x, install_overlay_offset_y; private: - int overlay_offset_x, overlay_offset_y; + + int iconX, iconY; int stage, max_stage; @@ -120,6 +118,7 @@ class ScreenRecoveryUI : public RecoveryUI { void progress_loop(); void LoadBitmap(const char* filename, gr_surface* surface); + void LoadBitmapArray(const char* filename, int* frames, gr_surface** surface); void LoadLocalizedBitmap(const char* filename, gr_surface* surface); }; From 39cf417e17011a72dd39acfe4cc8c90af26bdbaf Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 6 Mar 2014 16:16:05 -0800 Subject: [PATCH 044/110] remove pixelflinger from recovery Recovery now draws directly to the framebuffer by rolling its own graphics code, rather than depending on libpixelflinger. The recovery UI is modified slightly to eliminate operations that are slow with the software implementation: when the text display / menu is turned on, it now appears on a black background instead of a dimmed version of the recovery icon. There's probably substantial room for optimization of the graphics operations. Bug: 12131110 Change-Id: Iab6520e0a7aaec39e2ce39377c10aef82ae0c595 --- Android.mk | 1 - minui/graphics.c | 509 +++++++++++++++++++++++++---------------- minui/minui.h | 18 +- minui/resources.c | 103 +++------ mtdutils/flash_image.c | 3 + screen_ui.cpp | 14 +- 6 files changed, 362 insertions(+), 286 deletions(-) diff --git a/Android.mk b/Android.mk index c910e7db..929afd97 100644 --- a/Android.mk +++ b/Android.mk @@ -46,7 +46,6 @@ LOCAL_STATIC_LIBRARIES := \ libmincrypt \ libminadbd \ libminui \ - libpixelflinger_static \ libpng \ libfs_mgr \ libcutils \ diff --git a/minui/graphics.c b/minui/graphics.c index a2014dca..c2fc9ea9 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -28,37 +28,19 @@ #include #include -#include +#include #include "font_10x18.h" #include "minui.h" -#if defined(RECOVERY_BGRA) -#define PIXEL_FORMAT GGL_PIXEL_FORMAT_BGRA_8888 -#define PIXEL_SIZE 4 -#elif defined(RECOVERY_RGBX) -#define PIXEL_FORMAT GGL_PIXEL_FORMAT_RGBX_8888 -#define PIXEL_SIZE 4 -#else -#define PIXEL_FORMAT GGL_PIXEL_FORMAT_RGB_565 -#define PIXEL_SIZE 2 -#endif - -#define NUM_BUFFERS 2 - typedef struct { - GGLSurface* texture; - unsigned cwidth; - unsigned cheight; + GRSurface* texture; + int cwidth; + int cheight; } GRFont; -static GRFont *gr_font = 0; -static GGLContext *gr_context = 0; -static GGLSurface gr_font_texture; -static GGLSurface gr_framebuffer[NUM_BUFFERS]; -static GGLSurface gr_mem_surface; -static unsigned gr_active_fb = 0; -static unsigned double_buffering = 0; +static GRFont* gr_font = NULL; + static int overscan_percent = OVERSCAN_PERCENT; static int overscan_offset_x = 0; static int overscan_offset_y = 0; @@ -66,66 +48,81 @@ static int overscan_offset_y = 0; static int gr_fb_fd = -1; static int gr_vt_fd = -1; -static struct fb_var_screeninfo vi; -static struct fb_fix_screeninfo fi; +static GRSurface gr_framebuffer[2]; +static bool double_buffered; +static GRSurface* gr_draw = NULL; +static int displayed_buffer; -static int get_framebuffer(GGLSurface *fb) +static unsigned char gr_current_r = 255; +static unsigned char gr_current_g = 255; +static unsigned char gr_current_b = 255; +static unsigned char gr_current_a = 255; + +static struct fb_var_screeninfo vi; + +static bool outside(int x, int y) +{ + return x < 0 || x >= gr_draw->width || y < 0 || y >= gr_draw->height; +} + +static void set_displayed_framebuffer(unsigned n) +{ + if (n > 1 || !double_buffered) return; + + vi.yres_virtual = gr_framebuffer[0].height * 2; + vi.yoffset = n * gr_framebuffer[0].height; + vi.bits_per_pixel = gr_framebuffer[0].pixel_bytes * 8; + if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { + perror("active fb swap failed"); + } + displayed_buffer = n; +} + +static int get_framebuffer() { int fd; void *bits; + struct fb_fix_screeninfo fi; + fd = open("/dev/graphics/fb0", O_RDWR); if (fd < 0) { perror("cannot open fb0"); return -1; } + if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return -1; + } + if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { perror("failed to get fb0 info"); close(fd); return -1; } - vi.bits_per_pixel = PIXEL_SIZE * 8; - if (PIXEL_FORMAT == GGL_PIXEL_FORMAT_BGRA_8888) { - vi.red.offset = 8; - vi.red.length = 8; - vi.green.offset = 16; - vi.green.length = 8; - vi.blue.offset = 24; - vi.blue.length = 8; - vi.transp.offset = 0; - vi.transp.length = 8; - } else if (PIXEL_FORMAT == GGL_PIXEL_FORMAT_RGBX_8888) { - vi.red.offset = 24; - vi.red.length = 8; - vi.green.offset = 16; - vi.green.length = 8; - vi.blue.offset = 8; - vi.blue.length = 8; - vi.transp.offset = 0; - vi.transp.length = 8; - } else { /* RGB565*/ - vi.red.offset = 11; - vi.red.length = 5; - vi.green.offset = 5; - vi.green.length = 6; - vi.blue.offset = 0; - vi.blue.length = 5; - vi.transp.offset = 0; - vi.transp.length = 0; - } - if (ioctl(fd, FBIOPUT_VSCREENINFO, &vi) < 0) { - perror("failed to put fb0 info"); - close(fd); - return -1; - } + // We print this out for informational purposes only, but + // throughout we assume that the framebuffer device uses an RGBX + // pixel format. This is the case for every development device I + // have access to. For some of those devices (eg, hammerhead aka + // Nexus 5), FBIOGET_VSCREENINFO *reports* that it wants a + // different format (XBGR) but actually produces the correct + // results on the display when you write RGBX. + // + // If you have a device that actually *needs* another pixel format + // (ie, BGRX, or 565), patches welcome... - if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { - perror("failed to get fb0 info"); - close(fd); - return -1; - } + printf("fb0 reports (possibly inaccurate):\n" + " vi.bits_per_pixel = %d\n" + " vi.red.offset = %3d .length = %3d\n" + " vi.green.offset = %3d .length = %3d\n" + " vi.blue.offset = %3d .length = %3d\n", + vi.bits_per_pixel, + vi.red.offset, vi.red.length, + vi.green.offset, vi.green.length, + vi.blue.offset, vi.blue.length); bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (bits == MAP_FAILED) { @@ -137,79 +134,59 @@ static int get_framebuffer(GGLSurface *fb) overscan_offset_x = vi.xres * overscan_percent / 100; overscan_offset_y = vi.yres * overscan_percent / 100; - fb->version = sizeof(*fb); - fb->width = vi.xres; - fb->height = vi.yres; - fb->stride = fi.line_length/PIXEL_SIZE; - fb->data = bits; - fb->format = PIXEL_FORMAT; - memset(fb->data, 0, vi.yres * fi.line_length); - - fb++; + gr_framebuffer[0].width = vi.xres; + gr_framebuffer[0].height = vi.yres; + gr_framebuffer[0].row_bytes = fi.line_length; + gr_framebuffer[0].pixel_bytes = vi.bits_per_pixel / 8; + gr_framebuffer[0].data = bits; + memset(gr_framebuffer[0].data, 0, gr_framebuffer[0].height * gr_framebuffer[0].row_bytes); /* check if we can use double buffering */ - if (vi.yres * fi.line_length * 2 > fi.smem_len) - return fd; + if (vi.yres * fi.line_length * 2 <= fi.smem_len) { + double_buffered = true; - double_buffering = 1; + memcpy(gr_framebuffer+1, gr_framebuffer, sizeof(GRSurface)); + gr_framebuffer[1].data = gr_framebuffer[0].data + + gr_framebuffer[0].height * gr_framebuffer[0].row_bytes; - fb->version = sizeof(*fb); - fb->width = vi.xres; - fb->height = vi.yres; - fb->stride = fi.line_length/PIXEL_SIZE; - fb->data = (void*) (((char*) bits) + vi.yres * fi.line_length); - fb->format = PIXEL_FORMAT; - memset(fb->data, 0, vi.yres * fi.line_length); + gr_draw = gr_framebuffer+1; + + } else { + double_buffered = false; + + // Without double-buffering, we allocate RAM for a buffer to + // draw in, and then "flipping" the buffer consists of a + // memcpy from the buffer we allocated to the framebuffer. + + gr_draw = (GRSurface*) malloc(sizeof(GRSurface)); + memcpy(gr_draw, gr_framebuffer, sizeof(GRSurface)); + gr_draw->data = (unsigned char*) malloc(gr_draw->height * gr_draw->row_bytes); + if (!gr_draw->data) { + perror("failed to allocate in-memory surface"); + return -1; + } + } + + memset(gr_draw->data, 0, gr_draw->height * gr_draw->row_bytes); + gr_fb_fd = fd; + set_displayed_framebuffer(0); return fd; } -static void get_memory_surface(GGLSurface* ms) { - ms->version = sizeof(*ms); - ms->width = vi.xres; - ms->height = vi.yres; - ms->stride = fi.line_length/PIXEL_SIZE; - ms->data = malloc(fi.line_length * vi.yres); - ms->format = PIXEL_FORMAT; -} - -static void set_active_framebuffer(unsigned n) -{ - if (n > 1 || !double_buffering) return; - vi.yres_virtual = vi.yres * NUM_BUFFERS; - vi.yoffset = n * vi.yres; - vi.bits_per_pixel = PIXEL_SIZE * 8; - if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { - perror("active fb swap failed"); - } -} - void gr_flip(void) { - GGLContext *gl = gr_context; - - /* swap front and back buffers */ - if (double_buffering) - gr_active_fb = (gr_active_fb + 1) & 1; - - /* copy data from the in-memory surface to the buffer we're about - * to make active. */ - memcpy(gr_framebuffer[gr_active_fb].data, gr_mem_surface.data, - fi.line_length * vi.yres); - - /* inform the display driver */ - set_active_framebuffer(gr_active_fb); -} - -void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - GGLContext *gl = gr_context; - GGLint color[4]; - color[0] = ((r << 8) | r) + 1; - color[1] = ((g << 8) | g) + 1; - color[2] = ((b << 8) | b) + 1; - color[3] = ((a << 8) | a) + 1; - gl->color4xv(gl, color); + if (double_buffered) { + // Change gr_draw to point to the buffer currently displayed, + // then flip the driver so we're displaying the other buffer + // instead. + gr_draw = gr_framebuffer + displayed_buffer; + set_displayed_framebuffer(1-displayed_buffer); + } else { + // Copy from the in-memory surface to the framebuffer. + memcpy(gr_framebuffer[0].data, gr_draw->data, + gr_draw->height * gr_draw->row_bytes); + } } int gr_measure(const char *s) @@ -223,58 +200,118 @@ void gr_font_size(int *x, int *y) *y = gr_font->cheight; } -int gr_text(int x, int y, const char *s, int bold) +static void text_blend(unsigned char* src_p, int src_row_bytes, + unsigned char* dst_p, int dst_row_bytes, + int width, int height) +{ + int i, j; + for (j = 0; j < height; ++j) { + unsigned char* sx = src_p; + unsigned char* px = dst_p; + for (i = 0; i < width; ++i) { + unsigned char a = *sx++; + if (gr_current_a < 255) a = ((int)a * gr_current_a) / 255; + if (a == 255) { + *px++ = gr_current_r; + *px++ = gr_current_g; + *px++ = gr_current_b; + px++; + } else if (a > 0) { + *px = (*px * (255-a) + gr_current_r * a) / 255; + ++px; + *px = (*px * (255-a) + gr_current_g * a) / 255; + ++px; + *px = (*px * (255-a) + gr_current_b * a) / 255; + ++px; + ++px; + } else { + px += 4; + } + } + src_p += src_row_bytes; + dst_p += dst_row_bytes; + } +} + + +void gr_text(int x, int y, const char *s, int bold) { - GGLContext *gl = gr_context; GRFont *font = gr_font; unsigned off; - if (!font->texture) return x; + if (!font->texture) return; + if (gr_current_a == 0) return; bold = bold && (font->texture->height != font->cheight); x += overscan_offset_x; y += overscan_offset_y; - gl->bindTexture(gl, font->texture); - gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); - gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->enable(gl, GGL_TEXTURE_2D); - while((off = *s++)) { off -= 32; + if (outside(x, y) || outside(x+font->cwidth-1, y+font->cheight-1)) break; if (off < 96) { - gl->texCoord2i(gl, (off * font->cwidth) - x, - (bold ? font->cheight : 0) - y); - gl->recti(gl, x, y, x + font->cwidth, y + font->cheight); + + unsigned char* src_p = font->texture->data + (off * font->cwidth) + + (bold ? font->cheight * font->texture->row_bytes : 0); + unsigned char* dst_p = gr_draw->data + y*gr_draw->row_bytes + x*gr_draw->pixel_bytes; + + text_blend(src_p, font->texture->row_bytes, + dst_p, gr_draw->row_bytes, + font->cwidth, font->cheight); + } x += font->cwidth; } - - return x; } -void gr_texticon(int x, int y, gr_surface icon) { - if (gr_context == NULL || icon == NULL) { +void gr_texticon(int x, int y, GRSurface* icon) { + if (icon == NULL) return; + + if (icon->pixel_bytes != 1) { + printf("gr_texticon: source has wrong format\n"); return; } - GGLContext* gl = gr_context; x += overscan_offset_x; y += overscan_offset_y; - gl->bindTexture(gl, (GGLSurface*) icon); - gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); - gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->enable(gl, GGL_TEXTURE_2D); + if (outside(x, y) || outside(x+icon->width-1, y+icon->height-1)) return; - int w = gr_get_width(icon); - int h = gr_get_height(icon); + unsigned char* src_p = icon->data; + unsigned char* dst_p = gr_draw->data + y*gr_draw->row_bytes + x*gr_draw->pixel_bytes; - gl->texCoord2i(gl, -x, -y); - gl->recti(gl, x, y, x+gr_get_width(icon), y+gr_get_height(icon)); + text_blend(src_p, icon->row_bytes, + dst_p, gr_draw->row_bytes, + icon->width, icon->height); +} + +void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + gr_current_r = r; + gr_current_g = g; + gr_current_b = b; + gr_current_a = a; +} + +void gr_clear() +{ + if (gr_current_r == gr_current_g && + gr_current_r == gr_current_b) { + memset(gr_draw->data, gr_current_r, gr_draw->height * gr_draw->row_bytes); + } else { + int x, y; + unsigned char* px = gr_draw->data; + for (y = 0; y < gr_draw->height; ++y) { + for (x = 0; x < gr_draw->width; ++x) { + *px++ = gr_current_r; + *px++ = gr_current_g; + *px++ = gr_current_b; + px++; + } + px += gr_draw->row_bytes - (gr_draw->width * gr_draw->pixel_bytes); + } + } } void gr_fill(int x1, int y1, int x2, int y2) @@ -285,48 +322,82 @@ void gr_fill(int x1, int y1, int x2, int y2) x2 += overscan_offset_x; y2 += overscan_offset_y; - GGLContext *gl = gr_context; - gl->disable(gl, GGL_TEXTURE_2D); - gl->recti(gl, x1, y1, x2, y2); + if (outside(x1, y1) || outside(x2-1, y2-1)) return; + + unsigned char* p = gr_draw->data + y1 * gr_draw->row_bytes + x1 * gr_draw->pixel_bytes; + if (gr_current_a == 255) { + int x, y; + for (y = y1; y < y2; ++y) { + unsigned char* px = p; + for (x = x1; x < x2; ++x) { + *px++ = gr_current_r; + *px++ = gr_current_g; + *px++ = gr_current_b; + px++; + } + p += gr_draw->row_bytes; + } + } else if (gr_current_a > 0) { + int x, y; + for (y = y1; y < y2; ++y) { + unsigned char* px = p; + for (x = x1; x < x2; ++x) { + *px = (*px * (255-gr_current_a) + gr_current_r * gr_current_a) / 255; + ++px; + *px = (*px * (255-gr_current_a) + gr_current_g * gr_current_a) / 255; + ++px; + *px = (*px * (255-gr_current_a) + gr_current_b * gr_current_a) / 255; + ++px; + ++px; + } + p += gr_draw->row_bytes; + } + } } -void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) { - if (gr_context == NULL || source == NULL) { +void gr_blit(GRSurface* source, int sx, int sy, int w, int h, int dx, int dy) { + if (source == NULL) return; + + if (gr_draw->pixel_bytes != source->pixel_bytes) { + printf("gr_blit: source has wrong format\n"); return; } - GGLContext *gl = gr_context; dx += overscan_offset_x; dy += overscan_offset_y; - gl->bindTexture(gl, (GGLSurface*) source); - gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); - gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->enable(gl, GGL_TEXTURE_2D); - gl->texCoord2i(gl, sx - dx, sy - dy); - gl->recti(gl, dx, dy, dx + w, dy + h); + if (outside(dx, dy) || outside(dx+w-1, dy+h-1)) return; + + unsigned char* src_p = source->data + sy*source->row_bytes + sx*source->pixel_bytes; + unsigned char* dst_p = gr_draw->data + dy*gr_draw->row_bytes + dx*gr_draw->pixel_bytes; + + int i; + for (i = 0; i < h; ++i) { + memcpy(dst_p, src_p, w * source->pixel_bytes); + src_p += source->row_bytes; + dst_p += gr_draw->row_bytes; + } } -unsigned int gr_get_width(gr_surface surface) { +unsigned int gr_get_width(GRSurface* surface) { if (surface == NULL) { return 0; } - return ((GGLSurface*) surface)->width; + return surface->width; } -unsigned int gr_get_height(gr_surface surface) { +unsigned int gr_get_height(GRSurface* surface) { if (surface == NULL) { return 0; } - return ((GGLSurface*) surface)->height; + return surface->height; } static void gr_init_font(void) { gr_font = calloc(sizeof(*gr_font), 1); - int res = res_create_surface("font", (void**)&(gr_font->texture)); + int res = res_create_surface("font", &(gr_font->texture)); if (res == 0) { // The font image should be a 96x2 array of character images. The // columns are the printable ASCII characters 0x20 - 0x7f. The @@ -340,7 +411,8 @@ static void gr_init_font(void) gr_font->texture = malloc(sizeof(*gr_font->texture)); gr_font->texture->width = font.width; gr_font->texture->height = font.height; - gr_font->texture->stride = font.width; + gr_font->texture->row_bytes = font.width; + gr_font->texture->pixel_bytes = 1; unsigned char* bits = malloc(font.width * font.height); gr_font->texture->data = (void*) bits; @@ -355,17 +427,61 @@ static void gr_init_font(void) gr_font->cwidth = font.cwidth; gr_font->cheight = font.cheight; } - - // interpret the grayscale as alpha - gr_font->texture->format = GGL_PIXEL_FORMAT_A_8; } +#if 0 +// Exercises many of the gr_*() functions; useful for testing. +static void gr_test() { + GRSurface** images; + int frames; + int result = res_create_multi_surface("icon_installing", &frames, &images); + if (result < 0) { + printf("create surface %d\n", result); + gr_exit(); + return; + } + + time_t start = time(NULL); + int x; + for (x = 0; x <= 1200; ++x) { + if (x < 400) { + gr_color(0, 0, 0, 255); + } else { + gr_color(0, (x-400)%128, 0, 255); + } + gr_clear(); + + gr_color(255, 0, 0, 255); + gr_surface frame = images[x%frames]; + gr_blit(frame, 0, 0, frame->width, frame->height, x, 0); + + gr_color(255, 0, 0, 128); + gr_fill(400, 150, 600, 350); + + gr_color(255, 255, 255, 255); + gr_text(500, 225, "hello, world!", 0); + gr_color(255, 255, 0, 128); + gr_text(300+x, 275, "pack my box with five dozen liquor jugs", 1); + + gr_color(0, 0, 255, 128); + gr_fill(gr_draw->width - 200 - x, 300, gr_draw->width - x, 500); + + gr_flip(); + } + printf("getting end time\n"); + time_t end = time(NULL); + printf("got end time\n"); + printf("start %ld end %ld\n", (long)start, (long)end); + if (end > start) { + printf("%.2f fps\n", ((double)x) / (end-start)); + } +} +#endif + int gr_init(void) { - gglInit(&gr_context); - GGLContext *gl = gr_context; - gr_init_font(); + gr_vt_fd = open("/dev/tty0", O_RDWR | O_SYNC); if (gr_vt_fd < 0) { // This is non-fatal; post-Cupcake kernels don't have tty0. @@ -377,25 +493,16 @@ int gr_init(void) return -1; } - gr_fb_fd = get_framebuffer(gr_framebuffer); - if (gr_fb_fd < 0) { + if (get_framebuffer(&gr_framebuffer) < 0) { gr_exit(); return -1; } - get_memory_surface(&gr_mem_surface); - printf("framebuffer: fd %d (%d x %d)\n", - gr_fb_fd, gr_framebuffer[0].width, gr_framebuffer[0].height); + gr_fb_fd, gr_draw->width, gr_draw->height); - /* start with 0 as front (displayed) and 1 as back (drawing) */ - gr_active_fb = 0; - set_active_framebuffer(0); - gl->colorBuffer(gl, &gr_mem_surface); - - gl->activeTexture(gl, 0); - gl->enable(gl, GGL_BLEND); - gl->blendFunc(gl, GGL_SRC_ALPHA, GGL_ONE_MINUS_SRC_ALPHA); + gr_flip(); + gr_flip(); gr_fb_blank(true); gr_fb_blank(false); @@ -408,26 +515,24 @@ void gr_exit(void) close(gr_fb_fd); gr_fb_fd = -1; - free(gr_mem_surface.data); - ioctl(gr_vt_fd, KDSETMODE, (void*) KD_TEXT); close(gr_vt_fd); gr_vt_fd = -1; + + if (!double_buffered) { + if (gr_draw) free(gr_draw->data); + free(gr_draw); + } } int gr_fb_width(void) { - return gr_framebuffer[0].width - 2*overscan_offset_x; + return gr_draw->width - 2*overscan_offset_x; } int gr_fb_height(void) { - return gr_framebuffer[0].height - 2*overscan_offset_y; -} - -gr_pixel *gr_fb_data(void) -{ - return (unsigned short *) gr_mem_surface.data; + return gr_draw->height - 2*overscan_offset_y; } void gr_fb_blank(bool blank) diff --git a/minui/minui.h b/minui/minui.h index 3250955c..83c121e2 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -23,22 +23,30 @@ extern "C" { #endif -typedef void* gr_surface; -typedef unsigned short gr_pixel; +typedef struct { + int width; + int height; + int row_bytes; + int pixel_bytes; + unsigned char* data; +} GRSurface; + +typedef GRSurface* gr_surface; int gr_init(void); void gr_exit(void); int gr_fb_width(void); int gr_fb_height(void); -gr_pixel *gr_fb_data(void); + void gr_flip(void); void gr_fb_blank(bool blank); +void gr_clear(); // clear entire surface to current color void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a); void gr_fill(int x1, int y1, int x2, int y2); -int gr_text(int x, int y, const char *s, int bold); - void gr_texticon(int x, int y, gr_surface icon); +void gr_text(int x, int y, const char *s, int bold); +void gr_texticon(int x, int y, gr_surface icon); int gr_measure(const char *s); void gr_font_size(int *x, int *y); diff --git a/minui/resources.c b/minui/resources.c index 91b01eb1..df813cb1 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -27,25 +27,26 @@ #include #include -#include - #include #include "minui.h" extern char* locale; -// libpng gives "undefined reference to 'pow'" errors, and I have no -// idea how to convince the build system to link with -lm. We don't -// need this functionality (it's used for gamma adjustment) so provide -// a dummy implementation to satisfy the linker. -double pow(double x, double y) { - return x * y; +#define SURFACE_DATA_ALIGNMENT 8 + +static gr_surface malloc_surface(size_t data_size) { + unsigned char* temp = malloc(sizeof(GRSurface) + data_size + SURFACE_DATA_ALIGNMENT); + if (temp == NULL) return NULL; + gr_surface surface = (gr_surface) temp; + surface->data = temp + sizeof(GRSurface) + + (SURFACE_DATA_ALIGNMENT - (sizeof(GRSurface) % SURFACE_DATA_ALIGNMENT)); + return surface; } int res_create_surface(const char* name, gr_surface* pSurface) { char resPath[256]; - GGLSurface* surface = NULL; + gr_surface surface = NULL; int result = 0; unsigned char header[8]; png_structp png_ptr = NULL; @@ -100,9 +101,8 @@ int res_create_surface(const char* name, gr_surface* pSurface) { int channels = png_get_channels(png_ptr, info_ptr); - if (!(bit_depth == 8 && + if (!(bit_depth <= 8 && ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || - (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || color_type == PNG_COLOR_TYPE_GRAY))))) { return -7; @@ -110,38 +110,20 @@ int res_create_surface(const char* name, gr_surface* pSurface) { } size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; - size_t pixelSize = stride * height; - surface = malloc(sizeof(GGLSurface) + pixelSize); + surface = malloc_surface(stride * height); if (surface == NULL) { result = -8; goto exit; } - unsigned char* pData = (unsigned char*) (surface + 1); - surface->version = sizeof(GGLSurface); + unsigned char* pData = surface->data; surface->width = width; surface->height = height; - surface->stride = width; /* Yes, pixels, not bytes */ - surface->data = pData; - - if (channels == 3) { - surface->format = GGL_PIXEL_FORMAT_RGBX_8888; - } else if (color_type == PNG_COLOR_TYPE_PALETTE) { - surface->format = GGL_PIXEL_FORMAT_RGBA_8888; - } else if (channels == 1) { - surface->format = GGL_PIXEL_FORMAT_L_8; - } else { - surface->format = GGL_PIXEL_FORMAT_RGBA_8888; - } + surface->row_bytes = stride; + surface->pixel_bytes = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4); int alpha = (channels == 4); - if (color_type == PNG_COLOR_TYPE_PALETTE) { - png_set_palette_to_rgb(png_ptr); - } - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { - png_set_tRNS_to_alpha(png_ptr); - alpha = 1; - } + png_set_expand(png_ptr); if (color_type == PNG_COLOR_TYPE_GRAY) { alpha = 1; } @@ -196,7 +178,7 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac png_structp png_ptr = NULL; png_infop info_ptr = NULL; int i; - GGLSurface** surface = NULL; + gr_surface* surface = NULL; *pSurface = NULL; *frames = -1; @@ -248,9 +230,8 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac int channels = png_get_channels(png_ptr, info_ptr); - if (!(bit_depth == 8 && + if (!(bit_depth <= 8 && ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || - (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || color_type == PNG_COLOR_TYPE_GRAY))))) { return -7; @@ -279,38 +260,21 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; size_t pixelSize = stride * height / *frames; - surface = malloc(*frames * sizeof(GGLSurface*)); + surface = malloc(*frames * sizeof(gr_surface)); if (surface == NULL) { result = -8; goto exit; } for (i = 0; i < *frames; ++i) { - surface[i] = malloc(sizeof(GGLSurface) + pixelSize); - surface[i]->version = sizeof(GGLSurface); + surface[i] = malloc_surface(pixelSize); surface[i]->width = width; surface[i]->height = height / *frames; - surface[i]->stride = width; /* Yes, pixels, not bytes */ - surface[i]->data = (unsigned char*) (surface[i] + 1); - - if (channels == 3) { - surface[i]->format = GGL_PIXEL_FORMAT_RGBX_8888; - } else if (color_type == PNG_COLOR_TYPE_PALETTE) { - surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; - } else if (channels == 1) { - surface[i]->format = GGL_PIXEL_FORMAT_L_8; - } else { - surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; - } + surface[i]->row_bytes = stride; + surface[i]->pixel_bytes = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4); } int alpha = (channels == 4); - if (color_type == PNG_COLOR_TYPE_PALETTE) { - png_set_palette_to_rgb(png_ptr); - } - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { - png_set_tRNS_to_alpha(png_ptr); - alpha = 1; - } + png_set_expand(png_ptr); if (color_type == PNG_COLOR_TYPE_GRAY) { alpha = 1; } @@ -384,7 +348,7 @@ static int matches_locale(const char* loc) { int res_create_localized_surface(const char* name, gr_surface* pSurface) { char resPath[256]; - GGLSurface* surface = NULL; + gr_surface surface = NULL; int result = 0; unsigned char header[8]; png_structp png_ptr = NULL; @@ -438,12 +402,14 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { &color_type, NULL, NULL, NULL); int channels = png_get_channels(png_ptr, info_ptr); - if (!(bit_depth == 8 && + if (!(bit_depth <= 8 && (channels == 1 && color_type == PNG_COLOR_TYPE_GRAY))) { return -7; goto exit; } + png_set_expand(png_ptr); + unsigned char* row = malloc(width); png_uint_32 y; for (y = 0; y < height; ++y) { @@ -456,19 +422,17 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { if (y+1+h >= height || matches_locale(loc)) { printf(" %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y); - surface = malloc(sizeof(GGLSurface)); + surface = malloc_surface(w*h); if (surface == NULL) { result = -8; goto exit; } - unsigned char* pData = malloc(w*h); + unsigned char* pData = surface->data; - surface->version = sizeof(GGLSurface); surface->width = w; surface->height = h; - surface->stride = w; /* Yes, pixels, not bytes */ - surface->data = pData; - surface->format = GGL_PIXEL_FORMAT_A_8; + surface->row_bytes = w; + surface->pixel_bytes = 1; int i; for (i = 0; i < h; ++i, ++y) { @@ -501,8 +465,5 @@ exit: } void res_free_surface(gr_surface surface) { - GGLSurface* pSurface = (GGLSurface*) surface; - if (pSurface) { - free(pSurface); - } + free(surface); } diff --git a/mtdutils/flash_image.c b/mtdutils/flash_image.c index a39d6000..5657dfc8 100644 --- a/mtdutils/flash_image.c +++ b/mtdutils/flash_image.c @@ -24,6 +24,9 @@ #include "cutils/log.h" #include "mtdutils.h" +#ifdef LOG_TAG +#undef LOG_TAG +#endif #define LOG_TAG "flash_image" #define HEADER_SIZE 2048 // size of header to compare for equality diff --git a/screen_ui.cpp b/screen_ui.cpp index a72da58a..c87c00ce 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -87,7 +87,7 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) { pagesIdentical = false; gr_color(0, 0, 0, 255); - gr_fill(0, 0, gr_fb_width(), gr_fb_height()); + gr_clear(); if (icon) { gr_surface surface = backgroundIcon[icon]; @@ -203,12 +203,12 @@ void ScreenRecoveryUI::SetColor(UIElement e) { // Should only be called with updateMutex locked. void ScreenRecoveryUI::draw_screen_locked() { - draw_background_locked(currentIcon); - draw_progress_locked(); - - if (show_text) { - SetColor(TEXT_FILL); - gr_fill(0, 0, gr_fb_width(), gr_fb_height()); + if (!show_text) { + draw_background_locked(currentIcon); + draw_progress_locked(); + } else { + gr_color(0, 0, 0, 255); + gr_clear(); int y = 0; int i = 0; From 5120c9fbb60d6625ec2588d77f13953884bb1a93 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 11 Mar 2014 12:39:33 -0700 Subject: [PATCH 045/110] update tools for making recovery images We no longer render animations as a base image with a possibly-partially-transparent overlay drawn over it, so delete the make-overlay.py tool. Now we represent them as series of images that are interlaced by row (with a special text chunk in the PNG file specifying the number of frames) so add the interlace-frames.py tool to make those. Change-Id: I79443f125f9c7d8d61cd09e3434745e0ef38893f --- interlace-frames.py | 53 +++++++++++++++++++++++ make-overlay.py | 102 -------------------------------------------- 2 files changed, 53 insertions(+), 102 deletions(-) create mode 100644 interlace-frames.py delete mode 100644 make-overlay.py diff --git a/interlace-frames.py b/interlace-frames.py new file mode 100644 index 00000000..243e565e --- /dev/null +++ b/interlace-frames.py @@ -0,0 +1,53 @@ +# Copyright (C) 2014 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. + +"""Script to take a set of frames (PNG files) for a recovery animation +and turn it into a single output image which contains the input frames +interlaced by row. Run with the names of all the input frames on the +command line, in order, followed by the name of the output file.""" + +import sys +try: + import Image + import PngImagePlugin +except ImportError: + print "This script requires the Python Imaging Library to be installed." + sys.exit(1) + +frames = [Image.open(fn).convert("RGB") for fn in sys.argv[1:-1]] +assert len(frames) > 0, "Must have at least one input frame." +sizes = set() +for fr in frames: + sizes.add(fr.size) + +assert len(sizes) == 1, "All input images must have the same size." +w, h = sizes.pop() +N = len(frames) + +out = Image.new("RGB", (w, h*N)) +for j in range(h): + for i in range(w): + for fn, f in enumerate(frames): + out.putpixel((i, j*N+fn), f.getpixel((i, j))) + +# When loading this image, the graphics library expects to find a text +# chunk that specifies how many frames this animation represents. If +# you post-process the output of this script with some kind of +# optimizer tool (eg pngcrush or zopflipng) make sure that your +# optimizer preserves this text chunk. + +meta = PngImagePlugin.PngInfo() +meta.add_text("Frames", str(N)) + +out.save(sys.argv[-1], pnginfo=meta) diff --git a/make-overlay.py b/make-overlay.py deleted file mode 100644 index 7f931b37..00000000 --- a/make-overlay.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (C) 2011 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. - -"""Script to take a set of frames (PNG files) for a recovery -"installing" icon animation and turn it into a base image plus a set -of overlays, as needed by the recovery UI code. Run with the names of -all the input frames on the command line, in order.""" - -import sys -try: - import Image -except ImportError: - print "This script requires the Python Imaging Library to be installed." - sys.exit(1) - -# Find the smallest box that contains all the pixels which change -# between images. - -print "reading", sys.argv[1] -base = Image.open(sys.argv[1]) - -minmini = base.size[0]-1 -maxmaxi = 0 -minminj = base.size[1]-1 -maxmaxj = 0 - -for top_name in sys.argv[2:]: - print "reading", top_name - top = Image.open(top_name) - - assert base.size == top.size - - mini = base.size[0]-1 - maxi = 0 - minj = base.size[1]-1 - maxj = 0 - - h, w = base.size - for j in range(w): - for i in range(h): - b = base.getpixel((i,j)) - t = top.getpixel((i,j)) - if b != t: - if i < mini: mini = i - if i > maxi: maxi = i - if j < minj: minj = j - if j > maxj: maxj = j - - minmini = min(minmini, mini) - maxmaxi = max(maxmaxi, maxi) - minminj = min(minminj, minj) - maxmaxj = max(maxmaxj, maxj) - -w = maxmaxi - minmini + 1 -h = maxmaxj - minminj + 1 - -# Now write out an image containing just that box, for each frame. - -for num, top_name in enumerate(sys.argv[1:]): - top = Image.open(top_name) - - out = Image.new("RGB", (w, h)) - for i in range(w): - for j in range(h): - t = top.getpixel((i+minmini, j+minminj)) - out.putpixel((i, j), t) - - fn = "icon_installing_overlay%02d.png" % (num+1,) - out.save(fn) - print "saved", fn - -# Write out the base icon, which is the first frame with that box -# blacked out (just to make the file smaller, since it's always -# displayed with one of the overlays on top of it). - -for i in range(w): - for j in range(h): - base.putpixel((i+minmini, j+minminj), (0, 0, 0)) -fn = "icon_installing.png" -base.save(fn) -print "saved", fn - -# The device_ui_init() function needs to tell the recovery UI the -# position of the overlay box. - -print -print "add this to your device_ui_init() function:" -print "-" * 40 -print " ui_parameters->install_overlay_offset_x = %d;" % (minmini,) -print " ui_parameters->install_overlay_offset_y = %d;" % (minminj,) -print "-" * 40 From 830b3e33634391e8f7264e5567acf0b510ea2d19 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 11 Mar 2014 13:22:04 -0700 Subject: [PATCH 046/110] separate fbdev-specific code out from minui Isolate the code that interacts with fbdev, in preparation for adding a new backend. Change-Id: I19105e9da1ca6408cebc110f7e2bb5abfb481ee9 --- minui/Android.mk | 2 +- minui/graphics.c | 166 +++------------------------------- minui/graphics.h | 49 ++++++++++ minui/graphics_fbdev.c | 201 +++++++++++++++++++++++++++++++++++++++++ minui/minui.h | 2 + 5 files changed, 268 insertions(+), 152 deletions(-) create mode 100644 minui/graphics.h create mode 100644 minui/graphics_fbdev.c diff --git a/minui/Android.mk b/minui/Android.mk index 43e0ad33..5cc84ac7 100644 --- a/minui/Android.mk +++ b/minui/Android.mk @@ -1,7 +1,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_SRC_FILES := graphics.c events.c resources.c +LOCAL_SRC_FILES := graphics.c graphics_fbdev.c events.c resources.c LOCAL_C_INCLUDES +=\ external/libpng\ diff --git a/minui/graphics.c b/minui/graphics.c index c2fc9ea9..f8ffa894 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -32,6 +32,7 @@ #include "font_10x18.h" #include "minui.h" +#include "graphics.h" typedef struct { GRSurface* texture; @@ -40,155 +41,26 @@ typedef struct { } GRFont; static GRFont* gr_font = NULL; +static minui_backend* gr_backend = NULL; static int overscan_percent = OVERSCAN_PERCENT; static int overscan_offset_x = 0; static int overscan_offset_y = 0; -static int gr_fb_fd = -1; static int gr_vt_fd = -1; -static GRSurface gr_framebuffer[2]; -static bool double_buffered; -static GRSurface* gr_draw = NULL; -static int displayed_buffer; - static unsigned char gr_current_r = 255; static unsigned char gr_current_g = 255; static unsigned char gr_current_b = 255; static unsigned char gr_current_a = 255; -static struct fb_var_screeninfo vi; +static GRSurface* gr_draw = NULL; static bool outside(int x, int y) { return x < 0 || x >= gr_draw->width || y < 0 || y >= gr_draw->height; } -static void set_displayed_framebuffer(unsigned n) -{ - if (n > 1 || !double_buffered) return; - - vi.yres_virtual = gr_framebuffer[0].height * 2; - vi.yoffset = n * gr_framebuffer[0].height; - vi.bits_per_pixel = gr_framebuffer[0].pixel_bytes * 8; - if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { - perror("active fb swap failed"); - } - displayed_buffer = n; -} - -static int get_framebuffer() -{ - int fd; - void *bits; - - struct fb_fix_screeninfo fi; - - fd = open("/dev/graphics/fb0", O_RDWR); - if (fd < 0) { - perror("cannot open fb0"); - return -1; - } - - if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { - perror("failed to get fb0 info"); - close(fd); - return -1; - } - - if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { - perror("failed to get fb0 info"); - close(fd); - return -1; - } - - // We print this out for informational purposes only, but - // throughout we assume that the framebuffer device uses an RGBX - // pixel format. This is the case for every development device I - // have access to. For some of those devices (eg, hammerhead aka - // Nexus 5), FBIOGET_VSCREENINFO *reports* that it wants a - // different format (XBGR) but actually produces the correct - // results on the display when you write RGBX. - // - // If you have a device that actually *needs* another pixel format - // (ie, BGRX, or 565), patches welcome... - - printf("fb0 reports (possibly inaccurate):\n" - " vi.bits_per_pixel = %d\n" - " vi.red.offset = %3d .length = %3d\n" - " vi.green.offset = %3d .length = %3d\n" - " vi.blue.offset = %3d .length = %3d\n", - vi.bits_per_pixel, - vi.red.offset, vi.red.length, - vi.green.offset, vi.green.length, - vi.blue.offset, vi.blue.length); - - bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (bits == MAP_FAILED) { - perror("failed to mmap framebuffer"); - close(fd); - return -1; - } - - overscan_offset_x = vi.xres * overscan_percent / 100; - overscan_offset_y = vi.yres * overscan_percent / 100; - - gr_framebuffer[0].width = vi.xres; - gr_framebuffer[0].height = vi.yres; - gr_framebuffer[0].row_bytes = fi.line_length; - gr_framebuffer[0].pixel_bytes = vi.bits_per_pixel / 8; - gr_framebuffer[0].data = bits; - memset(gr_framebuffer[0].data, 0, gr_framebuffer[0].height * gr_framebuffer[0].row_bytes); - - /* check if we can use double buffering */ - if (vi.yres * fi.line_length * 2 <= fi.smem_len) { - double_buffered = true; - - memcpy(gr_framebuffer+1, gr_framebuffer, sizeof(GRSurface)); - gr_framebuffer[1].data = gr_framebuffer[0].data + - gr_framebuffer[0].height * gr_framebuffer[0].row_bytes; - - gr_draw = gr_framebuffer+1; - - } else { - double_buffered = false; - - // Without double-buffering, we allocate RAM for a buffer to - // draw in, and then "flipping" the buffer consists of a - // memcpy from the buffer we allocated to the framebuffer. - - gr_draw = (GRSurface*) malloc(sizeof(GRSurface)); - memcpy(gr_draw, gr_framebuffer, sizeof(GRSurface)); - gr_draw->data = (unsigned char*) malloc(gr_draw->height * gr_draw->row_bytes); - if (!gr_draw->data) { - perror("failed to allocate in-memory surface"); - return -1; - } - } - - memset(gr_draw->data, 0, gr_draw->height * gr_draw->row_bytes); - gr_fb_fd = fd; - set_displayed_framebuffer(0); - - return fd; -} - -void gr_flip(void) -{ - if (double_buffered) { - // Change gr_draw to point to the buffer currently displayed, - // then flip the driver so we're displaying the other buffer - // instead. - gr_draw = gr_framebuffer + displayed_buffer; - set_displayed_framebuffer(1-displayed_buffer); - } else { - // Copy from the in-memory surface to the framebuffer. - memcpy(gr_framebuffer[0].data, gr_draw->data, - gr_draw->height * gr_draw->row_bytes); - } -} - int gr_measure(const char *s) { return gr_font->cwidth * strlen(s); @@ -466,7 +338,7 @@ static void gr_test() { gr_color(0, 0, 255, 128); gr_fill(gr_draw->width - 200 - x, 300, gr_draw->width - x, 500); - gr_flip(); + gr_draw = gr_backend->flip(gr_backend); } printf("getting end time\n"); time_t end = time(NULL); @@ -478,6 +350,10 @@ static void gr_test() { } #endif +void gr_flip() { + gr_draw = gr_backend->flip(gr_backend); +} + int gr_init(void) { gr_init_font(); @@ -493,36 +369,28 @@ int gr_init(void) return -1; } - if (get_framebuffer(&gr_framebuffer) < 0) { - gr_exit(); + gr_backend = open_fbdev(); + gr_draw = gr_backend->init(gr_backend); + if (gr_draw == NULL) { return -1; } - printf("framebuffer: fd %d (%d x %d)\n", - gr_fb_fd, gr_draw->width, gr_draw->height); + overscan_offset_x = gr_draw->width * overscan_percent / 100; + overscan_offset_y = gr_draw->height * overscan_percent / 100; gr_flip(); gr_flip(); - gr_fb_blank(true); - gr_fb_blank(false); - return 0; } void gr_exit(void) { - close(gr_fb_fd); - gr_fb_fd = -1; + gr_backend->exit(gr_backend); ioctl(gr_vt_fd, KDSETMODE, (void*) KD_TEXT); close(gr_vt_fd); gr_vt_fd = -1; - - if (!double_buffered) { - if (gr_draw) free(gr_draw->data); - free(gr_draw); - } } int gr_fb_width(void) @@ -537,9 +405,5 @@ int gr_fb_height(void) void gr_fb_blank(bool blank) { - int ret; - - ret = ioctl(gr_fb_fd, FBIOBLANK, blank ? FB_BLANK_POWERDOWN : FB_BLANK_UNBLANK); - if (ret < 0) - perror("ioctl(): blank"); + gr_backend->blank(gr_backend, blank); } diff --git a/minui/graphics.h b/minui/graphics.h new file mode 100644 index 00000000..94b89a55 --- /dev/null +++ b/minui/graphics.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _GRAPHICS_H_ +#define _GRAPHICS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "minui.h" + +typedef struct minui_backend { + // Initializes the backend and returns a gr_surface to draw into. + gr_surface (*init)(struct minui_backend*); + + // Causes the current drawing surface (returned by the most recent + // call to flip() or init()) to be displayed, and returns a new + // drawing surface. + gr_surface (*flip)(struct minui_backend*); + + // Blank (or unblank) the screen. + void (*blank)(struct minui_backend*, bool); + + // Device cleanup when drawing is done. + void (*exit)(struct minui_backend*); +} minui_backend; + +minui_backend* open_fbdev(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/minui/graphics_fbdev.c b/minui/graphics_fbdev.c new file mode 100644 index 00000000..6a6330b2 --- /dev/null +++ b/minui/graphics_fbdev.c @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2014 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. + */ + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include "minui.h" +#include "graphics.h" + +static gr_surface fbdev_init(minui_backend*); +static gr_surface fbdev_flip(minui_backend*); +static void fbdev_blank(minui_backend*, bool); +static void fbdev_exit(minui_backend*); + +static GRSurface gr_framebuffer[2]; +static bool double_buffered; +static GRSurface* gr_draw = NULL; +static int displayed_buffer; + +static struct fb_var_screeninfo vi; +static int fb_fd = -1; + +static minui_backend my_backend = { + .init = fbdev_init, + .flip = fbdev_flip, + .blank = fbdev_blank, + .exit = fbdev_exit, +}; + +minui_backend* open_fbdev() { + return &my_backend; +} + +static void fbdev_blank(minui_backend* backend, bool blank) +{ + int ret; + + ret = ioctl(fb_fd, FBIOBLANK, blank ? FB_BLANK_POWERDOWN : FB_BLANK_UNBLANK); + if (ret < 0) + perror("ioctl(): blank"); +} + +static void set_displayed_framebuffer(unsigned n) +{ + if (n > 1 || !double_buffered) return; + + vi.yres_virtual = gr_framebuffer[0].height * 2; + vi.yoffset = n * gr_framebuffer[0].height; + vi.bits_per_pixel = gr_framebuffer[0].pixel_bytes * 8; + if (ioctl(fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { + perror("active fb swap failed"); + } + displayed_buffer = n; +} + +static gr_surface fbdev_init(minui_backend* backend) { + int fd; + void *bits; + + struct fb_fix_screeninfo fi; + + fd = open("/dev/graphics/fb0", O_RDWR); + if (fd < 0) { + perror("cannot open fb0"); + return NULL; + } + + if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return NULL; + } + + if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return NULL; + } + + // We print this out for informational purposes only, but + // throughout we assume that the framebuffer device uses an RGBX + // pixel format. This is the case for every development device I + // have access to. For some of those devices (eg, hammerhead aka + // Nexus 5), FBIOGET_VSCREENINFO *reports* that it wants a + // different format (XBGR) but actually produces the correct + // results on the display when you write RGBX. + // + // If you have a device that actually *needs* another pixel format + // (ie, BGRX, or 565), patches welcome... + + printf("fb0 reports (possibly inaccurate):\n" + " vi.bits_per_pixel = %d\n" + " vi.red.offset = %3d .length = %3d\n" + " vi.green.offset = %3d .length = %3d\n" + " vi.blue.offset = %3d .length = %3d\n", + vi.bits_per_pixel, + vi.red.offset, vi.red.length, + vi.green.offset, vi.green.length, + vi.blue.offset, vi.blue.length); + + bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (bits == MAP_FAILED) { + perror("failed to mmap framebuffer"); + close(fd); + return NULL; + } + + gr_framebuffer[0].width = vi.xres; + gr_framebuffer[0].height = vi.yres; + gr_framebuffer[0].row_bytes = fi.line_length; + gr_framebuffer[0].pixel_bytes = vi.bits_per_pixel / 8; + gr_framebuffer[0].data = bits; + memset(gr_framebuffer[0].data, 0, gr_framebuffer[0].height * gr_framebuffer[0].row_bytes); + + /* check if we can use double buffering */ + if (vi.yres * fi.line_length * 2 <= fi.smem_len) { + double_buffered = true; + + memcpy(gr_framebuffer+1, gr_framebuffer, sizeof(GRSurface)); + gr_framebuffer[1].data = gr_framebuffer[0].data + + gr_framebuffer[0].height * gr_framebuffer[0].row_bytes; + + gr_draw = gr_framebuffer+1; + + } else { + double_buffered = false; + + // Without double-buffering, we allocate RAM for a buffer to + // draw in, and then "flipping" the buffer consists of a + // memcpy from the buffer we allocated to the framebuffer. + + gr_draw = (GRSurface*) malloc(sizeof(GRSurface)); + memcpy(gr_draw, gr_framebuffer, sizeof(GRSurface)); + gr_draw->data = (unsigned char*) malloc(gr_draw->height * gr_draw->row_bytes); + if (!gr_draw->data) { + perror("failed to allocate in-memory surface"); + return NULL; + } + } + + memset(gr_draw->data, 0, gr_draw->height * gr_draw->row_bytes); + fb_fd = fd; + set_displayed_framebuffer(0); + + printf("framebuffer: %d (%d x %d)\n", fb_fd, gr_draw->width, gr_draw->height); + + fbdev_blank(backend, true); + fbdev_blank(backend, false); + + return gr_draw; +} + +static gr_surface fbdev_flip(minui_backend* backend) { + if (double_buffered) { + // Change gr_draw to point to the buffer currently displayed, + // then flip the driver so we're displaying the other buffer + // instead. + gr_draw = gr_framebuffer + displayed_buffer; + set_displayed_framebuffer(1-displayed_buffer); + } else { + // Copy from the in-memory surface to the framebuffer. + memcpy(gr_framebuffer[0].data, gr_draw->data, + gr_draw->height * gr_draw->row_bytes); + } + return gr_draw; +} + +static void fbdev_exit(minui_backend* backend) { + close(fb_fd); + fb_fd = -1; + + if (!double_buffered && gr_draw) { + free(gr_draw->data); + free(gr_draw); + } + gr_draw = NULL; +} diff --git a/minui/minui.h b/minui/minui.h index 83c121e2..b4b57e1d 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -17,6 +17,8 @@ #ifndef _MINUI_H_ #define _MINUI_H_ +#include + #include #ifdef __cplusplus From 469954fe3d7c3d729e500512ab911a037b90cc77 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 7 Mar 2014 09:21:25 -0800 Subject: [PATCH 047/110] change how recovery animation is implemented Instead of one 'base' installing image and a number of overlay images that are drawn on top of it, we represent the installing animation with one PNG that contains all the animation frames, interlaced by row. The PNG is expected to have a text chunk with the keyword 'Frames' and a value that's the number of frames (as an ascii string). This representation provides better compression, removes the need to subclass ScreenRecoveryUI just to change the position of the overlay or number of frames, and doesn't require gr_blit() to support an alpha channel. We also remove the 'indeterminate' progress bar used when wiping data and/or cache. The main animation serves the same purpose (showing that the device is still alive); the spinning progress bar has been redundant for a while. This changes the default recovery animation to include the antenna-wiggling and gear-turning that's used in the Nexus 5 recovery animation. Change-Id: I51930a76035ac09969a25472f4e572b289418729 Conflicts: screen_ui.cpp screen_ui.h --- minui/minui.h | 1 + minui/resources.c | 182 ++++++++++++++++++++++- res/images/icon_installing.png | Bin 25261 -> 118562 bytes res/images/icon_installing_overlay01.png | Bin 10095 -> 0 bytes res/images/icon_installing_overlay02.png | Bin 9990 -> 0 bytes res/images/icon_installing_overlay03.png | Bin 9782 -> 0 bytes res/images/icon_installing_overlay04.png | Bin 9817 -> 0 bytes res/images/icon_installing_overlay05.png | Bin 9863 -> 0 bytes res/images/icon_installing_overlay06.png | Bin 9944 -> 0 bytes res/images/icon_installing_overlay07.png | Bin 10062 -> 0 bytes res/images/indeterminate01.png | Bin 673 -> 0 bytes res/images/indeterminate02.png | Bin 687 -> 0 bytes res/images/indeterminate03.png | Bin 661 -> 0 bytes res/images/indeterminate04.png | Bin 665 -> 0 bytes res/images/indeterminate05.png | Bin 683 -> 0 bytes res/images/indeterminate06.png | Bin 676 -> 0 bytes screen_ui.cpp | 107 +++---------- screen_ui.h | 8 +- 18 files changed, 203 insertions(+), 95 deletions(-) delete mode 100644 res/images/icon_installing_overlay01.png delete mode 100644 res/images/icon_installing_overlay02.png delete mode 100644 res/images/icon_installing_overlay03.png delete mode 100644 res/images/icon_installing_overlay04.png delete mode 100644 res/images/icon_installing_overlay05.png delete mode 100644 res/images/icon_installing_overlay06.png delete mode 100644 res/images/icon_installing_overlay07.png delete mode 100644 res/images/indeterminate01.png delete mode 100644 res/images/indeterminate02.png delete mode 100644 res/images/indeterminate03.png delete mode 100644 res/images/indeterminate04.png delete mode 100644 res/images/indeterminate05.png delete mode 100644 res/images/indeterminate06.png diff --git a/minui/minui.h b/minui/minui.h index 1b8dd059..5c0defc4 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -72,6 +72,7 @@ void ev_dispatch(void); // Returns 0 if no error, else negative. int res_create_surface(const char* name, gr_surface* pSurface); +int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurface); int res_create_localized_surface(const char* name, gr_surface* pSurface); void res_free_surface(gr_surface surface); diff --git a/minui/resources.c b/minui/resources.c index c0a9ccac..5ad9b1d0 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -181,6 +181,182 @@ exit: return result; } +int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurface) { + char resPath[256]; + int result = 0; + unsigned char header[8]; + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; + int i; + GGLSurface** surface = NULL; + + *pSurface = NULL; + *frames = -1; + + snprintf(resPath, sizeof(resPath)-1, "/res/images/%s.png", name); + resPath[sizeof(resPath)-1] = '\0'; + FILE* fp = fopen(resPath, "rb"); + if (fp == NULL) { + result = -1; + goto exit; + } + + size_t bytesRead = fread(header, 1, sizeof(header), fp); + if (bytesRead != sizeof(header)) { + result = -2; + goto exit; + } + + if (png_sig_cmp(header, 0, sizeof(header))) { + result = -3; + goto exit; + } + + png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) { + result = -4; + goto exit; + } + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + result = -5; + goto exit; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + result = -6; + goto exit; + } + + png_init_io(png_ptr, fp); + png_set_sig_bytes(png_ptr, sizeof(header)); + png_read_info(png_ptr, info_ptr); + + int color_type, bit_depth; + png_uint_32 width, height; + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, + &color_type, NULL, NULL, NULL); + + int channels = png_get_channels(png_ptr, info_ptr); + + if (!(bit_depth == 8 && + ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || + (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || + (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || + color_type == PNG_COLOR_TYPE_GRAY))))) { + return -7; + goto exit; + } + + *frames = 1; + png_textp text; + int num_text; + if (png_get_text(png_ptr, info_ptr, &text, &num_text)) { + for (i = 0; i < num_text; ++i) { + if (text[i].key && strcmp(text[i].key, "Frames") == 0 && text[i].text) { + *frames = atoi(text[i].text); + break; + } + } + printf(" found frames = %d\n", *frames); + } + + if (height % *frames != 0) { + printf("bad height (%d) for frame count (%d)\n", height, *frames); + result = -9; + goto exit; + } + + size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; + size_t pixelSize = stride * height / *frames; + + surface = malloc(*frames * sizeof(GGLSurface*)); + if (surface == NULL) { + result = -8; + goto exit; + } + for (i = 0; i < *frames; ++i) { + surface[i] = malloc(sizeof(GGLSurface) + pixelSize); + surface[i]->version = sizeof(GGLSurface); + surface[i]->width = width; + surface[i]->height = height / *frames; + surface[i]->stride = width; /* Yes, pixels, not bytes */ + surface[i]->data = (unsigned char*) (surface[i] + 1); + + if (channels == 3) { + surface[i]->format = GGL_PIXEL_FORMAT_RGBX_8888; + } else if (color_type == PNG_COLOR_TYPE_PALETTE) { + surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; + } else if (channels == 1) { + surface[i]->format = GGL_PIXEL_FORMAT_L_8; + } else { + surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; + } + } + + int alpha = (channels == 4); + if (color_type == PNG_COLOR_TYPE_PALETTE) { + png_set_palette_to_rgb(png_ptr); + } + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { + png_set_tRNS_to_alpha(png_ptr); + alpha = 1; + } + if (color_type == PNG_COLOR_TYPE_GRAY) { + alpha = 1; + } + + png_uint_32 y; + if (channels == 3 || (channels == 1 && !alpha)) { + for (y = 0; y < height; ++y) { + int fy = y / *frames; + int fr = y % *frames; + unsigned char* pRow = surface[fr]->data + fy * stride; + png_read_row(png_ptr, pRow, NULL); + + int x; + for(x = width - 1; x >= 0; x--) { + int sx = x * 3; + int dx = x * 4; + unsigned char r = pRow[sx]; + unsigned char g = pRow[sx + 1]; + unsigned char b = pRow[sx + 2]; + unsigned char a = 0xff; + pRow[dx ] = r; // r + pRow[dx + 1] = g; // g + pRow[dx + 2] = b; // b + pRow[dx + 3] = a; + } + } + } else { + for (y = 0; y < height; ++y) { + int fy = y / *frames; + int fr = y % *frames; + unsigned char* pRow = surface[fr]->data + fy * stride; + png_read_row(png_ptr, pRow, NULL); + } + } + + *pSurface = (gr_surface*) surface; + +exit: + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + + if (fp != NULL) { + fclose(fp); + } + if (result < 0) { + if (surface) { + for (i = 0; i < *frames; ++i) { + if (surface[i]) free(surface[i]); + } + free(surface); + } + } + return result; +} + static int matches_locale(const char* loc) { if (locale == NULL) return 0; @@ -249,7 +425,7 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { png_read_info(png_ptr, info_ptr); int color_type, bit_depth; - size_t width, height; + png_uint_32 width, height; png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, NULL, NULL, NULL); int channels = png_get_channels(png_ptr, info_ptr); @@ -261,13 +437,13 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { } unsigned char* row = malloc(width); - int y; + png_uint_32 y; for (y = 0; y < height; ++y) { png_read_row(png_ptr, row, NULL); int w = (row[1] << 8) | row[0]; int h = (row[3] << 8) | row[2]; int len = row[4]; - char* loc = row+5; + char* loc = (char*)row+5; if (y+1+h >= height || matches_locale(loc)) { printf(" %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y); diff --git a/res/images/icon_installing.png b/res/images/icon_installing.png index 571eb8b0f23660a0a16c1d23902b764fd614295e..c2c02016251af9263f778ee7f3f3329520d9fd39 100644 GIT binary patch literal 118562 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 z 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 literal 25261 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
  • 2lxABsHK;WE2PYMvqXfyQPjno`( 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 diff --git a/res/images/icon_installing_overlay01.png b/res/images/icon_installing_overlay01.png deleted file mode 100644 index e762d6cbe8b31f91307d54e29db24217c98d7f00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10095 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 Rn5zH)002ovPDHLkV1gHb`9}Z% diff --git a/res/images/icon_installing_overlay02.png b/res/images/icon_installing_overlay02.png deleted file mode 100644 index f7a853017e51e13eeac0159998f1714f8e143088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9990 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 QwEzGB07*qoM6N<$f;CZ382|tP diff --git a/res/images/icon_installing_overlay04.png b/res/images/icon_installing_overlay04.png deleted file mode 100644 index a74903d33175f9e067c8482383a94b0084f2407a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9817 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 diff --git a/res/images/icon_installing_overlay05.png b/res/images/icon_installing_overlay05.png deleted file mode 100644 index d17bdc0062760a3d6e3a344b95d15a5c813e8fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9863 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 diff --git a/res/images/icon_installing_overlay06.png b/res/images/icon_installing_overlay06.png deleted file mode 100644 index 1200b75cb310f5dfd0b45439656f662c17636b9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9944 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 diff --git a/res/images/indeterminate01.png b/res/images/indeterminate01.png deleted file mode 100644 index 933528d6d42ed28588e6a9ff806617082ae7214f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmV;S0$%-zP)8nu5dK&T_T(t2`AoC%c9Sp81`w?QHjZ|KjBP?R9%^zx)1!Bg!p0>Gk)WxX@&xIfn z!O;uXG;d`q|DtS3zm@+^Jj^BlFq_cTIm++jdd~C!(r~=EJXLEzRU3b%zr8NnixYcP zjcnYRei`26?YB$g@qHagP)dJ9H-Z~~fGz|V{*Z!#g8l#n7cTTigpy`eOH8&& zCOFOPf-RFV*TrP|KIb{gEK1D{%)9T*x#vBSb0?1>0H|!CQiBwv3`t5*!{nqh0x+M9 z<`chEt(B^E(n}SlYmF>2X``dc#deoFnFJsT22n69Z#2rA+qspB3swfpBu}*+;y+5w zf?<3)^49C#dPA1Ts@;Q1QED?MBEu3$1R(BW zKJiP{`pVt`kA>_GqF`9w++N#1vT+Iy>kpsP^s49V zo@OV(yc=JRyp6`{gF`l1x+z&!WETk5R#G8JUj-K{vV!!^I2@x=qur*wmInYkO*(!G z0wu;!69A+n07y;}A_*500oQmNe{Zks9o&2LoKn}*O-~Rgl_w}5WGO?|mJ6>6eKFPU z%A+v5fk-pUU(%vv{PARZ-dfu~+IsTR#wj>V)0@vb)pHgXvpmxf;XiE(*>{|LKE1lW zI9+{sc>nPW7E3HxED4A_-Ef+#V7d>!=>=vsWTm|^>j_xsFc`nSfcqWVZPM|x6a#=# z=6Ae|W!%wNntmDoU3dV{@9@|6$=`GG{4e56-v%)2wts$pb9c}5EdbN=*7(DTjZ<*k zsx$r7#p&Y8uW#*{o_l8ixYq&R8E5*?M_=0|0DuJY4{vXh>#S>W8&n@>u8~E~d>>=m zVKzIzO|7L-FaQw!7)*2P6d8YG`pjxOWbX<&;$WCuuhjMPb)Ab`@Y@>zq0c>q_8Yxa VX`y~)fd&8o002ovPDHLkV1j{UJZJy_ diff --git a/res/images/indeterminate03.png b/res/images/indeterminate03.png deleted file mode 100644 index 0e97399d1e88892b23280df21df786c9840603da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4w8P`6#h=?6oI-m4I*Tw9omUjY9FE%8{!2JVuCm6gd(1RvA{zlQq7c9N;+E}oMfYw zs2d-K%l*H$jDVIx&T#MXch6t!?>I*$Jb4OF$l8QTzD+Spd7e_M(`a=J56{vCN-X^x zWya*}6<$@=zWY^{%Nmx?>K$ZeQV*;*D zdW%WCvbA^b*=y1)CNdPUOGPap8J=K)%FWeP5LefosN?HP=hWOa*%guj7o)-2&cVYM zZ_OU`N$+;{ZIIr7m)V>P@RZFf2Vnr1emK578$8(FUw{6_491$BtU|MKV(A7cwJr;m zx(&)YSoH!kdtq6Z%4{pwAA7|lZfx$Z9KBLS8rABu8x?nXDNFe$Wl8#_{C5)J^LvOt z5d!4@W6ha9Cqgfvq2^#(vOORvYL3iO};-THbXR)_a>NPpAvGo&x|_MkjV v#LA;VEq6PAy{@Y={*|vcVl5Dt*$DX#!z*cCJM$h+00000NkvXXu0mjflfpWZ diff --git a/res/images/indeterminate04.png b/res/images/indeterminate04.png deleted file mode 100644 index c7d5b4e04a4285096133a59ef87f157c58376e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)8nu5dJQ)vv_Q(!SGyo@D>m0Lljxt7bw~-kCLrFFVL(-9>M}5PgMcCv*4hzGde&k z$m}4WcqC6smbR(uGa%l5{CGS|A0c% zWD}XZwq+CmD)OvYX5DDejRqRwehZlDAN{jtoJI*;`xbgbxw=7=w9jTlVL?ShW`hr=;*BoP)Qf~yCjV1bBn zD(E#n?u(wglobeo?$WpteQ$KC65Ik5dx+?N_Yw#+qrh#N`!Xr=?1)c7$TY2@Z|rr2 zCX4cM1JT(8!gw>e5F^*6P-C6P$dlrpA30YCFJ6O{L@Ze803bs7`NL+O91O?Zvp1ED ztIJNTeX=Sh5>C~!Qy)N_p5TCxse-hcZ?$Uk+Ykg=US8aNjeDchr!UVf!Ad+tM5N!- zgO&X^L?7PET+KP^`EIaIe?M7?&3+!7V_s9oW;a(+PleI>|rj@2UULp1z!211M(+ z@J<#K?&-B%K05d|_2;OK1hTpTU{;HAmT;$RAfm_k^#(wZXX`Z92>07=e7)Ho(^zM= zioTU=gSI#6VAZPR2YtO+E#Rt=XORmnsE+Ly4%cb$5r+6qhUa_64=Gc$2fj5a4Q_uTJ(=iD>NcQThDJbnh(!Y;xdRvuBY90LThC}a#0 zbeJ}f!gTjYBP%!Rx1-BW@L+YJR7r{Qj1D2+{Grpw--a54we7xlk-Sq0Y_|m~%M*0xf!}xfVF=QL$WDs~U@fLk28B zBA9w0avDU$c|mKiaTRk7M3(F z@^fTto~AjIkh*FLjYSKk8z?1_ z5-jiU@>zq{s`p;L1wb^>11VifCk`d8Vj|(hqjHi9XtJTo1HjH{`biSu|NQ##s(HAy zzPa-Hy^&vUr)<5sYGqewgc9ACR9AKo01vuj9L2!QzP$l(({BR@DN&x$ zA>`Z4zP$l3>bGO{BVF{q=nTl;73o|(nXc=y$nxz?e2q>WrrlHt%()x@zX1xuXrNr7 RAw>WH002ovPDHLkV1kpzLDc{N diff --git a/res/images/indeterminate06.png b/res/images/indeterminate06.png deleted file mode 100644 index 44867619fd3a68331ecaeab35fd186e5a2cd7638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)K370?&E?5RVa0(B44113&SUpLyXh>0UA?`MX}!^UEcyB+xxQ*WdD>dvtm2X4 zER#yJFiDB3Q;{VCKxMmZ8R;PkXE)=<<4)7OlyjLD)Vk2mtYJpoI zxxQ+xZ?5egaNPRf=M=rFIlHE*l2E#;3XK<~;{>({fXE-sZpKZw+uGhENi`aZK`g%t zl2Qvn|9>(h0OE;*!&d+>=p*pNR2kw6e4R=*1f)n;uK8%KUPwt#U8LZXj%Cf2SLrUE_QIDunW#>=-H zHbrl~%T&!-bV_`tAySmu6kKhsr>*Fi;t5Rs9V z)kdTTpqyG1$*Ls~XwXOCHL$d$EtoAuzqExj2ZKHU1Remo^k(>gf8$Jl?+*dooe#g^ z-C~{T&rY-PJX39kuKSd3R%iu`FfL%cjv=J z`+Ad(x7EBq5q;@yJ7n*Qa;}`r*L4{-jY0s^C`>S_Oi}CC8{ijeV{{}tj;@;k0000< KMNUMnLSTaaAUco$ diff --git a/screen_ui.cpp b/screen_ui.cpp index 8376341c..38b21f84 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -69,20 +69,8 @@ ScreenRecoveryUI::ScreenRecoveryUI() : menu_top(0), menu_items(0), menu_sel(0), - - // These values are correct for the default image resources - // provided with the android platform. Devices which use - // different resources should have a subclass of ScreenRecoveryUI - // that overrides Init() to set these values appropriately and - // then call the superclass Init(). animation_fps(20), - indeterminate_frames(6), - installing_frames(7), - install_overlay_offset_x(13), - install_overlay_offset_y(190), - overlay_offset_x(-1), - overlay_offset_y(-1) { - + installing_frames(-1) { for (int i = 0; i < 5; i++) backgroundIcon[i] = NULL; @@ -90,20 +78,6 @@ ScreenRecoveryUI::ScreenRecoveryUI() : self = this; } -// Draw the given frame over the installation overlay animation. The -// background is not cleared or draw with the base icon first; we -// assume that the frame already contains some other frame of the -// animation. Does nothing if no overlay animation is defined. -// Should only be called with updateMutex locked. -void ScreenRecoveryUI::draw_install_overlay_locked(int frame) { - if (installationOverlay == NULL || overlay_offset_x < 0) return; - gr_surface surface = installationOverlay[frame]; - int iconWidth = gr_get_width(surface); - int iconHeight = gr_get_height(surface); - gr_blit(surface, 0, 0, iconWidth, iconHeight, - overlay_offset_x, overlay_offset_y); -} - // Clear the screen and draw the currently selected background icon (if any). // Should only be called with updateMutex locked. void ScreenRecoveryUI::draw_background_locked(Icon icon) @@ -114,6 +88,9 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) if (icon) { gr_surface surface = backgroundIcon[icon]; + if (icon == INSTALLING_UPDATE || icon == ERASING) { + surface = installation[installingFrame]; + } gr_surface text_surface = backgroundText[icon]; int iconWidth = gr_get_width(surface); @@ -121,16 +98,13 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) int textWidth = gr_get_width(text_surface); int textHeight = gr_get_height(text_surface); - int iconX = (gr_fb_width() - iconWidth) / 2; - int iconY = (gr_fb_height() - (iconHeight+textHeight+40)) / 2; + iconX = (gr_fb_width() - iconWidth) / 2; + iconY = (gr_fb_height() - (iconHeight+textHeight+40)) / 2; int textX = (gr_fb_width() - textWidth) / 2; int textY = ((gr_fb_height() - (iconHeight+textHeight+40)) / 2) + iconHeight + 40; gr_blit(surface, 0, 0, iconWidth, iconHeight, iconX, iconY); - if (icon == INSTALLING_UPDATE || icon == ERASING) { - draw_install_overlay_locked(installingFrame); - } gr_color(255, 255, 255, 255); gr_texticon(textX, textY, text_surface); @@ -144,7 +118,8 @@ void ScreenRecoveryUI::draw_progress_locked() if (currentIcon == ERROR) return; if (currentIcon == INSTALLING_UPDATE || currentIcon == ERASING) { - draw_install_overlay_locked(installingFrame); + gr_surface icon = installation[installingFrame]; + gr_blit(icon, 0, 0, gr_get_width(icon), gr_get_height(icon), iconX, iconY); } if (progressBarType != EMPTY) { @@ -181,18 +156,6 @@ void ScreenRecoveryUI::draw_progress_locked() } } } - - if (progressBarType == INDETERMINATE) { - static int frame = 0; - gr_blit(progressBarIndeterminate[frame], 0, 0, width, height, dx, dy); - // in RTL locales, we run the animation backwards, which - // makes the spinner spin the other way. - if (rtl_locale) { - frame = (frame + indeterminate_frames - 1) % indeterminate_frames; - } else { - frame = (frame + 1) % indeterminate_frames; - } - } } } @@ -319,12 +282,6 @@ void ScreenRecoveryUI::progress_loop() { redraw = 1; } - // update the progress bar animation, if active - // skip this if we have a text overlay (too expensive to update) - if (progressBarType == INDETERMINATE && !show_text) { - redraw = 1; - } - // move the progress bar forward on timed intervals, if configured int duration = progressScopeDuration; if (progressBarType == DETERMINATE && duration > 0) { @@ -355,6 +312,13 @@ void ScreenRecoveryUI::LoadBitmap(const char* filename, gr_surface* surface) { } } +void ScreenRecoveryUI::LoadBitmapArray(const char* filename, int* frames, gr_surface** surface) { + int result = res_create_multi_surface(filename, frames, surface); + if (result < 0) { + LOGE("missing bitmap %s\n(Code %d)\n", filename, result); + } +} + void ScreenRecoveryUI::LoadLocalizedBitmap(const char* filename, gr_surface* surface) { int result = res_create_localized_surface(filename, surface); if (result < 0) { @@ -376,7 +340,9 @@ void ScreenRecoveryUI::Init() text_cols = gr_fb_width() / char_width; if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1; - LoadBitmap("icon_installing", &backgroundIcon[INSTALLING_UPDATE]); + backgroundIcon[NONE] = NULL; + LoadBitmapArray("icon_installing", &installing_frames, &installation); + backgroundIcon[INSTALLING_UPDATE] = installing_frames ? installation[0] : NULL; backgroundIcon[ERASING] = backgroundIcon[INSTALLING_UPDATE]; LoadBitmap("icon_error", &backgroundIcon[ERROR]); backgroundIcon[NO_COMMAND] = backgroundIcon[ERROR]; @@ -389,31 +355,6 @@ void ScreenRecoveryUI::Init() LoadLocalizedBitmap("no_command_text", &backgroundText[NO_COMMAND]); LoadLocalizedBitmap("error_text", &backgroundText[ERROR]); - int i; - - progressBarIndeterminate = (gr_surface*)malloc(indeterminate_frames * - sizeof(gr_surface)); - for (i = 0; i < indeterminate_frames; ++i) { - char filename[40]; - // "indeterminate01.png", "indeterminate02.png", ... - sprintf(filename, "indeterminate%02d", i+1); - LoadBitmap(filename, progressBarIndeterminate+i); - } - - if (installing_frames > 0) { - installationOverlay = (gr_surface*)malloc(installing_frames * - sizeof(gr_surface)); - for (i = 0; i < installing_frames; ++i) { - char filename[40]; - // "icon_installing_overlay01.png", - // "icon_installing_overlay02.png", ... - sprintf(filename, "icon_installing_overlay%02d", i+1); - LoadBitmap(filename, installationOverlay+i); - } - } else { - installationOverlay = NULL; - } - pthread_create(&progress_t, NULL, progress_thread, NULL); RecoveryUI::Init(); @@ -446,16 +387,6 @@ void ScreenRecoveryUI::SetBackground(Icon icon) { pthread_mutex_lock(&updateMutex); - // Adjust the offset to account for the positioning of the - // base image on the screen. - if (backgroundIcon[icon] != NULL) { - gr_surface bg = backgroundIcon[icon]; - gr_surface text = backgroundText[icon]; - overlay_offset_x = install_overlay_offset_x + (gr_fb_width() - gr_get_width(bg)) / 2; - overlay_offset_y = install_overlay_offset_y + - (gr_fb_height() - (gr_get_height(bg) + gr_get_height(text) + 40)) / 2; - } - currentIcon = icon; update_screen_locked(); @@ -495,7 +426,7 @@ void ScreenRecoveryUI::SetProgress(float fraction) if (fraction > 1.0) fraction = 1.0; if (progressBarType == DETERMINATE && fraction > progress) { // Skip updates that aren't visibly different. - int width = gr_get_width(progressBarIndeterminate[0]); + int width = gr_get_width(progressBarEmpty); float scale = width * progressScopeSize; if ((int) (progress * scale) != (int) (fraction * scale)) { progress = fraction; diff --git a/screen_ui.h b/screen_ui.h index fc35d95b..ada006d1 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -69,8 +69,7 @@ class ScreenRecoveryUI : public RecoveryUI { pthread_mutex_t updateMutex; gr_surface backgroundIcon[5]; gr_surface backgroundText[5]; - gr_surface *installationOverlay; - gr_surface *progressBarIndeterminate; + gr_surface *installation; gr_surface progressBarEmpty; gr_surface progressBarFill; @@ -100,9 +99,9 @@ class ScreenRecoveryUI : public RecoveryUI { pthread_t progress_t; int animation_fps; - int indeterminate_frames; int installing_frames; - int overlay_offset_x, overlay_offset_y; + + int iconX, iconY; void draw_install_overlay_locked(int frame); void draw_background_locked(Icon icon); @@ -114,6 +113,7 @@ class ScreenRecoveryUI : public RecoveryUI { void progress_loop(); void LoadBitmap(const char* filename, gr_surface* surface); + void LoadBitmapArray(const char* filename, int* frames, gr_surface** surface); void LoadLocalizedBitmap(const char* filename, gr_surface* surface); }; From 4db31d20c92d093e1bdc9499aeeddc1adc19b209 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 4 Sep 2013 13:44:38 -0700 Subject: [PATCH 048/110] allow CheckKey to request mounting /system Also provide a default implementation of CheckKey that's reasonable for many devices (those that have power and volume keys). Change-Id: Icf6c7746ebd866152d402059dbd27fd16bd51ff8 --- Android.mk | 1 + ui.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- ui.h | 6 +++++- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/Android.mk b/Android.mk index 3d615681..1308066d 100644 --- a/Android.mk +++ b/Android.mk @@ -89,6 +89,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := verifier_test LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_TAGS := tests +LOCAL_CFLAGS += -DNO_RECOVERY_MOUNT LOCAL_SRC_FILES := \ verifier_test.cpp \ asn1_decoder.cpp \ diff --git a/ui.cpp b/ui.cpp index cece02d3..5043ee52 100644 --- a/ui.cpp +++ b/ui.cpp @@ -31,6 +31,7 @@ #include #include "common.h" +#include "roots.h" #include "device.h" #include "minui/minui.h" #include "screen_ui.h" @@ -47,7 +48,10 @@ RecoveryUI::RecoveryUI() : key_queue_len(0), key_last_down(-1), key_long_press(false), - key_down_count(0) { + key_down_count(0), + consecutive_power_keys(0), + consecutive_alternate_keys(0), + last_key(-1) { pthread_mutex_init(&key_queue_mutex, NULL); pthread_cond_init(&key_queue_cond, NULL); self = this; @@ -152,6 +156,13 @@ void RecoveryUI::process_key(int key_code, int updown) { case RecoveryUI::ENQUEUE: EnqueueKey(key_code); break; + + case RecoveryUI::MOUNT_SYSTEM: +#ifndef NO_RECOVERY_MOUNT + ensure_path_mounted("/system"); + Print("Mounted /system."); +#endif + break; } } } @@ -258,8 +269,41 @@ void RecoveryUI::FlushKeys() { pthread_mutex_unlock(&key_queue_mutex); } +// The default CheckKey implementation assumes the device has power, +// volume up, and volume down keys. +// +// - Hold power and press vol-up to toggle display. +// - Press power seven times in a row to reboot. +// - Alternate vol-up and vol-down seven times to mount /system. RecoveryUI::KeyAction RecoveryUI::CheckKey(int key) { - return RecoveryUI::ENQUEUE; + if (IsKeyPressed(KEY_POWER) && key == KEY_VOLUMEUP) { + return TOGGLE; + } + + if (key == KEY_POWER) { + ++consecutive_power_keys; + if (consecutive_power_keys >= 7) { + return REBOOT; + } + } else { + consecutive_power_keys = 0; + } + + if ((key == KEY_VOLUMEUP && + (last_key == KEY_VOLUMEDOWN || last_key == -1)) || + (key == KEY_VOLUMEDOWN && + (last_key == KEY_VOLUMEUP || last_key == -1))) { + ++consecutive_alternate_keys; + if (consecutive_alternate_keys >= 7) { + consecutive_alternate_keys = 0; + return MOUNT_SYSTEM; + } + } else { + consecutive_alternate_keys = 0; + } + last_key = key; + + return ENQUEUE; } void RecoveryUI::NextCheckKeyIsLong(bool is_long_press) { diff --git a/ui.h b/ui.h index 6c8987a3..d85fc659 100644 --- a/ui.h +++ b/ui.h @@ -77,7 +77,7 @@ class RecoveryUI { // Return value indicates whether an immediate operation should be // triggered (toggling the display, rebooting the device), or if // the key should be enqueued for use by the main thread. - enum KeyAction { ENQUEUE, TOGGLE, REBOOT, IGNORE }; + enum KeyAction { ENQUEUE, TOGGLE, REBOOT, IGNORE, MOUNT_SYSTEM }; virtual KeyAction CheckKey(int key); // Called immediately before each call to CheckKey(), tell you if @@ -121,6 +121,10 @@ private: int key_down_count; // under key_queue_mutex int rel_sum; + int consecutive_power_keys; + int consecutive_alternate_keys; + int last_key; + typedef struct { RecoveryUI* ui; int key_code; From 3ceeb580eb47419ce1c74d54c226a1a70ff2332f Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 11 Mar 2014 12:39:33 -0700 Subject: [PATCH 049/110] update tools for making recovery images We no longer render animations as a base image with a possibly-partially-transparent overlay drawn over it, so delete the make-overlay.py tool. Now we represent them as series of images that are interlaced by row (with a special text chunk in the PNG file specifying the number of frames) so add the interlace-frames.py tool to make those. Change-Id: I866db269107a21351c3df3b4683f233f72234334 --- interlace-frames.py | 53 +++++++++++++++++++++++ make-overlay.py | 102 -------------------------------------------- 2 files changed, 53 insertions(+), 102 deletions(-) create mode 100644 interlace-frames.py delete mode 100644 make-overlay.py diff --git a/interlace-frames.py b/interlace-frames.py new file mode 100644 index 00000000..243e565e --- /dev/null +++ b/interlace-frames.py @@ -0,0 +1,53 @@ +# Copyright (C) 2014 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. + +"""Script to take a set of frames (PNG files) for a recovery animation +and turn it into a single output image which contains the input frames +interlaced by row. Run with the names of all the input frames on the +command line, in order, followed by the name of the output file.""" + +import sys +try: + import Image + import PngImagePlugin +except ImportError: + print "This script requires the Python Imaging Library to be installed." + sys.exit(1) + +frames = [Image.open(fn).convert("RGB") for fn in sys.argv[1:-1]] +assert len(frames) > 0, "Must have at least one input frame." +sizes = set() +for fr in frames: + sizes.add(fr.size) + +assert len(sizes) == 1, "All input images must have the same size." +w, h = sizes.pop() +N = len(frames) + +out = Image.new("RGB", (w, h*N)) +for j in range(h): + for i in range(w): + for fn, f in enumerate(frames): + out.putpixel((i, j*N+fn), f.getpixel((i, j))) + +# When loading this image, the graphics library expects to find a text +# chunk that specifies how many frames this animation represents. If +# you post-process the output of this script with some kind of +# optimizer tool (eg pngcrush or zopflipng) make sure that your +# optimizer preserves this text chunk. + +meta = PngImagePlugin.PngInfo() +meta.add_text("Frames", str(N)) + +out.save(sys.argv[-1], pnginfo=meta) diff --git a/make-overlay.py b/make-overlay.py deleted file mode 100644 index 7f931b37..00000000 --- a/make-overlay.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (C) 2011 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. - -"""Script to take a set of frames (PNG files) for a recovery -"installing" icon animation and turn it into a base image plus a set -of overlays, as needed by the recovery UI code. Run with the names of -all the input frames on the command line, in order.""" - -import sys -try: - import Image -except ImportError: - print "This script requires the Python Imaging Library to be installed." - sys.exit(1) - -# Find the smallest box that contains all the pixels which change -# between images. - -print "reading", sys.argv[1] -base = Image.open(sys.argv[1]) - -minmini = base.size[0]-1 -maxmaxi = 0 -minminj = base.size[1]-1 -maxmaxj = 0 - -for top_name in sys.argv[2:]: - print "reading", top_name - top = Image.open(top_name) - - assert base.size == top.size - - mini = base.size[0]-1 - maxi = 0 - minj = base.size[1]-1 - maxj = 0 - - h, w = base.size - for j in range(w): - for i in range(h): - b = base.getpixel((i,j)) - t = top.getpixel((i,j)) - if b != t: - if i < mini: mini = i - if i > maxi: maxi = i - if j < minj: minj = j - if j > maxj: maxj = j - - minmini = min(minmini, mini) - maxmaxi = max(maxmaxi, maxi) - minminj = min(minminj, minj) - maxmaxj = max(maxmaxj, maxj) - -w = maxmaxi - minmini + 1 -h = maxmaxj - minminj + 1 - -# Now write out an image containing just that box, for each frame. - -for num, top_name in enumerate(sys.argv[1:]): - top = Image.open(top_name) - - out = Image.new("RGB", (w, h)) - for i in range(w): - for j in range(h): - t = top.getpixel((i+minmini, j+minminj)) - out.putpixel((i, j), t) - - fn = "icon_installing_overlay%02d.png" % (num+1,) - out.save(fn) - print "saved", fn - -# Write out the base icon, which is the first frame with that box -# blacked out (just to make the file smaller, since it's always -# displayed with one of the overlays on top of it). - -for i in range(w): - for j in range(h): - base.putpixel((i+minmini, j+minminj), (0, 0, 0)) -fn = "icon_installing.png" -base.save(fn) -print "saved", fn - -# The device_ui_init() function needs to tell the recovery UI the -# position of the overlay box. - -print -print "add this to your device_ui_init() function:" -print "-" * 40 -print " ui_parameters->install_overlay_offset_x = %d;" % (minmini,) -print " ui_parameters->install_overlay_offset_y = %d;" % (minminj,) -print "-" * 40 From 16f97c3961f08e5db7930d99e592f0a9f752df46 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 6 Mar 2014 16:16:05 -0800 Subject: [PATCH 050/110] remove pixelflinger from recovery Recovery now draws directly to the framebuffer by rolling its own graphics code, rather than depending on libpixelflinger. The recovery UI is modified slightly to eliminate operations that are slow with the software implementation: when the text display / menu is turned on, it now appears on a black background instead of a dimmed version of the recovery icon. There's probably substantial room for optimization of the graphics operations. Bug: 12131110 Change-Id: Iab6520e0a7aaec39e2ce39377c10aef82ae0c595 Conflicts: minui/resources.c --- Android.mk | 1 - minui/graphics.c | 509 +++++++++++++++++++++++++---------------- minui/minui.h | 18 +- minui/resources.c | 97 +++----- mtdutils/flash_image.c | 3 + screen_ui.cpp | 14 +- 6 files changed, 363 insertions(+), 279 deletions(-) diff --git a/Android.mk b/Android.mk index 1308066d..e51862c0 100644 --- a/Android.mk +++ b/Android.mk @@ -45,7 +45,6 @@ LOCAL_STATIC_LIBRARIES := \ libmincrypt \ libminadbd \ libminui \ - libpixelflinger_static \ libpng \ libfs_mgr \ libcutils \ diff --git a/minui/graphics.c b/minui/graphics.c index a2014dca..c2fc9ea9 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -28,37 +28,19 @@ #include #include -#include +#include #include "font_10x18.h" #include "minui.h" -#if defined(RECOVERY_BGRA) -#define PIXEL_FORMAT GGL_PIXEL_FORMAT_BGRA_8888 -#define PIXEL_SIZE 4 -#elif defined(RECOVERY_RGBX) -#define PIXEL_FORMAT GGL_PIXEL_FORMAT_RGBX_8888 -#define PIXEL_SIZE 4 -#else -#define PIXEL_FORMAT GGL_PIXEL_FORMAT_RGB_565 -#define PIXEL_SIZE 2 -#endif - -#define NUM_BUFFERS 2 - typedef struct { - GGLSurface* texture; - unsigned cwidth; - unsigned cheight; + GRSurface* texture; + int cwidth; + int cheight; } GRFont; -static GRFont *gr_font = 0; -static GGLContext *gr_context = 0; -static GGLSurface gr_font_texture; -static GGLSurface gr_framebuffer[NUM_BUFFERS]; -static GGLSurface gr_mem_surface; -static unsigned gr_active_fb = 0; -static unsigned double_buffering = 0; +static GRFont* gr_font = NULL; + static int overscan_percent = OVERSCAN_PERCENT; static int overscan_offset_x = 0; static int overscan_offset_y = 0; @@ -66,66 +48,81 @@ static int overscan_offset_y = 0; static int gr_fb_fd = -1; static int gr_vt_fd = -1; -static struct fb_var_screeninfo vi; -static struct fb_fix_screeninfo fi; +static GRSurface gr_framebuffer[2]; +static bool double_buffered; +static GRSurface* gr_draw = NULL; +static int displayed_buffer; -static int get_framebuffer(GGLSurface *fb) +static unsigned char gr_current_r = 255; +static unsigned char gr_current_g = 255; +static unsigned char gr_current_b = 255; +static unsigned char gr_current_a = 255; + +static struct fb_var_screeninfo vi; + +static bool outside(int x, int y) +{ + return x < 0 || x >= gr_draw->width || y < 0 || y >= gr_draw->height; +} + +static void set_displayed_framebuffer(unsigned n) +{ + if (n > 1 || !double_buffered) return; + + vi.yres_virtual = gr_framebuffer[0].height * 2; + vi.yoffset = n * gr_framebuffer[0].height; + vi.bits_per_pixel = gr_framebuffer[0].pixel_bytes * 8; + if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { + perror("active fb swap failed"); + } + displayed_buffer = n; +} + +static int get_framebuffer() { int fd; void *bits; + struct fb_fix_screeninfo fi; + fd = open("/dev/graphics/fb0", O_RDWR); if (fd < 0) { perror("cannot open fb0"); return -1; } + if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return -1; + } + if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { perror("failed to get fb0 info"); close(fd); return -1; } - vi.bits_per_pixel = PIXEL_SIZE * 8; - if (PIXEL_FORMAT == GGL_PIXEL_FORMAT_BGRA_8888) { - vi.red.offset = 8; - vi.red.length = 8; - vi.green.offset = 16; - vi.green.length = 8; - vi.blue.offset = 24; - vi.blue.length = 8; - vi.transp.offset = 0; - vi.transp.length = 8; - } else if (PIXEL_FORMAT == GGL_PIXEL_FORMAT_RGBX_8888) { - vi.red.offset = 24; - vi.red.length = 8; - vi.green.offset = 16; - vi.green.length = 8; - vi.blue.offset = 8; - vi.blue.length = 8; - vi.transp.offset = 0; - vi.transp.length = 8; - } else { /* RGB565*/ - vi.red.offset = 11; - vi.red.length = 5; - vi.green.offset = 5; - vi.green.length = 6; - vi.blue.offset = 0; - vi.blue.length = 5; - vi.transp.offset = 0; - vi.transp.length = 0; - } - if (ioctl(fd, FBIOPUT_VSCREENINFO, &vi) < 0) { - perror("failed to put fb0 info"); - close(fd); - return -1; - } + // We print this out for informational purposes only, but + // throughout we assume that the framebuffer device uses an RGBX + // pixel format. This is the case for every development device I + // have access to. For some of those devices (eg, hammerhead aka + // Nexus 5), FBIOGET_VSCREENINFO *reports* that it wants a + // different format (XBGR) but actually produces the correct + // results on the display when you write RGBX. + // + // If you have a device that actually *needs* another pixel format + // (ie, BGRX, or 565), patches welcome... - if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { - perror("failed to get fb0 info"); - close(fd); - return -1; - } + printf("fb0 reports (possibly inaccurate):\n" + " vi.bits_per_pixel = %d\n" + " vi.red.offset = %3d .length = %3d\n" + " vi.green.offset = %3d .length = %3d\n" + " vi.blue.offset = %3d .length = %3d\n", + vi.bits_per_pixel, + vi.red.offset, vi.red.length, + vi.green.offset, vi.green.length, + vi.blue.offset, vi.blue.length); bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (bits == MAP_FAILED) { @@ -137,79 +134,59 @@ static int get_framebuffer(GGLSurface *fb) overscan_offset_x = vi.xres * overscan_percent / 100; overscan_offset_y = vi.yres * overscan_percent / 100; - fb->version = sizeof(*fb); - fb->width = vi.xres; - fb->height = vi.yres; - fb->stride = fi.line_length/PIXEL_SIZE; - fb->data = bits; - fb->format = PIXEL_FORMAT; - memset(fb->data, 0, vi.yres * fi.line_length); - - fb++; + gr_framebuffer[0].width = vi.xres; + gr_framebuffer[0].height = vi.yres; + gr_framebuffer[0].row_bytes = fi.line_length; + gr_framebuffer[0].pixel_bytes = vi.bits_per_pixel / 8; + gr_framebuffer[0].data = bits; + memset(gr_framebuffer[0].data, 0, gr_framebuffer[0].height * gr_framebuffer[0].row_bytes); /* check if we can use double buffering */ - if (vi.yres * fi.line_length * 2 > fi.smem_len) - return fd; + if (vi.yres * fi.line_length * 2 <= fi.smem_len) { + double_buffered = true; - double_buffering = 1; + memcpy(gr_framebuffer+1, gr_framebuffer, sizeof(GRSurface)); + gr_framebuffer[1].data = gr_framebuffer[0].data + + gr_framebuffer[0].height * gr_framebuffer[0].row_bytes; - fb->version = sizeof(*fb); - fb->width = vi.xres; - fb->height = vi.yres; - fb->stride = fi.line_length/PIXEL_SIZE; - fb->data = (void*) (((char*) bits) + vi.yres * fi.line_length); - fb->format = PIXEL_FORMAT; - memset(fb->data, 0, vi.yres * fi.line_length); + gr_draw = gr_framebuffer+1; + + } else { + double_buffered = false; + + // Without double-buffering, we allocate RAM for a buffer to + // draw in, and then "flipping" the buffer consists of a + // memcpy from the buffer we allocated to the framebuffer. + + gr_draw = (GRSurface*) malloc(sizeof(GRSurface)); + memcpy(gr_draw, gr_framebuffer, sizeof(GRSurface)); + gr_draw->data = (unsigned char*) malloc(gr_draw->height * gr_draw->row_bytes); + if (!gr_draw->data) { + perror("failed to allocate in-memory surface"); + return -1; + } + } + + memset(gr_draw->data, 0, gr_draw->height * gr_draw->row_bytes); + gr_fb_fd = fd; + set_displayed_framebuffer(0); return fd; } -static void get_memory_surface(GGLSurface* ms) { - ms->version = sizeof(*ms); - ms->width = vi.xres; - ms->height = vi.yres; - ms->stride = fi.line_length/PIXEL_SIZE; - ms->data = malloc(fi.line_length * vi.yres); - ms->format = PIXEL_FORMAT; -} - -static void set_active_framebuffer(unsigned n) -{ - if (n > 1 || !double_buffering) return; - vi.yres_virtual = vi.yres * NUM_BUFFERS; - vi.yoffset = n * vi.yres; - vi.bits_per_pixel = PIXEL_SIZE * 8; - if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { - perror("active fb swap failed"); - } -} - void gr_flip(void) { - GGLContext *gl = gr_context; - - /* swap front and back buffers */ - if (double_buffering) - gr_active_fb = (gr_active_fb + 1) & 1; - - /* copy data from the in-memory surface to the buffer we're about - * to make active. */ - memcpy(gr_framebuffer[gr_active_fb].data, gr_mem_surface.data, - fi.line_length * vi.yres); - - /* inform the display driver */ - set_active_framebuffer(gr_active_fb); -} - -void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - GGLContext *gl = gr_context; - GGLint color[4]; - color[0] = ((r << 8) | r) + 1; - color[1] = ((g << 8) | g) + 1; - color[2] = ((b << 8) | b) + 1; - color[3] = ((a << 8) | a) + 1; - gl->color4xv(gl, color); + if (double_buffered) { + // Change gr_draw to point to the buffer currently displayed, + // then flip the driver so we're displaying the other buffer + // instead. + gr_draw = gr_framebuffer + displayed_buffer; + set_displayed_framebuffer(1-displayed_buffer); + } else { + // Copy from the in-memory surface to the framebuffer. + memcpy(gr_framebuffer[0].data, gr_draw->data, + gr_draw->height * gr_draw->row_bytes); + } } int gr_measure(const char *s) @@ -223,58 +200,118 @@ void gr_font_size(int *x, int *y) *y = gr_font->cheight; } -int gr_text(int x, int y, const char *s, int bold) +static void text_blend(unsigned char* src_p, int src_row_bytes, + unsigned char* dst_p, int dst_row_bytes, + int width, int height) +{ + int i, j; + for (j = 0; j < height; ++j) { + unsigned char* sx = src_p; + unsigned char* px = dst_p; + for (i = 0; i < width; ++i) { + unsigned char a = *sx++; + if (gr_current_a < 255) a = ((int)a * gr_current_a) / 255; + if (a == 255) { + *px++ = gr_current_r; + *px++ = gr_current_g; + *px++ = gr_current_b; + px++; + } else if (a > 0) { + *px = (*px * (255-a) + gr_current_r * a) / 255; + ++px; + *px = (*px * (255-a) + gr_current_g * a) / 255; + ++px; + *px = (*px * (255-a) + gr_current_b * a) / 255; + ++px; + ++px; + } else { + px += 4; + } + } + src_p += src_row_bytes; + dst_p += dst_row_bytes; + } +} + + +void gr_text(int x, int y, const char *s, int bold) { - GGLContext *gl = gr_context; GRFont *font = gr_font; unsigned off; - if (!font->texture) return x; + if (!font->texture) return; + if (gr_current_a == 0) return; bold = bold && (font->texture->height != font->cheight); x += overscan_offset_x; y += overscan_offset_y; - gl->bindTexture(gl, font->texture); - gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); - gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->enable(gl, GGL_TEXTURE_2D); - while((off = *s++)) { off -= 32; + if (outside(x, y) || outside(x+font->cwidth-1, y+font->cheight-1)) break; if (off < 96) { - gl->texCoord2i(gl, (off * font->cwidth) - x, - (bold ? font->cheight : 0) - y); - gl->recti(gl, x, y, x + font->cwidth, y + font->cheight); + + unsigned char* src_p = font->texture->data + (off * font->cwidth) + + (bold ? font->cheight * font->texture->row_bytes : 0); + unsigned char* dst_p = gr_draw->data + y*gr_draw->row_bytes + x*gr_draw->pixel_bytes; + + text_blend(src_p, font->texture->row_bytes, + dst_p, gr_draw->row_bytes, + font->cwidth, font->cheight); + } x += font->cwidth; } - - return x; } -void gr_texticon(int x, int y, gr_surface icon) { - if (gr_context == NULL || icon == NULL) { +void gr_texticon(int x, int y, GRSurface* icon) { + if (icon == NULL) return; + + if (icon->pixel_bytes != 1) { + printf("gr_texticon: source has wrong format\n"); return; } - GGLContext* gl = gr_context; x += overscan_offset_x; y += overscan_offset_y; - gl->bindTexture(gl, (GGLSurface*) icon); - gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); - gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->enable(gl, GGL_TEXTURE_2D); + if (outside(x, y) || outside(x+icon->width-1, y+icon->height-1)) return; - int w = gr_get_width(icon); - int h = gr_get_height(icon); + unsigned char* src_p = icon->data; + unsigned char* dst_p = gr_draw->data + y*gr_draw->row_bytes + x*gr_draw->pixel_bytes; - gl->texCoord2i(gl, -x, -y); - gl->recti(gl, x, y, x+gr_get_width(icon), y+gr_get_height(icon)); + text_blend(src_p, icon->row_bytes, + dst_p, gr_draw->row_bytes, + icon->width, icon->height); +} + +void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + gr_current_r = r; + gr_current_g = g; + gr_current_b = b; + gr_current_a = a; +} + +void gr_clear() +{ + if (gr_current_r == gr_current_g && + gr_current_r == gr_current_b) { + memset(gr_draw->data, gr_current_r, gr_draw->height * gr_draw->row_bytes); + } else { + int x, y; + unsigned char* px = gr_draw->data; + for (y = 0; y < gr_draw->height; ++y) { + for (x = 0; x < gr_draw->width; ++x) { + *px++ = gr_current_r; + *px++ = gr_current_g; + *px++ = gr_current_b; + px++; + } + px += gr_draw->row_bytes - (gr_draw->width * gr_draw->pixel_bytes); + } + } } void gr_fill(int x1, int y1, int x2, int y2) @@ -285,48 +322,82 @@ void gr_fill(int x1, int y1, int x2, int y2) x2 += overscan_offset_x; y2 += overscan_offset_y; - GGLContext *gl = gr_context; - gl->disable(gl, GGL_TEXTURE_2D); - gl->recti(gl, x1, y1, x2, y2); + if (outside(x1, y1) || outside(x2-1, y2-1)) return; + + unsigned char* p = gr_draw->data + y1 * gr_draw->row_bytes + x1 * gr_draw->pixel_bytes; + if (gr_current_a == 255) { + int x, y; + for (y = y1; y < y2; ++y) { + unsigned char* px = p; + for (x = x1; x < x2; ++x) { + *px++ = gr_current_r; + *px++ = gr_current_g; + *px++ = gr_current_b; + px++; + } + p += gr_draw->row_bytes; + } + } else if (gr_current_a > 0) { + int x, y; + for (y = y1; y < y2; ++y) { + unsigned char* px = p; + for (x = x1; x < x2; ++x) { + *px = (*px * (255-gr_current_a) + gr_current_r * gr_current_a) / 255; + ++px; + *px = (*px * (255-gr_current_a) + gr_current_g * gr_current_a) / 255; + ++px; + *px = (*px * (255-gr_current_a) + gr_current_b * gr_current_a) / 255; + ++px; + ++px; + } + p += gr_draw->row_bytes; + } + } } -void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) { - if (gr_context == NULL || source == NULL) { +void gr_blit(GRSurface* source, int sx, int sy, int w, int h, int dx, int dy) { + if (source == NULL) return; + + if (gr_draw->pixel_bytes != source->pixel_bytes) { + printf("gr_blit: source has wrong format\n"); return; } - GGLContext *gl = gr_context; dx += overscan_offset_x; dy += overscan_offset_y; - gl->bindTexture(gl, (GGLSurface*) source); - gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); - gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); - gl->enable(gl, GGL_TEXTURE_2D); - gl->texCoord2i(gl, sx - dx, sy - dy); - gl->recti(gl, dx, dy, dx + w, dy + h); + if (outside(dx, dy) || outside(dx+w-1, dy+h-1)) return; + + unsigned char* src_p = source->data + sy*source->row_bytes + sx*source->pixel_bytes; + unsigned char* dst_p = gr_draw->data + dy*gr_draw->row_bytes + dx*gr_draw->pixel_bytes; + + int i; + for (i = 0; i < h; ++i) { + memcpy(dst_p, src_p, w * source->pixel_bytes); + src_p += source->row_bytes; + dst_p += gr_draw->row_bytes; + } } -unsigned int gr_get_width(gr_surface surface) { +unsigned int gr_get_width(GRSurface* surface) { if (surface == NULL) { return 0; } - return ((GGLSurface*) surface)->width; + return surface->width; } -unsigned int gr_get_height(gr_surface surface) { +unsigned int gr_get_height(GRSurface* surface) { if (surface == NULL) { return 0; } - return ((GGLSurface*) surface)->height; + return surface->height; } static void gr_init_font(void) { gr_font = calloc(sizeof(*gr_font), 1); - int res = res_create_surface("font", (void**)&(gr_font->texture)); + int res = res_create_surface("font", &(gr_font->texture)); if (res == 0) { // The font image should be a 96x2 array of character images. The // columns are the printable ASCII characters 0x20 - 0x7f. The @@ -340,7 +411,8 @@ static void gr_init_font(void) gr_font->texture = malloc(sizeof(*gr_font->texture)); gr_font->texture->width = font.width; gr_font->texture->height = font.height; - gr_font->texture->stride = font.width; + gr_font->texture->row_bytes = font.width; + gr_font->texture->pixel_bytes = 1; unsigned char* bits = malloc(font.width * font.height); gr_font->texture->data = (void*) bits; @@ -355,17 +427,61 @@ static void gr_init_font(void) gr_font->cwidth = font.cwidth; gr_font->cheight = font.cheight; } - - // interpret the grayscale as alpha - gr_font->texture->format = GGL_PIXEL_FORMAT_A_8; } +#if 0 +// Exercises many of the gr_*() functions; useful for testing. +static void gr_test() { + GRSurface** images; + int frames; + int result = res_create_multi_surface("icon_installing", &frames, &images); + if (result < 0) { + printf("create surface %d\n", result); + gr_exit(); + return; + } + + time_t start = time(NULL); + int x; + for (x = 0; x <= 1200; ++x) { + if (x < 400) { + gr_color(0, 0, 0, 255); + } else { + gr_color(0, (x-400)%128, 0, 255); + } + gr_clear(); + + gr_color(255, 0, 0, 255); + gr_surface frame = images[x%frames]; + gr_blit(frame, 0, 0, frame->width, frame->height, x, 0); + + gr_color(255, 0, 0, 128); + gr_fill(400, 150, 600, 350); + + gr_color(255, 255, 255, 255); + gr_text(500, 225, "hello, world!", 0); + gr_color(255, 255, 0, 128); + gr_text(300+x, 275, "pack my box with five dozen liquor jugs", 1); + + gr_color(0, 0, 255, 128); + gr_fill(gr_draw->width - 200 - x, 300, gr_draw->width - x, 500); + + gr_flip(); + } + printf("getting end time\n"); + time_t end = time(NULL); + printf("got end time\n"); + printf("start %ld end %ld\n", (long)start, (long)end); + if (end > start) { + printf("%.2f fps\n", ((double)x) / (end-start)); + } +} +#endif + int gr_init(void) { - gglInit(&gr_context); - GGLContext *gl = gr_context; - gr_init_font(); + gr_vt_fd = open("/dev/tty0", O_RDWR | O_SYNC); if (gr_vt_fd < 0) { // This is non-fatal; post-Cupcake kernels don't have tty0. @@ -377,25 +493,16 @@ int gr_init(void) return -1; } - gr_fb_fd = get_framebuffer(gr_framebuffer); - if (gr_fb_fd < 0) { + if (get_framebuffer(&gr_framebuffer) < 0) { gr_exit(); return -1; } - get_memory_surface(&gr_mem_surface); - printf("framebuffer: fd %d (%d x %d)\n", - gr_fb_fd, gr_framebuffer[0].width, gr_framebuffer[0].height); + gr_fb_fd, gr_draw->width, gr_draw->height); - /* start with 0 as front (displayed) and 1 as back (drawing) */ - gr_active_fb = 0; - set_active_framebuffer(0); - gl->colorBuffer(gl, &gr_mem_surface); - - gl->activeTexture(gl, 0); - gl->enable(gl, GGL_BLEND); - gl->blendFunc(gl, GGL_SRC_ALPHA, GGL_ONE_MINUS_SRC_ALPHA); + gr_flip(); + gr_flip(); gr_fb_blank(true); gr_fb_blank(false); @@ -408,26 +515,24 @@ void gr_exit(void) close(gr_fb_fd); gr_fb_fd = -1; - free(gr_mem_surface.data); - ioctl(gr_vt_fd, KDSETMODE, (void*) KD_TEXT); close(gr_vt_fd); gr_vt_fd = -1; + + if (!double_buffered) { + if (gr_draw) free(gr_draw->data); + free(gr_draw); + } } int gr_fb_width(void) { - return gr_framebuffer[0].width - 2*overscan_offset_x; + return gr_draw->width - 2*overscan_offset_x; } int gr_fb_height(void) { - return gr_framebuffer[0].height - 2*overscan_offset_y; -} - -gr_pixel *gr_fb_data(void) -{ - return (unsigned short *) gr_mem_surface.data; + return gr_draw->height - 2*overscan_offset_y; } void gr_fb_blank(bool blank) diff --git a/minui/minui.h b/minui/minui.h index 5c0defc4..cb930cc4 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -23,22 +23,30 @@ extern "C" { #endif -typedef void* gr_surface; -typedef unsigned short gr_pixel; +typedef struct { + int width; + int height; + int row_bytes; + int pixel_bytes; + unsigned char* data; +} GRSurface; + +typedef GRSurface* gr_surface; int gr_init(void); void gr_exit(void); int gr_fb_width(void); int gr_fb_height(void); -gr_pixel *gr_fb_data(void); + void gr_flip(void); void gr_fb_blank(bool blank); +void gr_clear(); // clear entire surface to current color void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a); void gr_fill(int x1, int y1, int x2, int y2); -int gr_text(int x, int y, const char *s, int bold); - void gr_texticon(int x, int y, gr_surface icon); +void gr_text(int x, int y, const char *s, int bold); +void gr_texticon(int x, int y, gr_surface icon); int gr_measure(const char *s); void gr_font_size(int *x, int *y); diff --git a/minui/resources.c b/minui/resources.c index 5ad9b1d0..df813cb1 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -27,25 +27,26 @@ #include #include -#include - #include #include "minui.h" extern char* locale; -// libpng gives "undefined reference to 'pow'" errors, and I have no -// idea how to convince the build system to link with -lm. We don't -// need this functionality (it's used for gamma adjustment) so provide -// a dummy implementation to satisfy the linker. -double pow(double x, double y) { - return x * y; +#define SURFACE_DATA_ALIGNMENT 8 + +static gr_surface malloc_surface(size_t data_size) { + unsigned char* temp = malloc(sizeof(GRSurface) + data_size + SURFACE_DATA_ALIGNMENT); + if (temp == NULL) return NULL; + gr_surface surface = (gr_surface) temp; + surface->data = temp + sizeof(GRSurface) + + (SURFACE_DATA_ALIGNMENT - (sizeof(GRSurface) % SURFACE_DATA_ALIGNMENT)); + return surface; } int res_create_surface(const char* name, gr_surface* pSurface) { char resPath[256]; - GGLSurface* surface = NULL; + gr_surface surface = NULL; int result = 0; unsigned char header[8]; png_structp png_ptr = NULL; @@ -100,9 +101,8 @@ int res_create_surface(const char* name, gr_surface* pSurface) { int channels = png_get_channels(png_ptr, info_ptr); - if (!(bit_depth == 8 && + if (!(bit_depth <= 8 && ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || - (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || color_type == PNG_COLOR_TYPE_GRAY))))) { return -7; @@ -110,30 +110,20 @@ int res_create_surface(const char* name, gr_surface* pSurface) { } size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; - size_t pixelSize = stride * height; - surface = malloc(sizeof(GGLSurface) + pixelSize); + surface = malloc_surface(stride * height); if (surface == NULL) { result = -8; goto exit; } - unsigned char* pData = (unsigned char*) (surface + 1); - surface->version = sizeof(GGLSurface); + unsigned char* pData = surface->data; surface->width = width; surface->height = height; - surface->stride = width; /* Yes, pixels, not bytes */ - surface->data = pData; - surface->format = (channels == 3) ? GGL_PIXEL_FORMAT_RGBX_8888 : - ((color_type == PNG_COLOR_TYPE_PALETTE ? GGL_PIXEL_FORMAT_RGBA_8888 : GGL_PIXEL_FORMAT_L_8)); + surface->row_bytes = stride; + surface->pixel_bytes = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4); - int alpha = 0; - if (color_type == PNG_COLOR_TYPE_PALETTE) { - png_set_palette_to_rgb(png_ptr); - } - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { - png_set_tRNS_to_alpha(png_ptr); - alpha = 1; - } + int alpha = (channels == 4); + png_set_expand(png_ptr); if (color_type == PNG_COLOR_TYPE_GRAY) { alpha = 1; } @@ -188,7 +178,7 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac png_structp png_ptr = NULL; png_infop info_ptr = NULL; int i; - GGLSurface** surface = NULL; + gr_surface* surface = NULL; *pSurface = NULL; *frames = -1; @@ -240,9 +230,8 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac int channels = png_get_channels(png_ptr, info_ptr); - if (!(bit_depth == 8 && + if (!(bit_depth <= 8 && ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || - (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) || (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || color_type == PNG_COLOR_TYPE_GRAY))))) { return -7; @@ -271,38 +260,21 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; size_t pixelSize = stride * height / *frames; - surface = malloc(*frames * sizeof(GGLSurface*)); + surface = malloc(*frames * sizeof(gr_surface)); if (surface == NULL) { result = -8; goto exit; } for (i = 0; i < *frames; ++i) { - surface[i] = malloc(sizeof(GGLSurface) + pixelSize); - surface[i]->version = sizeof(GGLSurface); + surface[i] = malloc_surface(pixelSize); surface[i]->width = width; surface[i]->height = height / *frames; - surface[i]->stride = width; /* Yes, pixels, not bytes */ - surface[i]->data = (unsigned char*) (surface[i] + 1); - - if (channels == 3) { - surface[i]->format = GGL_PIXEL_FORMAT_RGBX_8888; - } else if (color_type == PNG_COLOR_TYPE_PALETTE) { - surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; - } else if (channels == 1) { - surface[i]->format = GGL_PIXEL_FORMAT_L_8; - } else { - surface[i]->format = GGL_PIXEL_FORMAT_RGBA_8888; - } + surface[i]->row_bytes = stride; + surface[i]->pixel_bytes = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4); } int alpha = (channels == 4); - if (color_type == PNG_COLOR_TYPE_PALETTE) { - png_set_palette_to_rgb(png_ptr); - } - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { - png_set_tRNS_to_alpha(png_ptr); - alpha = 1; - } + png_set_expand(png_ptr); if (color_type == PNG_COLOR_TYPE_GRAY) { alpha = 1; } @@ -376,7 +348,7 @@ static int matches_locale(const char* loc) { int res_create_localized_surface(const char* name, gr_surface* pSurface) { char resPath[256]; - GGLSurface* surface = NULL; + gr_surface surface = NULL; int result = 0; unsigned char header[8]; png_structp png_ptr = NULL; @@ -430,12 +402,14 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { &color_type, NULL, NULL, NULL); int channels = png_get_channels(png_ptr, info_ptr); - if (!(bit_depth == 8 && + if (!(bit_depth <= 8 && (channels == 1 && color_type == PNG_COLOR_TYPE_GRAY))) { return -7; goto exit; } + png_set_expand(png_ptr); + unsigned char* row = malloc(width); png_uint_32 y; for (y = 0; y < height; ++y) { @@ -448,19 +422,17 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { if (y+1+h >= height || matches_locale(loc)) { printf(" %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y); - surface = malloc(sizeof(GGLSurface)); + surface = malloc_surface(w*h); if (surface == NULL) { result = -8; goto exit; } - unsigned char* pData = malloc(w*h); + unsigned char* pData = surface->data; - surface->version = sizeof(GGLSurface); surface->width = w; surface->height = h; - surface->stride = w; /* Yes, pixels, not bytes */ - surface->data = pData; - surface->format = GGL_PIXEL_FORMAT_A_8; + surface->row_bytes = w; + surface->pixel_bytes = 1; int i; for (i = 0; i < h; ++i, ++y) { @@ -493,8 +465,5 @@ exit: } void res_free_surface(gr_surface surface) { - GGLSurface* pSurface = (GGLSurface*) surface; - if (pSurface) { - free(pSurface); - } + free(surface); } diff --git a/mtdutils/flash_image.c b/mtdutils/flash_image.c index a39d6000..5657dfc8 100644 --- a/mtdutils/flash_image.c +++ b/mtdutils/flash_image.c @@ -24,6 +24,9 @@ #include "cutils/log.h" #include "mtdutils.h" +#ifdef LOG_TAG +#undef LOG_TAG +#endif #define LOG_TAG "flash_image" #define HEADER_SIZE 2048 // size of header to compare for equality diff --git a/screen_ui.cpp b/screen_ui.cpp index 38b21f84..589c935d 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -84,7 +84,7 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) { pagesIdentical = false; gr_color(0, 0, 0, 255); - gr_fill(0, 0, gr_fb_width(), gr_fb_height()); + gr_clear(); if (icon) { gr_surface surface = backgroundIcon[icon]; @@ -187,12 +187,12 @@ void ScreenRecoveryUI::SetColor(UIElement e) { // Should only be called with updateMutex locked. void ScreenRecoveryUI::draw_screen_locked() { - draw_background_locked(currentIcon); - draw_progress_locked(); - - if (show_text) { - SetColor(TEXT_FILL); - gr_fill(0, 0, gr_fb_width(), gr_fb_height()); + if (!show_text) { + draw_background_locked(currentIcon); + draw_progress_locked(); + } else { + gr_color(0, 0, 0, 255); + gr_clear(); int y = 0; int i = 0; From 5290f2087a314506e2926edd9640cf1feb793866 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 11 Mar 2014 13:22:04 -0700 Subject: [PATCH 051/110] separate fbdev-specific code out from minui Isolate the code that interacts with fbdev, in preparation for adding a new backend. Change-Id: I19105e9da1ca6408cebc110f7e2bb5abfb481ee9 --- minui/Android.mk | 2 +- minui/graphics.c | 166 +++------------------------------- minui/graphics.h | 49 ++++++++++ minui/graphics_fbdev.c | 201 +++++++++++++++++++++++++++++++++++++++++ minui/minui.h | 2 + 5 files changed, 268 insertions(+), 152 deletions(-) create mode 100644 minui/graphics.h create mode 100644 minui/graphics_fbdev.c diff --git a/minui/Android.mk b/minui/Android.mk index 43e0ad33..5cc84ac7 100644 --- a/minui/Android.mk +++ b/minui/Android.mk @@ -1,7 +1,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_SRC_FILES := graphics.c events.c resources.c +LOCAL_SRC_FILES := graphics.c graphics_fbdev.c events.c resources.c LOCAL_C_INCLUDES +=\ external/libpng\ diff --git a/minui/graphics.c b/minui/graphics.c index c2fc9ea9..f8ffa894 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -32,6 +32,7 @@ #include "font_10x18.h" #include "minui.h" +#include "graphics.h" typedef struct { GRSurface* texture; @@ -40,155 +41,26 @@ typedef struct { } GRFont; static GRFont* gr_font = NULL; +static minui_backend* gr_backend = NULL; static int overscan_percent = OVERSCAN_PERCENT; static int overscan_offset_x = 0; static int overscan_offset_y = 0; -static int gr_fb_fd = -1; static int gr_vt_fd = -1; -static GRSurface gr_framebuffer[2]; -static bool double_buffered; -static GRSurface* gr_draw = NULL; -static int displayed_buffer; - static unsigned char gr_current_r = 255; static unsigned char gr_current_g = 255; static unsigned char gr_current_b = 255; static unsigned char gr_current_a = 255; -static struct fb_var_screeninfo vi; +static GRSurface* gr_draw = NULL; static bool outside(int x, int y) { return x < 0 || x >= gr_draw->width || y < 0 || y >= gr_draw->height; } -static void set_displayed_framebuffer(unsigned n) -{ - if (n > 1 || !double_buffered) return; - - vi.yres_virtual = gr_framebuffer[0].height * 2; - vi.yoffset = n * gr_framebuffer[0].height; - vi.bits_per_pixel = gr_framebuffer[0].pixel_bytes * 8; - if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { - perror("active fb swap failed"); - } - displayed_buffer = n; -} - -static int get_framebuffer() -{ - int fd; - void *bits; - - struct fb_fix_screeninfo fi; - - fd = open("/dev/graphics/fb0", O_RDWR); - if (fd < 0) { - perror("cannot open fb0"); - return -1; - } - - if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { - perror("failed to get fb0 info"); - close(fd); - return -1; - } - - if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { - perror("failed to get fb0 info"); - close(fd); - return -1; - } - - // We print this out for informational purposes only, but - // throughout we assume that the framebuffer device uses an RGBX - // pixel format. This is the case for every development device I - // have access to. For some of those devices (eg, hammerhead aka - // Nexus 5), FBIOGET_VSCREENINFO *reports* that it wants a - // different format (XBGR) but actually produces the correct - // results on the display when you write RGBX. - // - // If you have a device that actually *needs* another pixel format - // (ie, BGRX, or 565), patches welcome... - - printf("fb0 reports (possibly inaccurate):\n" - " vi.bits_per_pixel = %d\n" - " vi.red.offset = %3d .length = %3d\n" - " vi.green.offset = %3d .length = %3d\n" - " vi.blue.offset = %3d .length = %3d\n", - vi.bits_per_pixel, - vi.red.offset, vi.red.length, - vi.green.offset, vi.green.length, - vi.blue.offset, vi.blue.length); - - bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (bits == MAP_FAILED) { - perror("failed to mmap framebuffer"); - close(fd); - return -1; - } - - overscan_offset_x = vi.xres * overscan_percent / 100; - overscan_offset_y = vi.yres * overscan_percent / 100; - - gr_framebuffer[0].width = vi.xres; - gr_framebuffer[0].height = vi.yres; - gr_framebuffer[0].row_bytes = fi.line_length; - gr_framebuffer[0].pixel_bytes = vi.bits_per_pixel / 8; - gr_framebuffer[0].data = bits; - memset(gr_framebuffer[0].data, 0, gr_framebuffer[0].height * gr_framebuffer[0].row_bytes); - - /* check if we can use double buffering */ - if (vi.yres * fi.line_length * 2 <= fi.smem_len) { - double_buffered = true; - - memcpy(gr_framebuffer+1, gr_framebuffer, sizeof(GRSurface)); - gr_framebuffer[1].data = gr_framebuffer[0].data + - gr_framebuffer[0].height * gr_framebuffer[0].row_bytes; - - gr_draw = gr_framebuffer+1; - - } else { - double_buffered = false; - - // Without double-buffering, we allocate RAM for a buffer to - // draw in, and then "flipping" the buffer consists of a - // memcpy from the buffer we allocated to the framebuffer. - - gr_draw = (GRSurface*) malloc(sizeof(GRSurface)); - memcpy(gr_draw, gr_framebuffer, sizeof(GRSurface)); - gr_draw->data = (unsigned char*) malloc(gr_draw->height * gr_draw->row_bytes); - if (!gr_draw->data) { - perror("failed to allocate in-memory surface"); - return -1; - } - } - - memset(gr_draw->data, 0, gr_draw->height * gr_draw->row_bytes); - gr_fb_fd = fd; - set_displayed_framebuffer(0); - - return fd; -} - -void gr_flip(void) -{ - if (double_buffered) { - // Change gr_draw to point to the buffer currently displayed, - // then flip the driver so we're displaying the other buffer - // instead. - gr_draw = gr_framebuffer + displayed_buffer; - set_displayed_framebuffer(1-displayed_buffer); - } else { - // Copy from the in-memory surface to the framebuffer. - memcpy(gr_framebuffer[0].data, gr_draw->data, - gr_draw->height * gr_draw->row_bytes); - } -} - int gr_measure(const char *s) { return gr_font->cwidth * strlen(s); @@ -466,7 +338,7 @@ static void gr_test() { gr_color(0, 0, 255, 128); gr_fill(gr_draw->width - 200 - x, 300, gr_draw->width - x, 500); - gr_flip(); + gr_draw = gr_backend->flip(gr_backend); } printf("getting end time\n"); time_t end = time(NULL); @@ -478,6 +350,10 @@ static void gr_test() { } #endif +void gr_flip() { + gr_draw = gr_backend->flip(gr_backend); +} + int gr_init(void) { gr_init_font(); @@ -493,36 +369,28 @@ int gr_init(void) return -1; } - if (get_framebuffer(&gr_framebuffer) < 0) { - gr_exit(); + gr_backend = open_fbdev(); + gr_draw = gr_backend->init(gr_backend); + if (gr_draw == NULL) { return -1; } - printf("framebuffer: fd %d (%d x %d)\n", - gr_fb_fd, gr_draw->width, gr_draw->height); + overscan_offset_x = gr_draw->width * overscan_percent / 100; + overscan_offset_y = gr_draw->height * overscan_percent / 100; gr_flip(); gr_flip(); - gr_fb_blank(true); - gr_fb_blank(false); - return 0; } void gr_exit(void) { - close(gr_fb_fd); - gr_fb_fd = -1; + gr_backend->exit(gr_backend); ioctl(gr_vt_fd, KDSETMODE, (void*) KD_TEXT); close(gr_vt_fd); gr_vt_fd = -1; - - if (!double_buffered) { - if (gr_draw) free(gr_draw->data); - free(gr_draw); - } } int gr_fb_width(void) @@ -537,9 +405,5 @@ int gr_fb_height(void) void gr_fb_blank(bool blank) { - int ret; - - ret = ioctl(gr_fb_fd, FBIOBLANK, blank ? FB_BLANK_POWERDOWN : FB_BLANK_UNBLANK); - if (ret < 0) - perror("ioctl(): blank"); + gr_backend->blank(gr_backend, blank); } diff --git a/minui/graphics.h b/minui/graphics.h new file mode 100644 index 00000000..94b89a55 --- /dev/null +++ b/minui/graphics.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _GRAPHICS_H_ +#define _GRAPHICS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "minui.h" + +typedef struct minui_backend { + // Initializes the backend and returns a gr_surface to draw into. + gr_surface (*init)(struct minui_backend*); + + // Causes the current drawing surface (returned by the most recent + // call to flip() or init()) to be displayed, and returns a new + // drawing surface. + gr_surface (*flip)(struct minui_backend*); + + // Blank (or unblank) the screen. + void (*blank)(struct minui_backend*, bool); + + // Device cleanup when drawing is done. + void (*exit)(struct minui_backend*); +} minui_backend; + +minui_backend* open_fbdev(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/minui/graphics_fbdev.c b/minui/graphics_fbdev.c new file mode 100644 index 00000000..6a6330b2 --- /dev/null +++ b/minui/graphics_fbdev.c @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2014 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. + */ + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include "minui.h" +#include "graphics.h" + +static gr_surface fbdev_init(minui_backend*); +static gr_surface fbdev_flip(minui_backend*); +static void fbdev_blank(minui_backend*, bool); +static void fbdev_exit(minui_backend*); + +static GRSurface gr_framebuffer[2]; +static bool double_buffered; +static GRSurface* gr_draw = NULL; +static int displayed_buffer; + +static struct fb_var_screeninfo vi; +static int fb_fd = -1; + +static minui_backend my_backend = { + .init = fbdev_init, + .flip = fbdev_flip, + .blank = fbdev_blank, + .exit = fbdev_exit, +}; + +minui_backend* open_fbdev() { + return &my_backend; +} + +static void fbdev_blank(minui_backend* backend, bool blank) +{ + int ret; + + ret = ioctl(fb_fd, FBIOBLANK, blank ? FB_BLANK_POWERDOWN : FB_BLANK_UNBLANK); + if (ret < 0) + perror("ioctl(): blank"); +} + +static void set_displayed_framebuffer(unsigned n) +{ + if (n > 1 || !double_buffered) return; + + vi.yres_virtual = gr_framebuffer[0].height * 2; + vi.yoffset = n * gr_framebuffer[0].height; + vi.bits_per_pixel = gr_framebuffer[0].pixel_bytes * 8; + if (ioctl(fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { + perror("active fb swap failed"); + } + displayed_buffer = n; +} + +static gr_surface fbdev_init(minui_backend* backend) { + int fd; + void *bits; + + struct fb_fix_screeninfo fi; + + fd = open("/dev/graphics/fb0", O_RDWR); + if (fd < 0) { + perror("cannot open fb0"); + return NULL; + } + + if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return NULL; + } + + if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return NULL; + } + + // We print this out for informational purposes only, but + // throughout we assume that the framebuffer device uses an RGBX + // pixel format. This is the case for every development device I + // have access to. For some of those devices (eg, hammerhead aka + // Nexus 5), FBIOGET_VSCREENINFO *reports* that it wants a + // different format (XBGR) but actually produces the correct + // results on the display when you write RGBX. + // + // If you have a device that actually *needs* another pixel format + // (ie, BGRX, or 565), patches welcome... + + printf("fb0 reports (possibly inaccurate):\n" + " vi.bits_per_pixel = %d\n" + " vi.red.offset = %3d .length = %3d\n" + " vi.green.offset = %3d .length = %3d\n" + " vi.blue.offset = %3d .length = %3d\n", + vi.bits_per_pixel, + vi.red.offset, vi.red.length, + vi.green.offset, vi.green.length, + vi.blue.offset, vi.blue.length); + + bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (bits == MAP_FAILED) { + perror("failed to mmap framebuffer"); + close(fd); + return NULL; + } + + gr_framebuffer[0].width = vi.xres; + gr_framebuffer[0].height = vi.yres; + gr_framebuffer[0].row_bytes = fi.line_length; + gr_framebuffer[0].pixel_bytes = vi.bits_per_pixel / 8; + gr_framebuffer[0].data = bits; + memset(gr_framebuffer[0].data, 0, gr_framebuffer[0].height * gr_framebuffer[0].row_bytes); + + /* check if we can use double buffering */ + if (vi.yres * fi.line_length * 2 <= fi.smem_len) { + double_buffered = true; + + memcpy(gr_framebuffer+1, gr_framebuffer, sizeof(GRSurface)); + gr_framebuffer[1].data = gr_framebuffer[0].data + + gr_framebuffer[0].height * gr_framebuffer[0].row_bytes; + + gr_draw = gr_framebuffer+1; + + } else { + double_buffered = false; + + // Without double-buffering, we allocate RAM for a buffer to + // draw in, and then "flipping" the buffer consists of a + // memcpy from the buffer we allocated to the framebuffer. + + gr_draw = (GRSurface*) malloc(sizeof(GRSurface)); + memcpy(gr_draw, gr_framebuffer, sizeof(GRSurface)); + gr_draw->data = (unsigned char*) malloc(gr_draw->height * gr_draw->row_bytes); + if (!gr_draw->data) { + perror("failed to allocate in-memory surface"); + return NULL; + } + } + + memset(gr_draw->data, 0, gr_draw->height * gr_draw->row_bytes); + fb_fd = fd; + set_displayed_framebuffer(0); + + printf("framebuffer: %d (%d x %d)\n", fb_fd, gr_draw->width, gr_draw->height); + + fbdev_blank(backend, true); + fbdev_blank(backend, false); + + return gr_draw; +} + +static gr_surface fbdev_flip(minui_backend* backend) { + if (double_buffered) { + // Change gr_draw to point to the buffer currently displayed, + // then flip the driver so we're displaying the other buffer + // instead. + gr_draw = gr_framebuffer + displayed_buffer; + set_displayed_framebuffer(1-displayed_buffer); + } else { + // Copy from the in-memory surface to the framebuffer. + memcpy(gr_framebuffer[0].data, gr_draw->data, + gr_draw->height * gr_draw->row_bytes); + } + return gr_draw; +} + +static void fbdev_exit(minui_backend* backend) { + close(fb_fd); + fb_fd = -1; + + if (!double_buffered && gr_draw) { + free(gr_draw->data); + free(gr_draw); + } + gr_draw = NULL; +} diff --git a/minui/minui.h b/minui/minui.h index cb930cc4..328da1e6 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -17,6 +17,8 @@ #ifndef _MINUI_H_ #define _MINUI_H_ +#include + #include #ifdef __cplusplus From f3bb31c32fa879ccce358c15c93b7bd8582d1756 Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Fri, 14 Mar 2014 09:39:48 -0700 Subject: [PATCH 052/110] Recovery 64-bit compile issues Change-Id: I92d5abd1a628feab3b0246924fab7f97ba3b9d34 --- applypatch/applypatch.c | 12 ++++++------ applypatch/imgpatch.c | 7 ++++--- minadbd/sockets.c | 3 ++- minadbd/transport.c | 4 ++-- minadbd/usb_linux_client.c | 2 +- minui/graphics_fbdev.c | 7 ++++--- minui/resources.c | 2 +- recovery.cpp | 4 ++-- tools/ota/add-property-tag.c | 4 ++-- updater/install.c | 4 ++-- verifier.cpp | 14 +++++++------- 11 files changed, 33 insertions(+), 30 deletions(-) diff --git a/applypatch/applypatch.c b/applypatch/applypatch.c index 6b8da2a8..9d32ee90 100644 --- a/applypatch/applypatch.c +++ b/applypatch/applypatch.c @@ -247,7 +247,7 @@ static int LoadPartitionContents(const char* filename, FileContents* file) { break; } if (next != read) { - printf("short read (%d bytes of %d) for partition \"%s\"\n", + printf("short read (%zu bytes of %zu) for partition \"%s\"\n", read, next, partition); free(file->data); file->data = NULL; @@ -274,7 +274,7 @@ static int LoadPartitionContents(const char* filename, FileContents* file) { if (memcmp(sha_so_far, parsed_sha, SHA_DIGEST_SIZE) == 0) { // we have a match. stop reading the partition; we'll return // the data we've read so far. - printf("partition read matched size %d sha %s\n", + printf("partition read matched size %zu sha %s\n", size[index[i]], sha1sum[index[i]]); break; } @@ -402,7 +402,7 @@ int WriteToPartition(unsigned char* data, size_t len, size_t written = mtd_write_data(ctx, (char*)data, len); if (written != len) { - printf("only wrote %d of %d bytes to MTD %s\n", + printf("only wrote %zu of %zu bytes to MTD %s\n", written, len, partition); mtd_write_close(ctx); return -1; @@ -482,20 +482,20 @@ int WriteToPartition(unsigned char* data, size_t len, if (errno == EINTR) { read_count = 0; } else { - printf("verify read error %s at %d: %s\n", + printf("verify read error %s at %zu: %s\n", partition, p, strerror(errno)); return -1; } } if ((size_t)read_count < to_read) { - printf("short verify read %s at %d: %d %d %s\n", + printf("short verify read %s at %zu: %zd %zu %s\n", partition, p, read_count, to_read, strerror(errno)); } so_far += read_count; } if (memcmp(buffer, data+p, to_read)) { - printf("verification failed starting at %d\n", p); + printf("verification failed starting at %zu\n", p); start = p; break; } diff --git a/applypatch/imgpatch.c b/applypatch/imgpatch.c index 3a1df387..af4d0728 100644 --- a/applypatch/imgpatch.c +++ b/applypatch/imgpatch.c @@ -18,6 +18,7 @@ // format. #include +#include #include #include #include @@ -35,7 +36,7 @@ * file, and update the SHA context with the output data as well. * Return 0 on success. */ -int ApplyImagePatch(const unsigned char* old_data, ssize_t old_size, +int ApplyImagePatch(const unsigned char* old_data, ssize_t old_size __unused, const Value* patch, SinkFn sink, void* token, SHA_CTX* ctx, const Value* bonus_data) { @@ -132,7 +133,7 @@ int ApplyImagePatch(const unsigned char* old_data, ssize_t old_size, unsigned char* expanded_source = malloc(expanded_len); if (expanded_source == NULL) { - printf("failed to allocate %d bytes for expanded_source\n", + printf("failed to allocate %zu bytes for expanded_source\n", expanded_len); return -1; } @@ -163,7 +164,7 @@ int ApplyImagePatch(const unsigned char* old_data, ssize_t old_size, // We should have filled the output buffer exactly, except // for the bonus_size. if (strm.avail_out != bonus_size) { - printf("source inflation short by %d bytes\n", strm.avail_out-bonus_size); + printf("source inflation short by %zu bytes\n", strm.avail_out-bonus_size); return -1; } inflateEnd(&strm); diff --git a/minadbd/sockets.c b/minadbd/sockets.c index 2dd64615..817410d1 100644 --- a/minadbd/sockets.c +++ b/minadbd/sockets.c @@ -319,7 +319,8 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s) while(avail > 0) { r = adb_read(fd, x, avail); - D("LS(%d): post adb_read(fd=%d,...) r=%d (errno=%d) avail=%d\n", s->id, s->fd, r, r<0?errno:0, avail); + D("LS(%d): post adb_read(fd=%d,...) r=%d (errno=%d) avail=%zu\n", + s->id, s->fd, r, r<0?errno:0, avail); if(r > 0) { avail -= r; x += r; diff --git a/minadbd/transport.c b/minadbd/transport.c index 4c0c97f7..92679f51 100644 --- a/minadbd/transport.c +++ b/minadbd/transport.c @@ -713,7 +713,7 @@ int readx(int fd, void *ptr, size_t len) char *p = ptr; int r; #if ADB_TRACE - int len0 = len; + size_t len0 = len; #endif D("readx: fd=%d wanted=%d\n", fd, (int)len); while(len > 0) { @@ -734,7 +734,7 @@ int readx(int fd, void *ptr, size_t len) } #if ADB_TRACE - D("readx: fd=%d wanted=%d got=%d\n", fd, len0, len0 - len); + D("readx: fd=%d wanted=%zu got=%zu\n", fd, len0, len0 - len); dump_hex( ptr, len0 ); #endif return 0; diff --git a/minadbd/usb_linux_client.c b/minadbd/usb_linux_client.c index c135d639..29bab155 100644 --- a/minadbd/usb_linux_client.c +++ b/minadbd/usb_linux_client.c @@ -388,7 +388,7 @@ static int bulk_read(int bulk_out, char *buf, size_t length) ret = adb_read(bulk_out, buf + count, length - count); if (ret < 0) { if (errno != EINTR) { - D("[ bulk_read failed fd=%d length=%d count=%d ]\n", + D("[ bulk_read failed fd=%d length=%zu count=%zu ]\n", bulk_out, length, count); return ret; } diff --git a/minui/graphics_fbdev.c b/minui/graphics_fbdev.c index 6a6330b2..bb91975a 100644 --- a/minui/graphics_fbdev.c +++ b/minui/graphics_fbdev.c @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -55,7 +56,7 @@ minui_backend* open_fbdev() { return &my_backend; } -static void fbdev_blank(minui_backend* backend, bool blank) +static void fbdev_blank(minui_backend* backend __unused, bool blank) { int ret; @@ -174,7 +175,7 @@ static gr_surface fbdev_init(minui_backend* backend) { return gr_draw; } -static gr_surface fbdev_flip(minui_backend* backend) { +static gr_surface fbdev_flip(minui_backend* backend __unused) { if (double_buffered) { // Change gr_draw to point to the buffer currently displayed, // then flip the driver so we're displaying the other buffer @@ -189,7 +190,7 @@ static gr_surface fbdev_flip(minui_backend* backend) { return gr_draw; } -static void fbdev_exit(minui_backend* backend) { +static void fbdev_exit(minui_backend* backend __unused) { close(fb_fd); fb_fd = -1; diff --git a/minui/resources.c b/minui/resources.c index df813cb1..a6528b35 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -95,7 +95,7 @@ int res_create_surface(const char* name, gr_surface* pSurface) { png_read_info(png_ptr, info_ptr); int color_type, bit_depth; - size_t width, height; + png_uint_32 width, height; png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, NULL, NULL, NULL); diff --git a/recovery.cpp b/recovery.cpp index d803cadf..448f315b 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -174,11 +174,11 @@ get_args(int *argc, char ***argv) { get_bootloader_message(&boot); // this may fail, leaving a zeroed structure if (boot.command[0] != 0 && boot.command[0] != 255) { - LOGI("Boot command: %.*s\n", sizeof(boot.command), boot.command); + LOGI("Boot command: %.*s\n", (int)sizeof(boot.command), boot.command); } if (boot.status[0] != 0 && boot.status[0] != 255) { - LOGI("Boot status: %.*s\n", sizeof(boot.status), boot.status); + LOGI("Boot status: %.*s\n", (int)sizeof(boot.status), boot.status); } // --- if arguments weren't supplied, look in the bootloader control block diff --git a/tools/ota/add-property-tag.c b/tools/ota/add-property-tag.c index 5277edd9..aab30b2d 100644 --- a/tools/ota/add-property-tag.c +++ b/tools/ota/add-property-tag.c @@ -57,9 +57,9 @@ void write_tagged(FILE *out, const char *line, const char *tag, int number) { const char *end = line + strlen(line); while (end > line && isspace(end[-1])) --end; if (number > 0) { - fprintf(out, "%.*s%s%d%s", end - line, line, tag, number, end); + fprintf(out, "%.*s%s%d%s", (int)(end - line), line, tag, number, end); } else { - fprintf(out, "%.*s%s%s", end - line, line, tag, end); + fprintf(out, "%.*s%s%s", (int)(end - line), line, tag, end); } } diff --git a/updater/install.c b/updater/install.c index 6a8a6b3f..1455557c 100644 --- a/updater/install.c +++ b/updater/install.c @@ -864,7 +864,7 @@ Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) { buffer = malloc(st.st_size+1); if (buffer == NULL) { - ErrorAbort(state, "%s: failed to alloc %lld bytes", name, st.st_size+1); + ErrorAbort(state, "%s: failed to alloc %lld bytes", name, (long long)st.st_size+1); goto done; } @@ -877,7 +877,7 @@ Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) { if (fread(buffer, 1, st.st_size, f) != st.st_size) { ErrorAbort(state, "%s: failed to read %lld bytes from %s", - name, st.st_size+1, filename); + name, (long long)st.st_size+1, filename); fclose(f); goto done; } diff --git a/verifier.cpp b/verifier.cpp index 0930fbd1..019552b9 100644 --- a/verifier.cpp +++ b/verifier.cpp @@ -152,7 +152,7 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys size_t comment_size = footer[4] + (footer[5] << 8); size_t signature_start = footer[0] + (footer[1] << 8); - LOGI("comment is %d bytes; signature %d bytes from end\n", + LOGI("comment is %zu bytes; signature %zu bytes from end\n", comment_size, signature_start); if (signature_start <= FOOTER_SIZE) { @@ -292,24 +292,24 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys if (pKeys[i].key_type == Certificate::RSA) { if (sig_der_length < RSANUMBYTES) { // "signature" block isn't big enough to contain an RSA block. - LOGI("signature is too short for RSA key %d\n", i); + LOGI("signature is too short for RSA key %zu\n", i); continue; } if (!RSA_verify(pKeys[i].rsa, sig_der, RSANUMBYTES, hash, pKeys[i].hash_len)) { - LOGI("failed to verify against RSA key %d\n", i); + LOGI("failed to verify against RSA key %zu\n", i); continue; } - LOGI("whole-file signature verified against RSA key %d\n", i); + LOGI("whole-file signature verified against RSA key %zu\n", i); free(sig_der); return VERIFY_SUCCESS; } else if (pKeys[i].key_type == Certificate::EC && pKeys[i].hash_len == SHA256_DIGEST_SIZE) { p256_int r, s; if (!dsa_sig_unpack(sig_der, sig_der_length, &r, &s)) { - LOGI("Not a DSA signature block for EC key %d\n", i); + LOGI("Not a DSA signature block for EC key %zu\n", i); continue; } @@ -317,11 +317,11 @@ int verify_file(const char* path, const Certificate* pKeys, unsigned int numKeys p256_from_bin(hash, &p256_hash); if (!p256_ecdsa_verify(&(pKeys[i].ec->x), &(pKeys[i].ec->y), &p256_hash, &r, &s)) { - LOGI("failed to verify against EC key %d\n", i); + LOGI("failed to verify against EC key %zu\n", i); continue; } - LOGI("whole-file signature verified against EC key %d\n", i); + LOGI("whole-file signature verified against EC key %zu\n", i); free(sig_der); return VERIFY_SUCCESS; } else { From a418aa7dd5e94cbf1ab2a6fa1c63f60e5e087d42 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 17 Mar 2014 12:10:02 -0700 Subject: [PATCH 053/110] refactor image resource loading code in minui Reduce the number of copies of libpng boilerplate. Rename res_create_* functions to be more clear. Make explicit the use of the framebuffer pixel format for images, and handle more combinations of input and output (eg, loading a grayscale image for display rather than use as a text alpha channel). Change-Id: I3d41c800a8f4c22b2f0167967ce6ee4d6b2b8846 --- minui/graphics.c | 2 +- minui/minui.h | 38 +++- minui/resources.c | 456 ++++++++++++++++++++++------------------------ recovery.cpp | 2 +- screen_ui.cpp | 14 +- screen_ui.h | 1 + 6 files changed, 261 insertions(+), 252 deletions(-) diff --git a/minui/graphics.c b/minui/graphics.c index f8ffa894..32b3361e 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -269,7 +269,7 @@ static void gr_init_font(void) { gr_font = calloc(sizeof(*gr_font), 1); - int res = res_create_surface("font", &(gr_font->texture)); + int res = res_create_alpha_surface("font", &(gr_font->texture)); if (res == 0) { // The font image should be a 96x2 array of character images. The // columns are the printable ASCII characters 0x20 - 0x7f. The diff --git a/minui/minui.h b/minui/minui.h index 328da1e6..d8d53fa2 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -80,10 +80,40 @@ void ev_dispatch(void); // Resources -// Returns 0 if no error, else negative. -int res_create_surface(const char* name, gr_surface* pSurface); -int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurface); -int res_create_localized_surface(const char* name, gr_surface* pSurface); +// res_create_*_surface() functions return 0 if no error, else +// negative. +// +// A "display" surface is one that is intended to be drawn to the +// screen with gr_blit(). An "alpha" surface is a grayscale image +// interpreted as an alpha mask used to render text in the current +// color (with gr_text() or gr_texticon()). +// +// All these functions load PNG images from "/res/images/${name}.png". + +// Load a single display surface from a PNG image. +int res_create_display_surface(const char* name, gr_surface* pSurface); + +// Load an array of display surfaces from a single PNG image. The PNG +// should have a 'Frames' text chunk whose value is the number of +// frames this image represents. The pixel data itself is interlaced +// by row. +int res_create_multi_display_surface(const char* name, + int* frames, gr_surface** pSurface); + +// Load a single alpha surface from a grayscale PNG image. +int res_create_alpha_surface(const char* name, gr_surface* pSurface); + +// Load part of a grayscale PNG image that is the first match for the +// given locale. The image is expected to be a composite of multiple +// translations of the same text, with special added rows that encode +// the subimages' size and intended locale in the pixel data. See +// development/tools/recovery_l10n for an app that will generate these +// specialized images from Android resources. +int res_create_localized_alpha_surface(const char* name, const char* locale, + gr_surface* pSurface); + +// Free a surface allocated by any of the res_create_*_surface() +// functions. void res_free_surface(gr_surface surface); #ifdef __cplusplus diff --git a/minui/resources.c b/minui/resources.c index a6528b35..69fd14be 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -44,15 +44,11 @@ static gr_surface malloc_surface(size_t data_size) { return surface; } -int res_create_surface(const char* name, gr_surface* pSurface) { +static int open_png(const char* name, png_structp* png_ptr, png_infop* info_ptr, + png_uint_32* width, png_uint_32* height, png_byte* channels) { char resPath[256]; - gr_surface surface = NULL; - int result = 0; unsigned char header[8]; - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - - *pSurface = NULL; + int result = 0; snprintf(resPath, sizeof(resPath)-1, "/res/images/%s.png", name); resPath[sizeof(resPath)-1] = '\0'; @@ -73,170 +69,182 @@ int res_create_surface(const char* name, gr_surface* pSurface) { goto exit; } - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { + *png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!*png_ptr) { result = -4; goto exit; } - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { + *info_ptr = png_create_info_struct(*png_ptr); + if (!*info_ptr) { result = -5; goto exit; } - if (setjmp(png_jmpbuf(png_ptr))) { + if (setjmp(png_jmpbuf(*png_ptr))) { result = -6; goto exit; } - png_init_io(png_ptr, fp); - png_set_sig_bytes(png_ptr, sizeof(header)); - png_read_info(png_ptr, info_ptr); + png_init_io(*png_ptr, fp); + png_set_sig_bytes(*png_ptr, sizeof(header)); + png_read_info(*png_ptr, *info_ptr); int color_type, bit_depth; - png_uint_32 width, height; - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, + png_get_IHDR(*png_ptr, *info_ptr, width, height, &bit_depth, &color_type, NULL, NULL, NULL); - int channels = png_get_channels(png_ptr, info_ptr); + *channels = png_get_channels(*png_ptr, *info_ptr); - if (!(bit_depth <= 8 && - ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || - (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || - color_type == PNG_COLOR_TYPE_GRAY))))) { - return -7; + if (bit_depth == 8 && *channels == 3 && color_type == PNG_COLOR_TYPE_RGB) { + // 8-bit RGB images: great, nothing to do. + } else if (bit_depth <= 8 && *channels == 1 && color_type == PNG_COLOR_TYPE_GRAY) { + // 1-, 2-, 4-, or 8-bit gray images: expand to 8-bit gray. + png_set_expand_gray_1_2_4_to_8(*png_ptr); + } else if (bit_depth == 8 && *channels == 1 && color_type == PNG_COLOR_TYPE_PALETTE) { + // paletted images: expand to 8-bit RGB. Note that we DON'T + // currently expand the tRNS chunk (if any) to an alpha + // channel, because minui doesn't support alpha channels in + // general. + png_set_palette_to_rgb(*png_ptr); + *channels = 3; + } else { + fprintf(stderr, "minui doesn't support PNG depth %d channels %d color_type %d\n", + bit_depth, (int) channels, color_type); + result = -7; goto exit; } - size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; + return result; - surface = malloc_surface(stride * height); + exit: + if (result < 0) { + png_destroy_read_struct(png_ptr, info_ptr, NULL); + } + if (fp != NULL) { + fclose(fp); + } + + return result; +} + +// "display" surfaces are transformed into the framebuffer's required +// pixel format (currently only RGBX is supported) at load time, so +// gr_blit() can be nothing more than a memcpy() for each row. The +// next two functions are the only ones that know anything about the +// framebuffer pixel format; they need to be modified if the +// framebuffer format changes (but nothing else should). + +// Allocate and return a gr_surface sufficient for storing an image of +// the indicated size in the framebuffer pixel format. +static gr_surface init_display_surface(png_uint_32 width, png_uint_32 height) { + gr_surface surface; + + surface = malloc_surface(width * height * 4); + if (surface == NULL) return NULL; + + surface->width = width; + surface->height = height; + surface->row_bytes = width * 4; + surface->pixel_bytes = 4; + + return surface; +} + +// Copy 'input_row' to 'output_row', transforming it to the +// framebuffer pixel format. The input format depends on the value of +// 'channels': +// +// 1 - input is 8-bit grayscale +// 3 - input is 24-bit RGB +// 4 - input is 32-bit RGBA/RGBX +// +// 'width' is the number of pixels in the row. +static void transform_rgb_to_draw(unsigned char* input_row, + unsigned char* output_row, + int channels, int width) { + int x; + unsigned char* ip = input_row; + unsigned char* op = output_row; + + switch (channels) { + case 1: + // expand gray level to RGBX + for (x = 0; x < width; ++x) { + *op++ = *ip; + *op++ = *ip; + *op++ = *ip; + *op++ = 0xff; + ip++; + } + break; + + case 3: + // expand RGBA to RGBX + for (x = 0; x < width; ++x) { + *op++ = *ip++; + *op++ = *ip++; + *op++ = *ip++; + *op++ = 0xff; + } + break; + + case 4: + // copy RGBA to RGBX + memcpy(output_row, input_row, width*4); + break; + } +} + +int res_create_display_surface(const char* name, gr_surface* pSurface) { + gr_surface surface = NULL; + int result = 0; + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; + png_uint_32 width, height; + png_byte channels; + + *pSurface = NULL; + + result = open_png(name, &png_ptr, &info_ptr, &width, &height, &channels); + if (result < 0) return result; + + surface = init_display_surface(width, height); if (surface == NULL) { result = -8; goto exit; } - unsigned char* pData = surface->data; - surface->width = width; - surface->height = height; - surface->row_bytes = stride; - surface->pixel_bytes = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4); - - int alpha = (channels == 4); - png_set_expand(png_ptr); - if (color_type == PNG_COLOR_TYPE_GRAY) { - alpha = 1; - } + unsigned char* p_row = malloc(width * 4); unsigned int y; - if (channels == 3 || (channels == 1 && !alpha)) { - for (y = 0; y < height; ++y) { - unsigned char* pRow = pData + y * stride; - png_read_row(png_ptr, pRow, NULL); - - int x; - for(x = width - 1; x >= 0; x--) { - int sx = x * 3; - int dx = x * 4; - unsigned char r = pRow[sx]; - unsigned char g = pRow[sx + 1]; - unsigned char b = pRow[sx + 2]; - unsigned char a = 0xff; - pRow[dx ] = r; // r - pRow[dx + 1] = g; // g - pRow[dx + 2] = b; // b - pRow[dx + 3] = a; - } - } - } else { - for (y = 0; y < height; ++y) { - unsigned char* pRow = pData + y * stride; - png_read_row(png_ptr, pRow, NULL); - } + for (y = 0; y < height; ++y) { + png_read_row(png_ptr, p_row, NULL); + transform_rgb_to_draw(p_row, surface->data + y * surface->row_bytes, channels, width); } + free(p_row); - *pSurface = (gr_surface) surface; + *pSurface = surface; -exit: + exit: png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - if (fp != NULL) { - fclose(fp); - } - if (result < 0) { - if (surface) { - free(surface); - } - } + if (result < 0 && surface != NULL) free(surface); return result; } -int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurface) { - char resPath[256]; +int res_create_multi_display_surface(const char* name, int* frames, gr_surface** pSurface) { + gr_surface* surface = NULL; int result = 0; - unsigned char header[8]; png_structp png_ptr = NULL; png_infop info_ptr = NULL; + png_uint_32 width, height; + png_byte channels; int i; - gr_surface* surface = NULL; *pSurface = NULL; *frames = -1; - snprintf(resPath, sizeof(resPath)-1, "/res/images/%s.png", name); - resPath[sizeof(resPath)-1] = '\0'; - FILE* fp = fopen(resPath, "rb"); - if (fp == NULL) { - result = -1; - goto exit; - } - - size_t bytesRead = fread(header, 1, sizeof(header), fp); - if (bytesRead != sizeof(header)) { - result = -2; - goto exit; - } - - if (png_sig_cmp(header, 0, sizeof(header))) { - result = -3; - goto exit; - } - - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { - result = -4; - goto exit; - } - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - result = -5; - goto exit; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - result = -6; - goto exit; - } - - png_init_io(png_ptr, fp); - png_set_sig_bytes(png_ptr, sizeof(header)); - png_read_info(png_ptr, info_ptr); - - int color_type, bit_depth; - png_uint_32 width, height; - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, - &color_type, NULL, NULL, NULL); - - int channels = png_get_channels(png_ptr, info_ptr); - - if (!(bit_depth <= 8 && - ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) || - (channels == 1 && (color_type == PNG_COLOR_TYPE_PALETTE || - color_type == PNG_COLOR_TYPE_GRAY))))) { - return -7; - goto exit; - } + result = open_png(name, &png_ptr, &info_ptr, &width, &height, &channels); + if (result < 0) return result; *frames = 1; png_textp text; @@ -257,67 +265,35 @@ int res_create_multi_surface(const char* name, int* frames, gr_surface** pSurfac goto exit; } - size_t stride = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4) * width; - size_t pixelSize = stride * height / *frames; - surface = malloc(*frames * sizeof(gr_surface)); if (surface == NULL) { result = -8; goto exit; } for (i = 0; i < *frames; ++i) { - surface[i] = malloc_surface(pixelSize); - surface[i]->width = width; - surface[i]->height = height / *frames; - surface[i]->row_bytes = stride; - surface[i]->pixel_bytes = (color_type == PNG_COLOR_TYPE_GRAY ? 1 : 4); - } - - int alpha = (channels == 4); - png_set_expand(png_ptr); - if (color_type == PNG_COLOR_TYPE_GRAY) { - alpha = 1; - } - - png_uint_32 y; - if (channels == 3 || (channels == 1 && !alpha)) { - for (y = 0; y < height; ++y) { - int fy = y / *frames; - int fr = y % *frames; - unsigned char* pRow = surface[fr]->data + fy * stride; - png_read_row(png_ptr, pRow, NULL); - - int x; - for(x = width - 1; x >= 0; x--) { - int sx = x * 3; - int dx = x * 4; - unsigned char r = pRow[sx]; - unsigned char g = pRow[sx + 1]; - unsigned char b = pRow[sx + 2]; - unsigned char a = 0xff; - pRow[dx ] = r; // r - pRow[dx + 1] = g; // g - pRow[dx + 2] = b; // b - pRow[dx + 3] = a; - } - } - } else { - for (y = 0; y < height; ++y) { - int fy = y / *frames; - int fr = y % *frames; - unsigned char* pRow = surface[fr]->data + fy * stride; - png_read_row(png_ptr, pRow, NULL); + surface[i] = init_display_surface(width, height / *frames); + if (surface[i] == NULL) { + result = -8; + goto exit; } } + unsigned char* p_row = malloc(width * 4); + unsigned int y; + for (y = 0; y < height; ++y) { + png_read_row(png_ptr, p_row, NULL); + int frame = y % *frames; + unsigned char* out_row = surface[frame]->data + + (y / *frames) * surface[frame]->row_bytes; + transform_rgb_to_draw(p_row, out_row, channels, width); + } + free(p_row); + *pSurface = (gr_surface*) surface; exit: png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - if (fp != NULL) { - fclose(fp); - } if (result < 0) { if (surface) { for (i = 0; i < *frames; ++i) { @@ -329,7 +305,50 @@ exit: return result; } -static int matches_locale(const char* loc) { +int res_create_alpha_surface(const char* name, gr_surface* pSurface) { + gr_surface surface = NULL; + int result = 0; + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; + png_uint_32 width, height; + png_byte channels; + + *pSurface = NULL; + + result = open_png(name, &png_ptr, &info_ptr, &width, &height, &channels); + if (result < 0) return result; + + if (channels != 1) { + result = -7; + goto exit; + } + + surface = malloc_surface(width * height); + if (surface == NULL) { + result = -8; + goto exit; + } + surface->width = width; + surface->height = height; + surface->row_bytes = width; + surface->pixel_bytes = 1; + + unsigned char* p_row; + unsigned int y; + for (y = 0; y < height; ++y) { + p_row = surface->data + y * surface->row_bytes; + png_read_row(png_ptr, p_row, NULL); + } + + *pSurface = surface; + + exit: + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + if (result < 0 && surface != NULL) free(surface); + return result; +} + +static int matches_locale(const char* loc, const char* locale) { if (locale == NULL) return 0; if (strcmp(loc, locale) == 0) return 1; @@ -346,70 +365,35 @@ static int matches_locale(const char* loc) { return (strncmp(locale, loc, i) == 0 && locale[i] == '_'); } -int res_create_localized_surface(const char* name, gr_surface* pSurface) { - char resPath[256]; +int res_create_localized_alpha_surface(const char* name, + const char* locale, + gr_surface* pSurface) { gr_surface surface = NULL; int result = 0; - unsigned char header[8]; png_structp png_ptr = NULL; png_infop info_ptr = NULL; + png_uint_32 width, height; + png_byte channels; *pSurface = NULL; - snprintf(resPath, sizeof(resPath)-1, "/res/images/%s.png", name); - resPath[sizeof(resPath)-1] = '\0'; - FILE* fp = fopen(resPath, "rb"); - if (fp == NULL) { - result = -1; + if (locale == NULL) { + surface = malloc_surface(0); + surface->width = 0; + surface->height = 0; + surface->row_bytes = 0; + surface->pixel_bytes = 1; goto exit; } - size_t bytesRead = fread(header, 1, sizeof(header), fp); - if (bytesRead != sizeof(header)) { - result = -2; + result = open_png(name, &png_ptr, &info_ptr, &width, &height, &channels); + if (result < 0) return result; + + if (channels != 1) { + result = -7; goto exit; } - if (png_sig_cmp(header, 0, sizeof(header))) { - result = -3; - goto exit; - } - - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { - result = -4; - goto exit; - } - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - result = -5; - goto exit; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - result = -6; - goto exit; - } - - png_init_io(png_ptr, fp); - png_set_sig_bytes(png_ptr, sizeof(header)); - png_read_info(png_ptr, info_ptr); - - int color_type, bit_depth; - png_uint_32 width, height; - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, - &color_type, NULL, NULL, NULL); - int channels = png_get_channels(png_ptr, info_ptr); - - if (!(bit_depth <= 8 && - (channels == 1 && color_type == PNG_COLOR_TYPE_GRAY))) { - return -7; - goto exit; - } - - png_set_expand(png_ptr); - unsigned char* row = malloc(width); png_uint_32 y; for (y = 0; y < height; ++y) { @@ -419,7 +403,7 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { int len = row[4]; char* loc = (char*)row+5; - if (y+1+h >= height || matches_locale(loc)) { + if (y+1+h >= height || matches_locale(loc, locale)) { printf(" %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y); surface = malloc_surface(w*h); @@ -427,8 +411,6 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { result = -8; goto exit; } - unsigned char* pData = surface->data; - surface->width = w; surface->height = h; surface->row_bytes = w; @@ -437,7 +419,7 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { int i; for (i = 0; i < h; ++i, ++y) { png_read_row(png_ptr, row, NULL); - memcpy(pData + i*w, row, w); + memcpy(surface->data + i*w, row, w); } *pSurface = (gr_surface) surface; @@ -452,15 +434,7 @@ int res_create_localized_surface(const char* name, gr_surface* pSurface) { exit: png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - if (fp != NULL) { - fclose(fp); - } - if (result < 0) { - if (surface) { - free(surface); - } - } + if (result < 0 && surface != NULL) free(surface); return result; } diff --git a/recovery.cpp b/recovery.cpp index 448f315b..e956ed71 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -974,8 +974,8 @@ main(int argc, char **argv) { ui = device->GetUI(); gCurrentUI = ui; - ui->Init(); ui->SetLocale(locale); + ui->Init(); ui->SetBackground(RecoveryUI::NONE); if (show_text) ui->ShowText(true); diff --git a/screen_ui.cpp b/screen_ui.cpp index 589c935d..656f7244 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -52,6 +52,7 @@ static double now() { ScreenRecoveryUI::ScreenRecoveryUI() : currentIcon(NONE), installingFrame(0), + locale(NULL), rtl_locale(false), progressBarType(EMPTY), progressScopeStart(0), @@ -306,21 +307,21 @@ void ScreenRecoveryUI::progress_loop() { } void ScreenRecoveryUI::LoadBitmap(const char* filename, gr_surface* surface) { - int result = res_create_surface(filename, surface); + int result = res_create_display_surface(filename, surface); if (result < 0) { LOGE("missing bitmap %s\n(Code %d)\n", filename, result); } } void ScreenRecoveryUI::LoadBitmapArray(const char* filename, int* frames, gr_surface** surface) { - int result = res_create_multi_surface(filename, frames, surface); + int result = res_create_multi_display_surface(filename, frames, surface); if (result < 0) { LOGE("missing bitmap %s\n(Code %d)\n", filename, result); } } void ScreenRecoveryUI::LoadLocalizedBitmap(const char* filename, gr_surface* surface) { - int result = res_create_localized_surface(filename, surface); + int result = res_create_localized_alpha_surface(filename, locale, surface); if (result < 0) { LOGE("missing bitmap %s\n(Code %d)\n", filename, result); } @@ -360,8 +361,9 @@ void ScreenRecoveryUI::Init() RecoveryUI::Init(); } -void ScreenRecoveryUI::SetLocale(const char* locale) { - if (locale) { +void ScreenRecoveryUI::SetLocale(const char* new_locale) { + if (new_locale) { + this->locale = new_locale; char* lang = strdup(locale); for (char* p = lang; *p; ++p) { if (*p == '_') { @@ -380,6 +382,8 @@ void ScreenRecoveryUI::SetLocale(const char* locale) { rtl_locale = true; } free(lang); + } else { + new_locale = NULL; } } diff --git a/screen_ui.h b/screen_ui.h index ada006d1..14b91385 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -64,6 +64,7 @@ class ScreenRecoveryUI : public RecoveryUI { private: Icon currentIcon; int installingFrame; + const char* locale; bool rtl_locale; pthread_mutex_t updateMutex; From 76b245c24c12feec2381c423de2f7ffe4b78d7f0 Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Mon, 17 Mar 2014 15:35:52 -0700 Subject: [PATCH 054/110] minzip: 64 bit build issue Regression - verification and extraction on memory, not files Bug: 12188746 Change-Id: Ib6facc4aff6be3a31a7d184ef1c493fdd4012c21 --- minzip/SysUtil.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minzip/SysUtil.c b/minzip/SysUtil.c index c046a8cf..ac6f5c33 100644 --- a/minzip/SysUtil.c +++ b/minzip/SysUtil.c @@ -103,7 +103,7 @@ static int sysMapBlockFile(FILE* mapf, MemMapping* pMap) } } - if (fscanf(mapf, "%d %d\n%d\n", &size, &blksize, &range_count) != 3) { + if (fscanf(mapf, "%zu %u\n%u\n", &size, &blksize, &range_count) != 3) { LOGW("failed to parse block map header\n"); return -1; } From a388a769760af4d8999558f38f81dafa63cc0bfb Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 17 Mar 2014 16:51:47 -0700 Subject: [PATCH 055/110] fix error log statement We were printing the address of channels instead of the value there. Change-Id: I652340c7c1a0abaf01af555e54d2c0366d21ad78 --- minui/resources.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minui/resources.c b/minui/resources.c index 69fd14be..a0c621b7 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -110,7 +110,7 @@ static int open_png(const char* name, png_structp* png_ptr, png_infop* info_ptr, *channels = 3; } else { fprintf(stderr, "minui doesn't support PNG depth %d channels %d color_type %d\n", - bit_depth, (int) channels, color_type); + bit_depth, *channels, color_type); result = -7; goto exit; } From b1d1263453de7f0f155628b91658a7cccb2e95fd Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 18 Mar 2014 10:32:12 -0700 Subject: [PATCH 056/110] add --shutdown_after option to recovery The "--shutdown_after" option causes recovery to power down the device on completion rather than rebooting. Removes the last vestiges of the "--previous_runs" argument, which doesn't seem to be used for anything. Change-Id: I465eda2ef59d367e2b1c79a8dc69831263c69a4d --- recovery.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/recovery.cpp b/recovery.cpp index e956ed71..e852ef87 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -56,6 +56,7 @@ static const struct option OPTIONS[] = { { "show_text", no_argument, NULL, 't' }, { "just_exit", no_argument, NULL, 'x' }, { "locale", required_argument, NULL, 'l' }, + { "shutdown_after", no_argument, NULL, 'p' }, { NULL, 0, NULL, 0 }, }; @@ -942,16 +943,15 @@ main(int argc, char **argv) { rotate_last_logs(10); get_args(&argc, &argv); - int previous_runs = 0; const char *send_intent = NULL; const char *update_package = NULL; int wipe_data = 0, wipe_cache = 0, show_text = 0; bool just_exit = false; + bool shutdown_after = false; int arg; while ((arg = getopt_long(argc, argv, "", OPTIONS, NULL)) != -1) { switch (arg) { - case 'p': previous_runs = atoi(optarg); break; case 's': send_intent = optarg; break; case 'u': update_package = optarg; break; case 'w': wipe_data = wipe_cache = 1; break; @@ -959,6 +959,7 @@ main(int argc, char **argv) { case 't': show_text = 1; break; case 'x': just_exit = true; break; case 'l': locale = optarg; break; + case 'p': shutdown_after = true; break; case '?': LOGE("Invalid command argument\n"); continue; @@ -1061,7 +1062,12 @@ main(int argc, char **argv) { // Otherwise, get ready to boot the main system... finish_recovery(send_intent); - ui->Print("Rebooting...\n"); - property_set(ANDROID_RB_PROPERTY, "reboot,"); + if (shutdown_after) { + ui->Print("Shutting down...\n"); + property_set(ANDROID_RB_PROPERTY, "shutdown,"); + } else { + ui->Print("Rebooting...\n"); + property_set(ANDROID_RB_PROPERTY, "reboot,"); + } return EXIT_SUCCESS; } From bacf9b4558c69e918d9c05b6f111bbb223829829 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 18 Mar 2014 10:32:12 -0700 Subject: [PATCH 057/110] add --shutdown_after option to recovery The "--shutdown_after" option causes recovery to power down the device on completion rather than rebooting. Removes the last vestiges of the "--previous_runs" argument, which doesn't seem to be used for anything. Change-Id: I465eda2ef59d367e2b1c79a8dc69831263c69a4d Conflicts: recovery.cpp --- recovery.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/recovery.cpp b/recovery.cpp index 43cd9daf..fdb9095b 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -57,6 +57,7 @@ static const struct option OPTIONS[] = { { "just_exit", no_argument, NULL, 'x' }, { "locale", required_argument, NULL, 'l' }, { "stages", required_argument, NULL, 'g' }, + { "shutdown_after", no_argument, NULL, 'p' }, { NULL, 0, NULL, 0 }, }; @@ -945,16 +946,15 @@ main(int argc, char **argv) { rotate_last_logs(10); get_args(&argc, &argv); - int previous_runs = 0; const char *send_intent = NULL; const char *update_package = NULL; int wipe_data = 0, wipe_cache = 0, show_text = 0; bool just_exit = false; + bool shutdown_after = false; int arg; while ((arg = getopt_long(argc, argv, "", OPTIONS, NULL)) != -1) { switch (arg) { - case 'p': previous_runs = atoi(optarg); break; case 's': send_intent = optarg; break; case 'u': update_package = optarg; break; case 'w': wipe_data = wipe_cache = 1; break; @@ -970,6 +970,7 @@ main(int argc, char **argv) { } break; } + case 'p': shutdown_after = true; break; case '?': LOGE("Invalid command argument\n"); continue; @@ -1079,7 +1080,12 @@ main(int argc, char **argv) { // Otherwise, get ready to boot the main system... finish_recovery(send_intent); - ui->Print("Rebooting...\n"); - property_set(ANDROID_RB_PROPERTY, "reboot,"); + if (shutdown_after) { + ui->Print("Shutting down...\n"); + property_set(ANDROID_RB_PROPERTY, "shutdown,"); + } else { + ui->Print("Rebooting...\n"); + property_set(ANDROID_RB_PROPERTY, "reboot,"); + } return EXIT_SUCCESS; } From 2605dec597f7ebabf31b7e9430f19ab888b2919a Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Wed, 19 Mar 2014 15:30:25 -0700 Subject: [PATCH 058/110] recovery: 64 bit build issues Change-Id: Ie88c49dea13cce5f4eb428e97f5a0956f2656a30 --- uncrypt/uncrypt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index 7c2d9947..24d1ffc2 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -189,10 +189,10 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de return -1; } - printf(" block size: %ld bytes\n", sb.st_blksize); + printf(" block size: %ld bytes\n", (long)sb.st_blksize); int blocks = ((sb.st_size-1) / sb.st_blksize) + 1; - printf(" file size: %lld bytes, %d blocks\n", sb.st_size, blocks); + printf(" file size: %lld bytes, %d blocks\n", (long long)sb.st_size, blocks); int* ranges; int range_alloc = 1; @@ -201,7 +201,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de ranges[0] = -1; ranges[1] = -1; - fprintf(mapf, "%s\n%lld %lu\n", blk_dev, sb.st_size, sb.st_blksize); + fprintf(mapf, "%s\n%lld %lu\n", blk_dev, (long long)sb.st_size, (unsigned long)sb.st_blksize); unsigned char* buffers[WINDOW_SIZE]; int i; From 577a1304352c12d968c11a667f50cd45498cae17 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 20 Mar 2014 08:27:01 -0700 Subject: [PATCH 059/110] restore minui support for paletted images with < 8 bits The PNG image loaders should support images that use palettes requiring fewer than 8 bits. Change-Id: Ibcb0ff6f04aea8de54b03c0efa7a79e9b3635146 --- minui/resources.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minui/resources.c b/minui/resources.c index a0c621b7..2bae4ded 100644 --- a/minui/resources.c +++ b/minui/resources.c @@ -101,7 +101,7 @@ static int open_png(const char* name, png_structp* png_ptr, png_infop* info_ptr, } else if (bit_depth <= 8 && *channels == 1 && color_type == PNG_COLOR_TYPE_GRAY) { // 1-, 2-, 4-, or 8-bit gray images: expand to 8-bit gray. png_set_expand_gray_1_2_4_to_8(*png_ptr); - } else if (bit_depth == 8 && *channels == 1 && color_type == PNG_COLOR_TYPE_PALETTE) { + } else if (bit_depth <= 8 && *channels == 1 && color_type == PNG_COLOR_TYPE_PALETTE) { // paletted images: expand to 8-bit RGB. Note that we DON'T // currently expand the tRNS chunk (if any) to an alpha // channel, because minui doesn't support alpha channels in From 02abde50851f66196c74d215150014f1378cb853 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 1 Apr 2014 09:45:24 -0700 Subject: [PATCH 060/110] remove DefaultDevice's UI subclass RecoveryUI (which is the superclass of ScreenRecoveryUI), provides a basic CheckKey method that is useful for devices that have KEY_POWER, KEY_VOLUMEUP, and KEY_VOLUMEDOWN. Stop overriding it with a less featureful method; with this no recovery UI customization is needed for most handheld devices (phones, tablets, etc.). Change-Id: I7d57cfaaef79afea8af4fc3dbc570afc61aeb5bc --- default_device.cpp | 13 ++----------- ui.cpp | 2 +- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/default_device.cpp b/default_device.cpp index 648eaec4..1f181318 100644 --- a/default_device.cpp +++ b/default_device.cpp @@ -31,20 +31,10 @@ static const char* ITEMS[] = {"reboot system now", "wipe cache partition", NULL }; -class DefaultUI : public ScreenRecoveryUI { - public: - virtual KeyAction CheckKey(int key) { - if (key == KEY_HOME) { - return TOGGLE; - } - return ENQUEUE; - } -}; - class DefaultDevice : public Device { public: DefaultDevice() : - ui(new DefaultUI) { + ui(new ScreenRecoveryUI) { } RecoveryUI* GetUI() { return ui; } @@ -61,6 +51,7 @@ class DefaultDevice : public Device { return kHighlightUp; case KEY_ENTER: + case KEY_POWER: return kInvokeItem; } } diff --git a/ui.cpp b/ui.cpp index 67a2500b..091012f2 100644 --- a/ui.cpp +++ b/ui.cpp @@ -276,7 +276,7 @@ void RecoveryUI::FlushKeys() { // - Press power seven times in a row to reboot. // - Alternate vol-up and vol-down seven times to mount /system. RecoveryUI::KeyAction RecoveryUI::CheckKey(int key) { - if (IsKeyPressed(KEY_POWER) && key == KEY_VOLUMEUP) { + if ((IsKeyPressed(KEY_POWER) && key == KEY_VOLUMEUP) || key == KEY_HOME) { return TOGGLE; } From 8d9d3d5cbe240d09db10d08956d152dce934e892 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 1 Apr 2014 13:20:23 -0700 Subject: [PATCH 061/110] add reboot-to-bootloader and power down options to recovery menu Useful when debugging or developing for recovery. Change-Id: Ic3ab42d5e848ad3488f1c575339b55e45c8a024b --- default_device.cpp | 4 ++++ device.h | 3 ++- recovery.cpp | 55 ++++++++++++++++++++++++++++++++-------------- 3 files changed, 44 insertions(+), 18 deletions(-) diff --git a/default_device.cpp b/default_device.cpp index 1f181318..a25f05f8 100644 --- a/default_device.cpp +++ b/default_device.cpp @@ -29,6 +29,8 @@ static const char* ITEMS[] = {"reboot system now", "apply update from ADB", "wipe data/factory reset", "wipe cache partition", + "reboot to bootloader", + "power down", NULL }; class DefaultDevice : public Device { @@ -65,6 +67,8 @@ class DefaultDevice : public Device { case 1: return APPLY_ADB_SIDELOAD; case 2: return WIPE_DATA; case 3: return WIPE_CACHE; + case 4: return REBOOT_BOOTLOADER; + case 5: return SHUTDOWN; default: return NO_ACTION; } } diff --git a/device.h b/device.h index 583de75e..df71377c 100644 --- a/device.h +++ b/device.h @@ -66,7 +66,8 @@ class Device { virtual int HandleMenuKey(int key, int visible) = 0; enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, APPLY_CACHE, - APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE }; + APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE, + REBOOT_BOOTLOADER, SHUTDOWN }; // Perform a recovery action selected from the menu. // 'menu_position' will be the item number of the selected menu diff --git a/recovery.cpp b/recovery.cpp index 8d373154..09af5f8b 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -771,7 +771,10 @@ wipe_data(int confirm, Device* device) { ui->Print("Data wipe complete.\n"); } -static void +// Return REBOOT, SHUTDOWN, or REBOOT_BOOTLOADER. Returning NO_ACTION +// means to take the default, which is to reboot or shutdown depending +// on if the --shutdown_after flag was passed to recovery. +static Device::BuiltinAction prompt_and_wait(Device* device, int status) { const char* const* headers = prepend_title(device->GetMenuHeaders()); @@ -795,23 +798,28 @@ prompt_and_wait(Device* device, int status) { // device-specific code may take some action here. It may // return one of the core actions handled in the switch // statement below. - chosen_item = device->InvokeMenuItem(chosen_item); + Device::BuiltinAction chosen_action = device->InvokeMenuItem(chosen_item); int wipe_cache; - switch (chosen_item) { + switch (chosen_action) { + case Device::NO_ACTION: + break; + case Device::REBOOT: - return; + case Device::SHUTDOWN: + case Device::REBOOT_BOOTLOADER: + return chosen_action; case Device::WIPE_DATA: wipe_data(ui->IsTextVisible(), device); - if (!ui->IsTextVisible()) return; + if (!ui->IsTextVisible()) return Device::NO_ACTION; break; case Device::WIPE_CACHE: ui->Print("\n-- Wiping cache...\n"); erase_volume("/cache"); ui->Print("Cache wipe complete.\n"); - if (!ui->IsTextVisible()) return; + if (!ui->IsTextVisible()) return Device::NO_ACTION; break; case Device::APPLY_EXT: @@ -829,7 +837,7 @@ prompt_and_wait(Device* device, int status) { ui->SetBackground(RecoveryUI::ERROR); ui->Print("Installation aborted.\n"); } else if (!ui->IsTextVisible()) { - return; // reboot if logs aren't visible + return Device::NO_ACTION; // reboot if logs aren't visible } else { ui->Print("\nInstall from sdcard complete.\n"); } @@ -852,7 +860,7 @@ prompt_and_wait(Device* device, int status) { ui->SetBackground(RecoveryUI::ERROR); ui->Print("Installation aborted.\n"); } else if (!ui->IsTextVisible()) { - return; // reboot if logs aren't visible + return Device::NO_ACTION; // reboot if logs aren't visible } else { ui->Print("\nInstall from cache complete.\n"); } @@ -867,7 +875,7 @@ prompt_and_wait(Device* device, int status) { ui->Print("Installation aborted.\n"); copy_logs(); } else if (!ui->IsTextVisible()) { - return; // reboot if logs aren't visible + return Device::NO_ACTION; // reboot if logs aren't visible } else { ui->Print("\nInstall from ADB complete.\n"); } @@ -1074,18 +1082,31 @@ main(int argc, char **argv) { copy_logs(); ui->SetBackground(RecoveryUI::ERROR); } + Device::BuiltinAction after = shutdown_after ? Device::SHUTDOWN : Device::REBOOT; if (status != INSTALL_SUCCESS || ui->IsTextVisible()) { - prompt_and_wait(device, status); + Device::BuiltinAction temp = prompt_and_wait(device, status); + if (temp != Device::NO_ACTION) after = temp; } - // Otherwise, get ready to boot the main system... + // Save logs and clean up before rebooting or shutting down. finish_recovery(send_intent); - if (shutdown_after) { - ui->Print("Shutting down...\n"); - property_set(ANDROID_RB_PROPERTY, "shutdown,"); - } else { - ui->Print("Rebooting...\n"); - property_set(ANDROID_RB_PROPERTY, "reboot,"); + + switch (after) { + case Device::SHUTDOWN: + ui->Print("Shutting down...\n"); + property_set(ANDROID_RB_PROPERTY, "shutdown,"); + break; + + case Device::REBOOT_BOOTLOADER: + ui->Print("Rebooting to bootloader...\n"); + property_set(ANDROID_RB_PROPERTY, "reboot,bootloader"); + break; + + default: + ui->Print("Rebooting...\n"); + property_set(ANDROID_RB_PROPERTY, "reboot,"); + break; } + sleep(5); // should reboot before this finishes return EXIT_SUCCESS; } From 9551cf912180665a85f515c16d6412bb8ea2bf98 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 4 Apr 2014 13:48:33 -0700 Subject: [PATCH 062/110] make density-specific recovery assets Provide different recovery UI resources for different display densities. Right now only the text images and the progress bars are rescaled; the main icon will get scaled when it's updated for QP. Lightly quantum-ify the rest of the recovery interface. (Light background, progress bars, etc.) Change-Id: Ia639c4ce8534b01bc843524efbc4b040c1cf38b3 --- res-hdpi/images/erasing_text.png | Bin 0 -> 20528 bytes res-hdpi/images/error_text.png | Bin 0 -> 11684 bytes {res => res-hdpi}/images/icon_error.png | Bin {res => res-hdpi}/images/icon_installing.png | Bin res-hdpi/images/installing_text.png | Bin 0 -> 40946 bytes res-hdpi/images/no_command_text.png | Bin 0 -> 25013 bytes res-hdpi/images/progress_empty.png | Bin 0 -> 81 bytes res-hdpi/images/progress_fill.png | Bin 0 -> 83 bytes {res => res-hdpi}/images/stage_empty.png | Bin {res => res-hdpi}/images/stage_fill.png | Bin res-mdpi/images/erasing_text.png | Bin 0 -> 12208 bytes res-mdpi/images/error_text.png | Bin 0 -> 7202 bytes res-mdpi/images/icon_error.png | Bin 0 -> 19306 bytes res-mdpi/images/icon_installing.png | Bin 0 -> 118562 bytes res-mdpi/images/installing_text.png | Bin 0 -> 24575 bytes res-mdpi/images/no_command_text.png | Bin 0 -> 14168 bytes res-mdpi/images/progress_empty.png | Bin 0 -> 74 bytes res-mdpi/images/progress_fill.png | Bin 0 -> 83 bytes res-mdpi/images/stage_empty.png | Bin 0 -> 322 bytes res-mdpi/images/stage_fill.png | Bin 0 -> 258 bytes res-xhdpi/images/erasing_text.png | Bin 0 -> 29674 bytes res-xhdpi/images/error_text.png | Bin 0 -> 16599 bytes res-xhdpi/images/icon_error.png | Bin 0 -> 19306 bytes res-xhdpi/images/icon_installing.png | Bin 0 -> 118562 bytes res-xhdpi/images/installing_text.png | Bin 0 -> 63220 bytes res-xhdpi/images/no_command_text.png | Bin 0 -> 37222 bytes res-xhdpi/images/progress_empty.png | Bin 0 -> 84 bytes res-xhdpi/images/progress_fill.png | Bin 0 -> 84 bytes res-xhdpi/images/stage_empty.png | Bin 0 -> 322 bytes res-xhdpi/images/stage_fill.png | Bin 0 -> 258 bytes res-xxhdpi/images/erasing_text.png | Bin 0 -> 52598 bytes res-xxhdpi/images/error_text.png | Bin 0 -> 27839 bytes res-xxhdpi/images/icon_error.png | Bin 0 -> 19306 bytes res-xxhdpi/images/icon_installing.png | Bin 0 -> 118562 bytes res-xxhdpi/images/installing_text.png | Bin 0 -> 133331 bytes res-xxhdpi/images/no_command_text.png | Bin 0 -> 63887 bytes res-xxhdpi/images/progress_empty.png | Bin 0 -> 86 bytes res-xxhdpi/images/progress_fill.png | Bin 0 -> 86 bytes res-xxhdpi/images/stage_empty.png | Bin 0 -> 322 bytes res-xxhdpi/images/stage_fill.png | Bin 0 -> 258 bytes res-xxxhdpi/images/erasing_text.png | Bin 0 -> 85500 bytes res-xxxhdpi/images/error_text.png | Bin 0 -> 40216 bytes res-xxxhdpi/images/icon_error.png | Bin 0 -> 19306 bytes res-xxxhdpi/images/icon_installing.png | Bin 0 -> 118562 bytes res-xxxhdpi/images/installing_text.png | Bin 0 -> 184958 bytes res-xxxhdpi/images/no_command_text.png | Bin 0 -> 109746 bytes res-xxxhdpi/images/progress_empty.png | Bin 0 -> 90 bytes res-xxxhdpi/images/progress_fill.png | Bin 0 -> 90 bytes res-xxxhdpi/images/stage_empty.png | Bin 0 -> 322 bytes res-xxxhdpi/images/stage_fill.png | Bin 0 -> 258 bytes res/images/erasing_text.png | Bin 31491 -> 0 bytes res/images/error_text.png | Bin 17504 -> 0 bytes res/images/installing_text.png | Bin 66592 -> 0 bytes res/images/no_command_text.png | Bin 40632 -> 0 bytes res/images/progress_empty.png | Bin 118 -> 0 bytes res/images/progress_fill.png | Bin 404 -> 0 bytes screen_ui.cpp | 29 +++++++++---------- screen_ui.h | 3 ++ 58 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 res-hdpi/images/erasing_text.png create mode 100644 res-hdpi/images/error_text.png rename {res => res-hdpi}/images/icon_error.png (100%) rename {res => res-hdpi}/images/icon_installing.png (100%) create mode 100644 res-hdpi/images/installing_text.png create mode 100644 res-hdpi/images/no_command_text.png create mode 100644 res-hdpi/images/progress_empty.png create mode 100644 res-hdpi/images/progress_fill.png rename {res => res-hdpi}/images/stage_empty.png (100%) rename {res => res-hdpi}/images/stage_fill.png (100%) create mode 100644 res-mdpi/images/erasing_text.png create mode 100644 res-mdpi/images/error_text.png create mode 100644 res-mdpi/images/icon_error.png create mode 100644 res-mdpi/images/icon_installing.png create mode 100644 res-mdpi/images/installing_text.png create mode 100644 res-mdpi/images/no_command_text.png create mode 100644 res-mdpi/images/progress_empty.png create mode 100644 res-mdpi/images/progress_fill.png create mode 100644 res-mdpi/images/stage_empty.png create mode 100644 res-mdpi/images/stage_fill.png create mode 100644 res-xhdpi/images/erasing_text.png create mode 100644 res-xhdpi/images/error_text.png create mode 100644 res-xhdpi/images/icon_error.png create mode 100644 res-xhdpi/images/icon_installing.png create mode 100644 res-xhdpi/images/installing_text.png create mode 100644 res-xhdpi/images/no_command_text.png create mode 100644 res-xhdpi/images/progress_empty.png create mode 100644 res-xhdpi/images/progress_fill.png create mode 100644 res-xhdpi/images/stage_empty.png create mode 100644 res-xhdpi/images/stage_fill.png create mode 100644 res-xxhdpi/images/erasing_text.png create mode 100644 res-xxhdpi/images/error_text.png create mode 100644 res-xxhdpi/images/icon_error.png create mode 100644 res-xxhdpi/images/icon_installing.png create mode 100644 res-xxhdpi/images/installing_text.png create mode 100644 res-xxhdpi/images/no_command_text.png create mode 100644 res-xxhdpi/images/progress_empty.png create mode 100644 res-xxhdpi/images/progress_fill.png create mode 100644 res-xxhdpi/images/stage_empty.png create mode 100644 res-xxhdpi/images/stage_fill.png create mode 100644 res-xxxhdpi/images/erasing_text.png create mode 100644 res-xxxhdpi/images/error_text.png create mode 100644 res-xxxhdpi/images/icon_error.png create mode 100644 res-xxxhdpi/images/icon_installing.png create mode 100644 res-xxxhdpi/images/installing_text.png create mode 100644 res-xxxhdpi/images/no_command_text.png create mode 100644 res-xxxhdpi/images/progress_empty.png create mode 100644 res-xxxhdpi/images/progress_fill.png create mode 100644 res-xxxhdpi/images/stage_empty.png create mode 100644 res-xxxhdpi/images/stage_fill.png delete mode 100644 res/images/erasing_text.png delete mode 100644 res/images/error_text.png delete mode 100644 res/images/installing_text.png delete mode 100644 res/images/no_command_text.png delete mode 100644 res/images/progress_empty.png delete mode 100644 res/images/progress_fill.png diff --git a/res-hdpi/images/erasing_text.png b/res-hdpi/images/erasing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..774244c843483c111aa1bc49799fb03338d6d492 GIT binary patch literal 20528 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%0A#G#mDOSpZ6J|nJb-C{veCHyNq_3uqP)7oA?5a> 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 Wi<>!Q%g}eO0=#tI)TqeNG5miZKAQ0W literal 0 HcmV?d00001 diff --git a/res-hdpi/images/error_text.png b/res-hdpi/images/error_text.png new file mode 100644 index 0000000000000000000000000000000000000000..64a57ec4efe9babed9da8e318e1ebb5af48543fd GIT binary patch literal 11684 zcmZ{~byQqU^DYV#1`qD;&fq#|kl^kRbdUssGq{uB!8N!OToT-M@PuGNLvRLn37mP~ z-}kM1@44s9AG5ovyPn-^_v)^yr#f0oC3J zK|)vD+ytHeqat>g zEIxi4FK;61$L&Ux4?>j6M*SpoIBp;&Qr=h$Q5Gk=XbcoQ7!gbuC z-tXOeOG?8zF~hU2UB=a-14;c|k2fRq>zyaQ`H?-l-j5-+@2iT*Y|6NI#G z;z@uZ^-)1?$}0fUn8~oLo0X@Jx=9VE#S!%?yoE#lM|xRiXv9>0ERi@v>}=Tt)@@hFr>0*66mfzX|DLfm^_6h4-I9YGE9*r5KiAj0Vf1QEfV9k-prNdBst7n_t%GZYeIMuPiUPjxW3kq_nS@D88NpbZE@`) z%4-N#y*|zj{+`g@pBM#KGbtpg^x_v7m+Wp>2C$o6J2B@B%j^~2sp}ybK$ND8jR$6H zn9CxIDAycm40C=cN~G`z`-X#V!O;PFQ9CLQ4otDpbgG`^OmW)?zLfx6*BH=%rkOut zgJBL2zT~HWNt~>&GP!%H+Tz~?EaPw`qrzp(TpO^+IPLkGelheZ(}sXa2}xg&&!cw} zg^c-MGM{w^*v4}m zxU4S{GAF)JB{9_Aw3Je%BFG==Pj=c4IdfS96P)7C^unp2qY{R=*q(*pXN0( zXAM0ElN+Gt@gNDe86tODY(7We!N4adkGb7mMj=(FpC@pC)xyE{e zwlsMc?B?2Q9ADG2>tg*Te$^&lW*t%`GiB~@qyHWy)4gTfut~&Si8hYakSR7odd{YE=?zSl9<-H#fTTgo3tBvZbtT2W@ikO%40PbgNX`pSHn5HuqFP+XwD$ zWNHnjHexc21kFfO92QhURd8{^yjU?L&GYenbZ^gz+DKzJ3Ml~us7(ct)JQP<&tVLk zF$!8+k-bgtQ8R(t9UTX=A*MQc4ew2z!oILL)XvG3IVOU7kn%{C@7oHo@>u&-*h3`l z$jGF-X_0~Mcq^s7yV_Wf#95@Pq1(Kbi0wAIJyn$yJUW1j-`8p|ErA(sn6UaDgXE)* z6;W8&3Qq8mJ(9o)6!n+0I#8Pd@C~I(Q4QqjO*;9`-x+%;pN_hZcZ2p7%=!2P@x7Fx z$yU?Sdw%(=RG(4G5?Bt4Uo{E=U|pL*c)maVkK-0dFxpiUoT4NSB)yZgGk`Zs%KCt$ z*Im1yM{$sBrlVgl9k%QA8?&1wZoSaEbkXsk*r#Mb*RDo_Dd&v;@g~upG)z@5WX*## zh{2kiLH6f?+%C2VG^lGv<%%}9GMDW6?)T~}L z5hQ{{gR=Hb`E*eL$1(*%Ut32R_!YcizvP6y`pRtg*W<9Bd8&Yy$^zjlrXXJ0w^id~ z&RAS_DO<=3wgNxi`15x(`5XKc@QNYYn*>;=lq8V4}`f5-AWX~HFS`;({YAvaG1=d{{1|#596mDA_ zigWakA!8b1>zox%F@9wlVr?#RQ>PEM^En zB_Q$BLCWs07vs@(WmEE-(c<|xzNmq~eRm3(sh#G#LnvS;tKFxKEGIfQ4(=0|3(0_u zEGlKUNTyf~JmaZApQjP4MrOA+mjA}z2KT+ND%U!tV`1+H>pGbXEBuTrz?+X>^$I+o z?bwcA>C|dL114NET@A<>Hp@aYwnnBX?bua-A%alQz%NFGOicC5sT5&2xzOvkMf2_a zquG$6Vt!@4$in2s*Ps#J&HOls2rgQr)koi@p&tHmcfc| zZMz|rvAyE8K8w#gJDcUv*e!=d0ZCCVcpXW%k>DPS2YRMlAskI?a#axSyA?(jj#&}F zxZKl1kw_;-s!7`*P;#gZZ%0M%Vd^<-aCv1BN<$s9k!i*n@w_lfPJ7!M^?i8!`zmm_ zF&Fc4FA-%KP#PU^ny!G7(7D0m=Nlspo5Ih18HnQNi5_N~M{2`cv9E;lYymZt)14dF zl{it0`6-&593_*`o%fdexGmz&T;n$Zfy+3CE3AXJQeP32^qJQp2w1|5ZxDqgIp$cI zyc~&bsTX)UB_O8HzO7s@xX~8)wbc0diQzExb*KQ{Ion0R>zNNU)NT$QM8Tx$-ADLI zAK^qH?}eT|sWwq|<*|fps{?c_PFy5^z<(64x+rE{6U0D>{-!u6cv3yKivhwXBjJm( zXWkd-6M4L!tm4AMo5K5-WPig8T%lT`U^Xf$!6o%a+>e|%I2w%}$+;=;9LO#c7!9q) zkKYAjfEo>rbx901r40SIH+&#iXa{aEK_mV0pAIWYZ6+^yCnEyd zyE-&oZMHD@gI+(-EM2BZo|Pa$ls>A5NyDT<&{p5JAAS9^`Ie8A^;1?uH-ly8GpPOO z%16IEGlp=auWn8Iv?kz3$I+D}nKozH=Ac`>Zg<%Ed_+`1Eq*WaKZ?YkXCdsNRXgwN zcK(reX}!(TJBe4hk<-H}NpLZpL^_d~*I>%p?yK$5 zu_5xYnVK0k#E3DI{REJ9v!}WlcsE8N8{_o<@$@r)>0OJEr5y0~7hhr+Zzp^z577_X z(F{qD$ibEn&)UTZ(kQz;wf<@wwhInXPX42gwj(Iydb)V4EG89vtQU)NbA#mBx(-L^2c7JGew1DV@krCh6FJXs8JKX>=vFkZyHwj>=eTYHW2w-J9a_1r* z%~}n%9#Feb5)P^6r7$sYQ!l$7oEJq$4$QX0lmGYR84U+#DiEq&qH225M40jNW+{sy zAK@Oe{+Q*D+QR~&JEG-Dnr7)M_V%AVDDDPr`vRd9yPkUa#;*Cf>{D4NBrBz5Zd1ac z!(tXmm|B~}4mnkhNZ%@Yiyq*DQ@Q^MdRLhp5l|Gn|A}>JwkSkJA7c?4f(k8i53vWM z#>*h(fQRJVpy67GJ&92sd;(CFl8fo24CScjUaIW<1tI-_aPry5)tb;3W{42^8I%eq z;Trti@`?k>fB(@mAmN)8CFn#1YpsX;Rt&>m3A0ZA{pHFq4Z)){o^?lw>7C(Dzxi6Q z!BwlNBFMpIXDj)LBpwAhwmQD=a_I-j3C#!P2q#q|`Ei zcjSDJx5`LGxRYoiCERF2*u}p6iG}=;XLu<)(#{8{!?$h z#2-1$amls&&zxLcqf|uuDkChzlJ_APhp%(@G=^xBImAgLCHT=klbQY&Yq47Gnuov{ z&WzHgAAHEKPiYZB^{4Ow3w(tdm%uyG>|lE3s88p(m)nIMscsk#;8_U*_$Wx=_S z_=SZt|9?$ISuOAsV|KnRl<kSsECJkJMGrQUx;_DKR#&ee zoJowYx3Yb)YMP|4U0j3V=!{D>5VDPp0#2dye7$Fh=A|#WFJGWrwqo@^gBNz{exYYC za*=p0>gD=+lUNCLB57P0vrM+=(Yly!NwhExkimq^g!-maLbewOft^c*O&9?eY^8bw z+U7a;xPb1qeoBc*gxjD*!Ya#1vzPu-`@|AQ6sp!=S@DBXjSIac04g@bOcLoG7RRs* zgb#Qq1>H1k0rJOImrjJ5AEfhhx8wDD_m-uSjysb$EQ5UqE=~xLL7u9+(F#Hg3Em@I zA*sNNWLaQfW+GA?dCkcCzlXnqLYY{XxDui8t=!AYRe9JmwF(p~V`JlVA*6MpuISEe zlX0B_3%JQI-NUtRS#FuIGOW=D(A3AgY}t92-8yS%LaZ>d6`)vL=X_HYrp>eB0;sEP z0|{xa>~q${6xo~?9skTq-*8VUa8QvwCG_!{^s3y-W<9=4Gf?=>_f{!<()~NrULn!F zsfW6T;Qv^iA7m)yPw|h;M9hq$vxmT-0IYm&M@Y5a&n6nV#m^WK@B_)bhD&P(lca_t4u{CBb zl`c0!<^%@hq$ zF>v(xW?`wNOKcR@@zq}^!VP3UxyawX=6D%L_x+j9t`Fr7LwIx_xTfeW#smBuE7^$Q zJo@7#T+_09YlyX#%_WJQnlQSaSNS#TTV!rjQ8P%DcF}7Ei$VRa&wKyS8k8$&yebNcPv{h7_FC`C-tyb%c!iRMs#Bn+E%vu@wrKAWWsm-b_q;*4c}x69V(6xP{s5%VGc z2)xJ(=au$A)^+_;$1{q1+d5V@`d10&-XkQs>mSs3Sn}1RHDI8o2BDz zhPCF;4NFle@Xl*{C;I;7P_qyo%AI(Y!5=dFkG{B&2S?x-x;Hg_Z8U?J{4Jm82Rs3c z6lM?0u9etVu4)TB_GdkPkhy%W}tP7CYGf@)S=(yW*2ez)g#lwbDn2pe#twZ{>BD$zmF*3ZS@fs# z`~BJT)bc)>;sS*ADUytCQF;4_HOxnZ@3-nH^+!MLJKY{*nXGN>3P)}NSi`kuncLn= zwW+Ex&9_bGRbU-cK+>I=UY7`QgKtqA>h&6})O7#Q0mztvT*-C3DZ__Z`@e8#^CN|SGKn%9+pt!GU1Ep9GF_~xdMLX>tA=U;P~29HUfKIRg}c1YGLN04;{K0l`Y zzC4@LjQ)#}p6Yq$*qtchvj=XvcJ;>R9rn&`$yc3axYY{!^;l9Vdv!z4vcNK1&*jFJIU(N6vFPrUCLDBUlPfZ)wpmCfh$6ApMo&Frzf#RXUZOIt(y#Md zEM<#Dwg;o)o)`vj;b z#P0!%ddxr0y7;uXe+1xlp{g7Vq96rR_FCWJ&`@fMah?oB>AV#ckg~F7_?sdeie5Y- zz&6*nFY~QBtf>)W!^)C@J^tyJiN!8x(>_0yM|pKS5Gn4&;TQjX&A2<3Qa<({mxl!c zX$#@#+mm=yBYhr*zU6G83tUU!>`pm8i`DiTwQfVmzr^uVyPHv(6bX1~+p$h{NHNAa z9=kI#p2|C;gY{Q?qu=el4xDge63c_^dMi*fs%9xepxh>rP`nxSmW@Y5C3Lu!*WP%= z+?}vM{>!*{;4<=*U<6JVuE6q1M-ed_W4R{MA}1@7RGJ5GZ5L)iZvYV`QcHb-4}e_}JD9r|sK%QmzI##iJqP(%)c2Msls}ubUBGCdrYY1tn26 zg0{%Xn>bIzjCPMjxvo0Ga@{TNVz1TIeHs5KFDTxhH>_j!LDq32+=Q43te18l2F$)~ zu`V+HLBFV-K+7bm2&5?6%pnfb^jpxBPRl~V@<&4y2%^e1iC(Ey2dPEf@lWd@$5NPF z@I$GeN~_!{=zoZZby3y7lG*I`ztXuHFP|}8x@CrOL?w77kI5Kujb2_dQ`hV9mX)uL z^DnJm_jlZ9x6jb|-C^x&CwK*r$t$rIFesnw4os0iA#R^UY$7hR` z?ze;htddhK``O5ZkQLT>A${lf$5;?A5y>v}fZIjRzK;UYz2^DPWIE^{0QvI|2R9+z z^q8`hTrOqM(gkV!d6aihuEhWg_fU)Oz^7)zne*zJUm}EoaztStEl2d-#Q}gVm=4|0 zGBO;hDqBZaKhdL z>IQjBWkmM6wf*hpIlt3n3O<_NT<%z~C;$Ww%v`LM@ViXbs+=^n$^77MIZ@oYpmI5% zdp_Hps!gusm=Q6`zftTILyi31DFXdY>*`9jMto@YipoI}oU$=vM?6T;s&)mRp#7>; za0PcFK&U;2#4QIrEFORvnIpxrhf7(U^KF&}-u6>xyHb1!ufyk?1PrS^`t+C3VM5k4 z34j{=1&g8fcGOFXJs%|3_GO=D&uN3 zsI{dm3kBN}HGjQ{r3Tc9m6sLlW~Ki{fE7$^lzK1$(*Tl`ihDHbhALD}<-qkUwg0Cp z@c>l=+RaeUF_)E+8+2jHrR4R3xuZ!Z0It%t5T++0)2J%30QYZiUdq$+ek=VgndxqE zOaj(tFm=D)Z@}U*fb-O%)o2R8EO2#Idgr2C?^Ws9GD>0!WY*_7USiLLOXnR?tE2O| zBDXSV3M~!goHYgz+M(h)$}VPvo$9JX`RqH}8Q6l0r0-N^Z!1|kj0DywmM|>FbC7}A zaO-g&k=5C9wXCBKB&N|fe&7yhWd6IxSiV1{twROmN@=EDVKKx1!q|0signgRa@`@> z!9HZzQ}0Iym?8isd~D+*l%TrfvHYL|r zc=8@%A1UKM^lsz~j|8LHuo}~|eJTu6-es*{V39-&)9@cM;h2Gx*O+k=@7cd6b*MA4 zNK!^JKt~K+b1I+pBKhB2yJ`z!*dLzxQsL?1FlV1XT>b4#Pmo>5PO(|kP?ioGkw9u) zC&E^w?nEblpv@MJWqXyzjn*I!dPWBEg7upZbCN`7(@W}sb?v?caU?GJe+k+n8E6K3 zn}FR{$^)P`AB2tyqj;7A^(hvI49nHL=e#8Aj~Q5n=DPe0b9-jQk%zhsPrf(?+2zuG zZCeU3%snowx4i!ARFe~h&QMjaQ{m6Xb<2Ga&=?s-*NDkE{auo1KE-UN832Y6e6|@@ z7YjxK8?S9}LRu3iPHsC&gEJ+MpWPY4!v*X!tfnOc#qC8#ghR1XA%V^2bZv$!xcv#@ z!SLh$b5NMnCKh^`c;BbZQIniu{M-G?qXx0)0=aLis*mdtpZRT>z`xzu z*VYIUa9_>Tb`s1*gea5?B(JLU22oK7+uN`f-v|ohQLgJfwC4x*6*zI>DxI?Nx#^C5 zvX@LUL;Wp7XXNHg&(~n;jP%H0N}l+3b?zcM?RB0TQcAn3tl8ecI0FnMdg2@2pe#S! z#$ZhGV6M7Ah@IE|Kp5wQBWXbL=9tLh`_I!w*|yS#garm58Ie+O7*_X8@$!QEri^*L zv%CYG+QOKC;-QFR(UydF#M|5q?{pH-$ozucWX41URq%S~hH%A&=B)%LS|+RP!Y96NGC^PxVHYc4#v`~a*nN$4EAXsUX-q`W0tQ_ z3o&gj;BUh}CXyF|*DpgEg``}z4Uvi>P-=>?WkrvG*;C94=I=2K;%63jH+rQJhd|8p zV4sx_9mo`OnHe&F->JWj%@$?qr>P<^Z7>GxK-vEdxuHA#rXDu(JDAlanQQRMtGEt| z_Q>@)zR)!4(Cl;1JDUlG7$N=tdqI;bo~=YCzgy`8w>wR?N$4<1B7#BV*!$g ze<)>I2l_X}_GK-?Mn8=#DnqjZ;^Iqumj%d$N#O7z-RAilDv+vH;0PcKPtU#gIo@kk^?Cr#( zOp__jxr2%mXOdbM6F8&_tZS45E?zltg)#K3Y1oq>)HVcqLi23%YT2RI$eA`9OXAW`~jg-lAa_3qFRW&eU7%JRu0 z*3BEi@(%Y|WzyBkri|m(JT>tlxZaqxV2rqOyFOAKDCEOk%6ANGGyYz3=P{;w-3@|G z!pwFJ>|c@wW_(!9hl9PVHpPTQ>U?+^ZKeJH3i1e|ozPPoOK^!Cn~v8j;p+xPCW^SM zeM;|&q``wOn>Kp$VML{WHD+;8;lA#w{h(C!EI$IUN2eZZ_KQS?SgMu|H9;bJqNNkIObo459Qr{%6OzOwlkW9KXe1bD81JTt z&tNLdPqGokb#P%Pm$(?{{`MmO7b|(#o3yn2-Z>dj-D4_zd=!xT7f^}~e?saiuB6~p zEe2M9Cv!Qk5fAvGa|ti;`{McE;wrMR`InRwzdOmos20;8IirE$wQ0^jY%yFXn_6=Y z_CH!`e`t|p<&$;iHDdI??=%ipcWmqjoZMfjbI`qR#O^D$7qqyz#B7{O^k2l2@H+9W zYbMhU?QW~vATqlSZK-q+Ss0?j3w&^qg7kU|FFVkX%Y&}Y? z-ImNMMIY~H>^^f6gYhS=c%N7qm$*mz`iwW@A1mQKkf6^)fDCNa(6{^gXw?Ln>E>Q^ zpwQak?2LaJvJpZ5Z$+nQ7*CPn?YX!4?wz@in(`Ttt+0d9`wZ zfEPmoGRxh4Iu}lG;rF9decAl1_7E;W;|r5U(fQm)jy(Zg!-EG5g3qyEA#T-RTm2bt zh9lBx2k3ZYpehOL=qj7{7!H>aeOBsRmI_JvSWSiZ*q2^GT|;dVX`ey8MxS)ED8KS* zOf>;7|7~N#>`KU)lo;NXhB0xb-2uVp0m;*5h}&4@eC>A`PXxMUUL}}12P@dT(dXU9 z5DC((hB51-*dwB*X~4bJ5-P`!v8Zgf+uXuq!+5m>d|hWn%b2H4VCH!DE+Q}f=G~)a ziswzlb{O^h$PpraHDLW~UJnLd$DDY;dt%2}85_jqmUu5=48i#&#+jc&PQV?Y(fB`q z)vMdx`Zl>=O>L5Ri75_?x)7J~Z0@LoTcCaL;Ah;;fj;^}ys^Txh}QNrW@&W>^I;z3 z3NArs3mS}5yA3LO2{CwTTkmbZ^e*VTn_jX7rZ9{m#4$M|H}@<1vSE5Ik70KN25u_H zep$xwun`JYSKjsYby+oZ-`QLBH9jVlr$~<~Pwp`p3QRxG`0_3$m0UqbkfgLy2(>S) zb~eK=^Wh8KS!%hLH0IBFTxG4<@Rq9GLOv$TAK)|{i#rV)kD1jK`kG1Is6_S!#qW{j z`ki?%ed&Ku`q5y%M8;deSl^W=Q;*P57e38X6hbBaKVI-DbzT$}Pvv*dVgcXfW=+6XHjq#yfvP3yxSX zk}eit*zaMC|mq#!@?DFB-VsZ|PjxMSYB{z*~$w=flagI3N1 z>PU)5i-SY1`+(Y3nT25llNFm6DJ>a~lqo0MBIFTRUF}YBNTf`AD3%!SQrf-pl9ZSh z0k&0;n=T7(+qa#)aY_8FMOu_SrHizES4Kz5UF`Uaq;Go!wv(fO zzZ03f!>^!g`Vy&G@lLq)9j5#D6kYZ!VuwVV@jIIIg3K_ppPAt+ts?$P%ewehwd|t` zDY5K29@ZS_&n2$-1pjuB-XD;-Y*MgN7~740reE~Fae%@L%%WpZ*-N%dE|V4w&Xp`-6M1@ssUJy= zsXe@GMowK`X@nT)$RU M(2%cvWf}Ir0O5sB-2eap literal 0 HcmV?d00001 diff --git a/res/images/icon_error.png b/res-hdpi/images/icon_error.png similarity index 100% rename from res/images/icon_error.png rename to res-hdpi/images/icon_error.png diff --git a/res/images/icon_installing.png b/res-hdpi/images/icon_installing.png similarity index 100% rename from res/images/icon_installing.png rename to res-hdpi/images/icon_installing.png diff --git a/res-hdpi/images/installing_text.png b/res-hdpi/images/installing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..33b54f1bfd5dd50d3bda55c89056d91bab5ba508 GIT binary patch literal 40946 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 R!f6ojxvK@%EK|1&`#+Tado%z5 literal 0 HcmV?d00001 diff --git a/res-hdpi/images/no_command_text.png b/res-hdpi/images/no_command_text.png new file mode 100644 index 0000000000000000000000000000000000000000..9927ecb6d0840448badca87dede5e9bd7b73b018 GIT binary patch literal 25013 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 e!w0s-a%>Dy`fqHlYi}d%8G= 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 ASO5S3 literal 0 HcmV?d00001 diff --git a/res-mdpi/images/error_text.png b/res-mdpi/images/error_text.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b44c9b33f569b468dc16a2d207764c30eb7b8b GIT binary patch literal 7202 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

    yCj`)`d+cpzzSqP4 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 HPvZXoqoJ~L literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/icon_error.png b/res-xxxhdpi/images/icon_error.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3d1ab228d4b037532434bd485841cc04e9365c GIT binary patch literal 19306 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 z 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 literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/installing_text.png b/res-xxxhdpi/images/installing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd093bf4fccca25bf72fa2ea08012f3c7fa1b79 GIT binary patch literal 184958 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

    SN->uH9^W0#f3VftmPtS3fMdNGGNFMc2lQymG+ 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 literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/no_command_text.png b/res-xxxhdpi/images/no_command_text.png new file mode 100644 index 0000000000000000000000000000000000000000..6354e6a99b44f76346ff9895afd03afbd033a472 GIT binary patch literal 109746 zcmaI82UJr}*FAib5JE?S^d`M`kX|B4?zt;PFYh6l`xifR;&OQ6=bM{G+iIFxX88aCG0F=5qnq~k1#sUD9 z1PS2{!0?;<8vs-lrmKm#5eiy6b@wuNJwJ$vUbj9{Ym(VYa=%HC_kNa&Av2iM zJ-7!v8NzQjM=ShhxPFm!it~x?QJBg>H2Jd4M61}bZQ$>`*%AKpjF|H@N~vdAW_p4z z{?A|Fo_q!dQ$3W0w8&a@k-1u_aufG;RLM@(nnQ82|9Tm!mwC6SY&H^kd)SCFoXY&O za{M;?SM;*TJ!0e^Y4KVe`_{!EC1gk!v5Iy@NC$E?&+sI*4f%zRxv3zNo)VHe<9IMY zp5=-4FcJdfd0cpr%aW8c#Pvzd+lvZnCfr>dnshS0ImWr^9{9sG2XcZ6~i6 zT>SyR2RbWXzH_EMYnGDhZFoJ%uuk0yvyO?C%Q)Ffc*NJSijd9NGC4*2f8UMP$Lrc;6kt)J|(!eYP3B=5-LV@hanO7#J3 zXl4CR%BB!Mp*|2Gx8MA5IDsCSnMp+Xh{Y*ot=|;6|I{YX7q9Y}4L!C(m|y8qBqJddmh2>H0!+AMJfaks?j1Mpzm2x)cIDW_gg;^q zlBaBgwOBj71Q+GNQUpJU-(lNj0fw!OMbjcs`>f9DoqNo(ct7S{5*kbPJP&Lo5KQ=N zgpn~@20VLn+;a?l9@dVTSjfH8-pzE~08T#2whKm{TN#UP8{$e9A!tsoN6bwP5Pn_* zDkRMb(Wh8$iW#YxjE;yMg%8O~L?P6OH*@yJ?y7=cUH=2n&Fg|kZL?d z{ticRv(U|_dt+xDF>mR6ZsHa+NJV`7M_zt)eJRq};J@#Be2s z7j0;Fu?tu=q3AbxiZ3Av!$7Tp%|%D-KoLVD7r+!kgo`8UFwJ!GzcPfb(9QNIp8{=o zBv+t@09!0?H2v~91ZA=M8^|`+!8E{;oJ_8ju$CXjYuVOz+oDw6EHWW-4~O;lK{Zx3 zqjlfO)t@}DEcUfIE~RV!zDVSk%@G>zZ}mq%(WebyecSDOT@AT!r|Yk~CxN`%`Z4w( z&Ij=A-%E~}hM{Age3hl71e6822xA7KEX4O{YL=Zzt!85L_g#}AThKLIY|5QY!G2HX z0ML5UgRh6@IP}*MxSY%S0@U&GVPz)z6B|8jfg)UIqy}zs{CrQAGT#Unf6?$a`fFzH zTT(Z*X0!Jq$8Q>@*6Ty$E_>C>Ukbr`b8Wx(^+x$beEur;%x=_=cKY_kKK5Aa^c|)z z8Jg+1@qgMwf}wQ&v)gsXeSXF<{P4e;O*6d;c~($6e9#AZZ=3psjN1!#CI9lNd1vs1 z`b@s_!oDK%^X%3#KdE^kmyH?iuhj&M+uq7PeJOOtx#9T@!<*yXydzPJe+p013c&cA-;lI8Q2Tk z@Qtcxatrkzxar{c`@E|}4e&FF6heOYKK20>74==7w*XG$Z4oSTm`!P^pD#>to$>P2DP_uIsvIgep%hi=y(PSp(9O=2`VZHcc9?KR z7ZVr)c7G}>gc0c*O*{hc&YTDddSE{>dqXhdU*d-TfLpm#=RnGwF2g|Nk;KLI^DP=l zZa4Boon57uJa}gKshwnV>_!<$?ua2aP|EcEZGHp__LSJWYKzK`-wGQ6N;{vyTobRe zzt#k5E^8T{W_MlnJZmP~FIGuh`eMRBuxQ~q9077Nfxn@Rm@1}S}4?|7P6B1`Zt{Um6^B8+DYf@}ZLc!TaN?6)4WnZt$b z!$LAD6Bfk+v=uTdbpSRg3iv>E<0f<(81)m~B_~={;BRl_UfOjjGJO_`HerWmMMR|aiXeQgY4#8uRxPscy2UH^^fg8B*U zrshtRNxS_bK4YwXP3@L}j6~KjG%BmF-(Y{WD~6tK30yIt-4hT2eRJFr@os<&!X@!X z6$W=+ay=zu3ZY}vOGiJygBxigwk2t?NbYH512!Jo{}I3*e>=G8QNC;99BF+}klX3Rido_7S zs$aQpL9u5a`0eSgLQF)yi24Dq%?sXdQnp-8go@U-;e;18?l*s2ibC=mAmlpn6PG0M z^O*USUX+~|Y=tL&(C7D^3>JC!4rAF$kyYOAQTPlgGK$cH-|Xl~K|D-U$y!;>8m7YL zOGbGg5Ko%CI{JCkj8evW!+cOIP1bRQaaE}|wmY%l{YoHSn`w8!6s_ejv3^ z9mYG<7DDGG991u=k@HST>wLJ|-YOq8V5gx=XpYi#v^_}v3LgY>KfQfwVRo4`E+Tx( z_vlOWE0CB@(4-jpd-%gd>Tp3!qGJQ~70)(Qjw;%KLKx_LjATVp`u`5hiB!<7-UqMp zwn+mV*2Y_#2>t?lg-1>BG8H@=ZB4NOQsxHbi{X|-_YcY6h2(6UsMvGd?1JpUi>n#% z`gJ7>^QautD{9IkH2HtfJAkhTzSfqM>u0ah!pyRTxI{YVU3v=0?BG-O>J%CrdD1#J zvb3r^FBM%#@OxS*WsG958-N#S)W`M9A98`=&u@n{REBbLKWYazDZcHxy!U`juCw?~ zHS=awU5TS&TqjA&b3Kz40TUjVQTT2qa87y3@GDipp5Jdaywu~*FJMSN$T&1sY24gE zANv+C(#N_ZZH!;rR#|k-v9&lrCt2^4jG-ZjvKUq=Doyt3x?q?5f8eup!-`VeoWA$-)!V)ulf) zLFXD_ml35PEndw6NQ>jePF(`ee&%iK2Yd-Le1y>7W{~?1n;AOGA@@yIevB4}*uq!% zB=Q{Uhg+}x7hYo~bZq|@`!Rf)1=pR~^VojIQ8hMj@SVz*oc+|{h0FU8U`hGto!%hQ zRhfeBX29+jY6}lyn=)>F_R8r^JWN;?!u;*@;;*^SNYiy5Z|m^^LW`d&YQT``x9uLn z2ec(?P=}dkj735&q*BK`J=0}FZ;`Pq$8gu^&7@g^HCl_x#>|f92%X&#SN1y%L${!iiA! z&>n`aDa@4A+i5IE_z*d-$q5PZIRmcbz!vtW@3$EVYp#NkH%O8F9c~7gb(UIJ-n>5` zHU}I^eXbYGh;Z1$uP+Bci5O->I5)kX_92`d9!V_2|1a8?U zA%2Sy1sx+doPv7+J?B*OFktqhv|0;`r9iY&thrQwiu#KI{}o}(=^!_w4b1CuS9xrs zRDY0q2jN{&^pPn=CviJxbU*T1zVizD=1=)OR+D`J;!XI;A{1+ zZhR6SaKQQIopnd3Z*fS5penC~0Eo^+D4K;BBtV<#975uDn>+2(H3!to+a9@^yCY9N z^mkX$C-7b!rjYP)LKvWY7b4A(LEskzoFxp4(s9H;Oy9WA@2Y$-xKr7|#myp(}YY}Opq zO7douWZLckLidyBiCcK+CsDvx*lg#@3#qbqDnXbRfseuqfI>4G22iw#O z%Kw1f$&0UNFN*w5MWj~!7W}a+t!G8#eLywo>@&F@YUSx$8xyQi!!g_zQYM`AV(Og( zS{|<%7pb4`4r~JQzpy$(VBJ*Cla6jhgjN7`hpmt$CcMWW#rlwgUpxyTC7z zg&(zFJyCye6Q>W~;zrXoff37SU-8L8-%}5Hr>`|Sj^eI- z=X|tmB&o}SOf$?j%@N|7gDQ3so$yG$irazTfR%sb@26zp8MBg`y$9c9%2VG z>%fWXTIYf7hp~AV#w;D9FI)&+cEE<(hu*6>$&%uYAIR)uZ9KcAAo3W#Sp~yK>XtCw zA0j&Uc^mQMJAE(J@XBrDAhE>8vG*}Y*+%qy@X7HWv# zpIErXxv2NV)G?6Mq5j||vFiI-qDX#Di{03$az;gY?#Ar!PvmOiIgoXs@ zRtIXamAFpLbR4I#L5U|ky-`@0LX%2vu=KGdr_~)xAkX;ruVIm zR*UoYu4aKW-UZ`IH0!`ax(_DED%)&;x~~D7ynuE{pyA;o;g4PR9j2xe;~TN**0C>u z)UxrjgalKt^1kn^XSpme?!Bi=eQ55?D1vYo>)VYRQj z{#f0+)>Sz^A3`K&s{={Fy3OU<>KQsKx`7R7AzH#B>uchsP(}EKf9(2`^1mqG}S)3uX&z zDt2dhuzA*GF=P8Nt#~Nu-ozIR10Nlt-r*iihNRyEsfcTjd~AbQGHZzPJ8npRcytyy z%-56mI_x!fijwCpDINTsBUj8!)JK(<^{hn>{0$l6A9;2jCi~B}v2krr8&V@Qc*T=@ zhSan-cT`1bewXnts3hLm-S_$Q^@ZNg$vbgc9-Y<;g-=tFC4*Ar0uMq_`R?Uf!8Z87 z8Rf$~qUz%Xo8ID2VA6)uo4akA3voG`q|G6hidd>({Hn)ui)!a~;pH`3cKZDtpW6CH z`qemQn(t-A-!6#gn49sJ4arWiJ~{j`1wp-T7H5n4%D4D<-)?mioTbC#>Ykot6}w&V zvux!t$DDCyH|mGsBf9&wsp4yoc4pRRm2M43|H(2uv0(2UUtVv$cXq02+9;2=$GL`) zJi^eCzMj8|Q@N5h_H;j{#iCh{tKz98-x0wz8#^HjFNWCVB>EBKT*?@OPkw>qIUBV& z%AKFeD0wl+*2Wom#QKCW-ljs%m)c({&E`0rg(8nV^JO2;w`iIW74ll-KXr-0>SkjE z!vxeMeVWQULN0fmtw}{xB}l{Hk;zTMKbptdzH#mMD$f}QP`|cKylxtpG+4T1l;d7$ z)}h#w7G8W=y~-2_R?O+IDtk;t4UQD07OYM&xmVj$waqh~o0PL_A~IgWl%VFtmDr&^ zp_d;umijnzqqD_ltshoH1(*m@`<_GMikxeEL>fujS$L-#jzi@hym$lwevn#s0Ib=Q z+B1Bb)(HlQw)bDNLH^8s(mx(?`s07CB7Sm|dg9}Edw_sO{Q#X5c}1p?K>>ZQnmWW! zeZXRxh`6EK%0fw^<(lThCxW&v+^=iiCzn=An3fHLnVNUj;rX^h;1b%aqx?U_FsB8Y znP1~iuWu=gX9+fDh5y{Xq<((?tJEXvrA0J+bU~y~4Q|xvxSqCCeCX;Zi)jzPSAAyDP1yp2|2e zfA@0Y6GJH$m9V9gy~hjfGrykR2y$;W>TNlAXsRc;7jrxjvovRX7IXc-`OJSO2`YXe zi0m#>0))fE3Uq_+zM^f?U?_+Ei+HrE6pgQ5^YkOuzT0d`diX6SW(Vkz( zG&G*ju-ZFBHso4RNMC*emkr zgcfIQV1}da#S&Gw8DjCe*1HwPfDC_sOV)`g_;*Ait2W^0P^iwz}BEDK&73p*hs$FP6)2QfncqyZ2kbq?jJ!A|+N& z#c1$YQhyr5R+yp$+syhg)(Xgd^cBZcV>Y{)k<=O}_QA^2NVv_yLdQh8+lOKgE=ee&DNAjNS*Gl{ejq$sz+ zbNVLNeBB5nRhj9?cji+C%v*AK`dJ?4X2Xq7-v6Wn7RYxeB$F0$DK?X?W8K*>J>gqZ z6zReVv}G}BfDlrQ^oR&Ak=+`!%t&fQv^g|JSmD5RQ%#A3vI8BEM3Ddjs$OZZNr54! zN8|#tX}maXOukqGRP4$e};MkYUz6y%h&z4ld z%y4PY;j%7~>d#h5*u`)gb$kJxIFog<2*4Z3)tlY1*I=O&y)7)5!=(E!d{nY-SuW9P zV_T8J$`>=3rn2&qBbf$LF2xef@M5w(w-)9=yCU=`wgbBXBk+fxdp5+;3>>!?i1z#H z?tTAr>#bxzX{(D#Xx``8j5@UF&l@{e+;msK>^+Q*6yci+N%2=Uk{uU7R7sO}Fn8^S ziN#Z#h&Eb$6RLL(uU-kjCg|Mx2~n9xSPxYEL|_BJI7ynVPmD4sduy0s>^*GadsI#r za#4!!33VuMP_dGBo+CCF`IgY0u=5dE7Eth!uR?0i^Hh2|y3^nvwWi3OaYTe#Qh5Iz z>f6Ig>WL|b6mC?u%kQIskjdGvf(wL84M9HML|0!-6fc7`zW$s+Ui8azI!L?9uQB5^ za4G}uOPIX4%XRe-e7GXAS@SuK{H3;`NMxs>`C-;G>H}3}w@Si(B?;%ms1jU)7@eSy z*p=S$Ss1q20PMk6WJf+0Po+q9BgqSVM5{3|36_`ZyBudny=fDQwFrC_c4^lIIib09 z3vKZBf=oCGAxh=0IuUs*lo!AV z!GU&tu>IsWUfR8>wLdnbeNbh3^Ql*oUE{ux1G8(N8%4cLX#6<)p*2-?_rj6ByaLic z(T&=%C;wh>3J87s)3-Kc#MOK>>?KJDl)a%K{Ei$(aLW_gmdSIagTsxKqv<>3k3EtF zK2LY_oGAMvYmfrYiuvLx^I#_`4lTr0ex*T@!*{g|%{CAJL|=(cn~V+buPD6-%u+i~ zGjPr!jb0KRM7~FpVaSy^RBuZYyzpMR2eNo^&_mw8HW@2*xHYZ1cHF_Y6_8IgJxAD& zoZQH*Fj`D@u8^uy8z|M%_>>fbmzJu5qg{#*lxIl%A{NjS06O};Qx|ZV;OBH3E4^!J zcg9+?s>f)BV(W)1e&TX7!+|Iyw`zGoGD1mA{IbT+TBA7T5FJb`dz=k})U&xkkrm<=p~Vq0)=yCK5iTk{ zX23|RK!jgD^Z=-f%>LsSbxVd!q<}6K6wJ4)rf0ovKPQ)15gMK!w zP$(F+Q&}xUX(jmAQPHL1c9FXw9Aux{9k$*!KKPG}Pxdy);eOjWXAH;xojSj0x~nGT zV8YyFMn0#MW$(9u`P9nMWcH?ZbtZ*HEG*auRy~$_b>K{=^aDcp9>(zHPC?DeL8)izlGn2T-g`nY`KqAzltcVDqt8Ck)$w4>+!M!R?izGFTy!X^o<+A)cT`1IPF>28^3BsBt1=7#lcy6 zMBUzmYxn#AK;tA3sac}A?DH>tg>t$VkxFkxf0r*l@X?>~AFx|5Zm{EY z2t3^g2iwvYV&uhGcisRa5w|Uwm3Jdv8F2B=<-IG(^(u)?iPr}%C#C&nd0%_?EltpK z^UQ6wgVtKHOD`gqsIUTee1e06>HAuKTMQ77Cv)HieLnkzJbub>0n%93UFjb{y09w0 zWXtST7+bW5mI|MDzouX*74E5lSmS?yZjgEE8qWP-al~5*Xy$o*pFo##=yO%BENS>4 z3sa^z@2YNrTRdv)Dw&}C>PAcE{}0gXJz^p<>RqYkug_trUN1&S- znkG~xU5H3KH(~+G{3okZ`neF$ABC-a2$lv zeR^Xo?b9qM)a=@|?`|nokI}+_l2crSx_tqW2qU;4g^5^-=Ou%iaXQi*P@pmH_#ZTX z`BDb|Lg}*(mJ1oem1;9jT%*%62(&uNgX#q3HA;xqND9Bu(-VfWAW+|zd?zD%s8mW! zY!A05GMIFq8)v}q0nCuj;hq4-WYhS2-zldDJ|sQiw!Z#R2ld8nU{eKWlq2y~y*lqJ z=w^mX3#H7bpn660HHtX^^3?G;qWo{Dyi2p|gJj?_kR!yY8IbEb(m}wjyJY_+@t-D*TlEl#D&)EHU1irAUiKHNWp)U% z5^p<_wS_!Zv&d3pn_qo)73OCaX$356CGp~$L3UXZvg)t%zJg^lT<}CS-Is$Pn~4Il zU;2SWo^DUzZCnV&1Wy^7oGY5j7Dy?3z&QgddL*L(#j=`XyTCK>STi=vDUsw`3X0V8 z9N2+HoRnys59~Y7^i`zz$8_>K(GiMr&;}W)UeT^&1Q4uC@*)Le^stwV->)~+*j3Sz ze*Bv#>Ct7h37^})h?I1rq6#LEgMP1zdUFr7@AY(ysJ9q-tU{{y5?WN*tz8h?hO3Yx z@k~+PvX%xyIdVxm0Rc)QJJQXtZuAR~-v)hGM~N;fhZ|tv!9ObCG40d7`WCcox@B!i zYI0>U8YEzlE}2vs493uyV{L53R5|{DY%)oNKpx{s!=sOYX5Ij-QU?bACBDagQ?As5 zpb&U%6}faF5!my6DBSf7XgaME6yDjQPSyrq(K<~B@T;GfGKk-rj3sN{dPRW)g+%pk z{OABEL>`kgv;l5{qGH|9GHmO=Pl2}88P)XD2r$X z_G@2Vbuf1f`rrx39WBMf8ODT?j0X)<1gy#FjWcS$|8B>0Z3)r8LN(B?mQ2iswu?a~ z9oxjU2E(F1z%;FpT?W6ZS~S$x6!SH$Vo`uLqTnOLGdOwC!M%;g@MJXa&Mkh#BPC6g zMMC^EG4a!E)wf=+`<8|5P5f{Lfq@4OUoJXutUgO@doOUx_u7nL z-~T;E(AocU{DU>8rDuB=NW<{|^0ER!TihUBX(TRoz+KO|89bNVBd)%9Eq^MjuL?HQ zcO5Nt{iouK$G)Iy%pOtxaaMyZ6jvl5t9AmOrF}}!Hk>ESU*1Kns%!}YZ5)nJy%|8@ z%o=4!NMFdEaO8&6jG@1dMFD=d%f#`EU8!L=7aII8vDWrdtA7sI()WQWm%3y75_@$12%h$iO`X8ldTb$zD|wh;%rDn5AYFGF}zod z%a%SSGYpHTqaAUDy0_3{;>f^f@!xh z!B7+O)*;EXo+b!Cb~s+>z-79l8=&N8J@A-Ji*z$boGvp;2 zqL2-U@xnQbxaYl}Q9c&ik z1S#6+7nKF>a!_YFItn<16K}dS-)&(LVaByq0)E3n_&q9zD^uaL%)62M4X^`C11Tkt zvf+fdUDq-cZ^+PP+z!+fR8Dwky<@T%zr&y`K$^mADWIAbc5OqU57-bQgl64b6Tsil0 z-4&B5q+0Rpr(E$Z(8T)(h+Dc?IwaetCr|FfdGQ164x#t=_})iSoA7v?>HGr3bRPT* zu-&eSYNdd+VtV&Ik9b&^c04RQcEyoEC~d8>puON z#)Ve7E&^h`R7wEYJ2x#%u43Mv)!G5S_hU9_ahWd>`jlAq;GUI+Qt%1=2R;fxYGB!% zaM~>u+$`%3^`Z~t5!@Wx`;%pveX(Rw4pYLag5Lmz1PmZ*>mY+kl3wpkDEw}Won(xV z7G*y$Yi92g7TK1x!UHu{xpejDK%}&7WLqqYBvCU9?*6y98X+MMkk)v29qETDJG9=I zasbH9C_TyRxN?SwQIrB)UUq4>4X5%s5UBlpX;%n2BT3|az(cs42I7=b{))qSS#f!} z9!&yJ(^&a|waYIxO_NUto>1)SQXpKxCvr9Du9Q2p33|wV%|VU|TMTKw+cL>~KuUTU zeD@1R<#QC8fLPvu{YSc8e8I~?iAac_E@2WhFSC>A|3F&$|I`?f_J5{~l+H#ov?3u~ zo=5D`(WXu3Fvt2r z+8HCT6>LaX*CxY*Vu-w;2fHA#5D#3*Pt;MBPJJgU&WIJPYWWko(U%t|_FyB>EyGX@ z?VGX3cM=?qv@+f4F%qW`%g|BAG{dvpoBWtJYtqr(d8nMZSaR)H;v_+QFxqf|#A+K5 zs*;oRxg#!dk~bh7{$cBhrW4Fa&m{lL`*5TqsZfdveo)<$GF>SQ+suPEN4{@~%TYvr z$SGvp=f|iLhT+AvX^vBjCE0IN8i>jO>oW_@6SNW7Z9v(_Pc;1j<|H9-5Wqz#ccO1m zKvMTi<@^C$!OO6vd*ZuJI{!-(LAVG0&)(y|5G|6QNy4I-0iWdS|A0Kx;79hR-w-#$ zhYd;mTF9E9Q*&$9zy|xO;iY%&R92`Q)_(!JTf82VWWO&an8b}27xlFT1z1dTqJxXOIhwru zA&}ejg$Mk^)rkJbC*MK2u62Jx6CPv%D0tIK(A}>7FM-RIH!=eKiHcXi!MBM;8&(63 z>pss$?-^!P5Q(aRr|ZAP6RQ}G(W7sjXWDsmwt$Kz&|j77F(Bn}j@W4l8fM5c@Y0HtpmU}k zkG%Kh%D!%X|KF0rqw~{Mwe5}b;q!Fu|Ef>W6GXDkq>K;;N$as-2i=UmBZ;er2|qG! zQS#Zu)zsx9=zG%4yFpm=|GtvJUCJ1H_F98o+t=CWaePlt#fraT+s1EWnnS+dN!Djk z8l|31&0;at4=jycXViJsJBdUTf+|PX+1Fdb{4xyk6jnoR(?(}vmXU^$OEYS3i`Qe1 z+6Ux^Wt^6BLcXh{o_&A+8or}N|8qP=MNB0d_W04DW!1Uq2wFF1E$U!z{Zi)s@z&}z z*L_Z78?#P`+WuFlqe`*!1(rRq*ERqQYqU4F{Vc z0)=#(>gnV>QGCNvSZ{g$>^Y)V9?#eFT05@uBQCnJTgKooDYlDB@mI2OC1k7@Q*#Sb zW7++moR#{LyP}!p;UwFUH0SwTlht{YRk@Z|1K_At@4M3Ut1E

    !48lkqll4+VEj&u46-vk1RC6fazfw%2r6tk=jGy1fV5@QIt|du0_7s*jg|;b^(P0}kTKs&r3?iiJwpwgs;!W=aBR)k1tC3?od)6>KP@`epK0r%%C2gB5@jd)?ljGW)L+=InUeYa zKY`%b-9dHx-OoS% zCa9q{BID-*?%3009^7AuIRXjd)x|K4*1c7CeRxp42b5YH%k`2;MIh(t7DA};`k6?m zhI*#tb35>e7AQgb;|2t|wpDWYHwa@sy-d>=$Cg|Hl>-4)XHjm}99#z0p)`qf1R4v!0W?_|GlW42*vbb|0}lmBiui#JGhD=ozVRX0 zFxQiI2K)e+W0;K%(|lpQ&H0=b%82-Y>!5G^a+oEX31@;Y614h@tH$9zo10M<^6x+oO_`W)ZoL6#7CD9 zHV76~ntvnA^-fll(>d}(yNzqL!FL~U;t{y4e@{?~eU_0(P(sBB5>xx>3{XKzm?(}8 zufAV0*z+emN+M`PVOl)Lw$WYeGta6xRhdS_1}o zftsomXJgYVIUiK-BE)~g{BqZ9iyc#nRxbA0q&kY7c$4Oxae=N3qf85Avn_{0f=<-z^GDi=?of^yvHJa5+&o-3LrbSw_g{S`sGts<6)b#!h&KI?8JT|r5@OTnce$` zRbqgZUb6lafVYxDA;kX!sUcxsICA>|iaGWen<9f9@o%o}_)W(#mbPo%*36N$fv_7%tWfl~&orV+`zNjM z3EYGOR1fd`M+CR$!(Wh0(^WNXU3_;ZcxGr2oZX)ZTL@U zzqqF1H|U%6n9ongPU@I&vZfx<^2BvFvI;oXL2QKgHc2sI`ERq@Zq!+x%rZi4`kjW% zgxrZH)}D#Gl&f`alri9%25j{@j9;obQ<;053-HaBIvJUJ%u^fMeVX+3N>?zh7%0|` z7CGTuzFsKsSIl>B_$%*)iZEup-=_S()eB4|YY$y!jZ!hsDgXfrX%fqe1X}Gv<|&mr zNT!D}s(HWBb>U1P?0FrEiP^+OrQcFB+DXqK?)p)O%n3%CI_@iGpil5uvI*+cnjviVtA~*f z#j>xy{hXX*`7Jh*(#nt*zptXMv5;c#zIB@)QwWDp`&pta%t?-Z(V+QPX>4?ZTVvY} zv^}trqv+fqNa`}j;Gm%-t`CcLO(8C}qz>KheMTD2f)QrkP5FYZ1upBn{4poD+o~0@ zx;>%APAspks%7ZD{F3R=+Bd`B1@&rO~g@`(bul= z{7~8qw6~Se#q#w3Q9TI{>1HI9+AN!jT_>rOK4l0Uwe0y56GSK;DrCn+7vwpQ-5q)3 z^%#ANHHdcUJFPW#803{4Ab8DEjO@xXA#ppg9^*%7tf(Zh+miR9Z%(1cdyWu=!lko+_AS8q~Ty4@eDC za-)(XDowC+66VMK?#OIj)~b{gTfzro0EILVpHicAZR6sYQ_Cki-B@J)drd-v(5A%+4 zIk=VsY2TqHc-`xEBAowJX=#!xGU3Skg_(TB9z+W+l8w7++4L+E!U`__uGUbK!YeNS zBvzZqzCSIln==mo{XtC`Gb6LApRa9I$`r;4lf@qna5Z)l*o`C$XIvuX_qsr$7RM;T zyU%|-6`|iArXaZayedFqcYHpj6%{aB-kq3-(n6))Cl(!60wyXQH;4SNBT$>BmK)DA z>?jran45m@fKkF4gbb%ni#x@U6xQXUx4ow_gp#nP6C!MZ5U2z5E1%*>$)TIDX553W z9@xINxG5k;PaU%P*?_p1JoK+y7g2?kKtWx#Umi%VnnHhd;%emX=DLpNf++^N5HgP)NSf58*qHl3vdXt#qMGxy&lAtLb z^$H7|Ykp-y?BdfK>5!t^Qre=>1an^X3Vx)glyFo)!{+BGcgG)wXp=0mqf6~9P8MJX zykY$&n|$uW0{-)NJHJ&OLLVuoM7BsLhfr_}I|oeQ3I=GIgSKrkrwPhgX5SPlQ9mCV z)X;2%=kv?p;mBv(epYT7lOA6rsU;rsWipqU{UoJSq{h8ceooVwKDl}esbRqp;FWub zKt<0%WO(}8-}HcFdQZv`YAWDer(Wd{N}OQ+h76u}2DuoPzfl5fxw2FAj~P6fAfe#x zJt;%jg9OqqG1=eRmuItW-seqXEj@|plY(9GvRHNJ3V&1A=Gwi;>LxTx1Gmr4TLPDO z(Qv{^EwjwONd9JD5m2jBf4>GhFt`T#!1efESuY_JX~Axotzd{!B{SjVoaMl5yxZCK zoJLq1)2@FcrdZqPYvD%rPcPYH>B8VlOzrGNAX}~E?C?m@m#Kg0V;YF zGHp!T=quS0oMpu8w(35h8bZ4eQg|Q|bibtQqI#7O@X{Js8R6}AWWYt)TmwW@6W<+I z4BYthsMC;2%s;gC-28i z%#FA=C7+(NGi@{zawNwP(NS>Ek^hsvI$dU>XE4xdT3mB}xdAgGUejc~;EW(BG{cbkr!Jn?I ztmtiJw7|z`P?wK~@Ht#01s9pwMR0Ejo4YxV#yd9=jr8 zGZ+j3v(mlrcZ;()6>X+;4qp5a=>|*;!nV-dM;ynW!A!2Ip~eYr8#RVgk_nos zW^-|((l>4Fvg4n>t8fud2^GZw{3#(x_G#y%DR4}yL-a)qXNL;2_ll8Fz)Q{0v?nwF z=c_UOE;#qRvwoHdZOVJ?>b{XM{0s^Xs_-xTH` zNvx<#hkCtf#M_igVlA_aYU!pbHsW@Uo|YXX_sux3c|@)i%v;4!p26=11!>~vstlwk zrubH@FkBXI46=iN2u2!rFEj1r;#DQJhMEap`l9|Bw{d>wfS*pBQ9Nu$6mg#u5n;%0 zWqj8Um`k1)L^kvOT^g)IvKWvsb_Z9+_$qe(@>VO!W_*f1GnjeVl`siY>j|!{`aMtw zdAIN2gTqdy0sra%fWX3UoQRZ527&jz;5Qb;#c>o^s4e_cOVJY&oGs}AD=u==uIMeN z9KY8Xdf68n@L~7n!YFW${Ir>yQ06ENi;8KF411cHj(!`vy5OqtXdaCD%EOd95vxtJ zc>zFv*4l}j*l;65*8TR>@FXea(N&yc!){V0d3CvDMC4`k@_^@Lg}$BY%wYURo9v~n z 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 literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/stage_empty.png b/res-xxxhdpi/images/stage_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..251ec19699ff537238e73c77d2c74164d210eba9 GIT binary patch literal 322 zcmV-I0lof-P) z33IU0c82o6b`c}S2y};gR$LmEq>gp(LjgmqF9s-f)CJm@q=n0lx<*4WM&P=m8mMEE z8k+Yd3da=TE0U}zrJ`XpZK-H}#S_y!WX-rx3?ze9i~s-t07*qoM6N<$f_lY@HUIzs literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/stage_fill.png b/res-xxxhdpi/images/stage_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab79e862825cc24bfb41a9915afcc3f8dcabe92 GIT binary patch literal 258 zcmV+d0sa1oP)3dQn@EfmKq?t29|7;t^y zk%3YIfk9#kgdg}~$VUd+1=5s|)`v7$q>UrP0vSor;CuKv7kJ0j6DG}uV*mgE07*qo IM6N<$f=|0=$N&HU literal 0 HcmV?d00001 diff --git a/res/images/erasing_text.png b/res/images/erasing_text.png deleted file mode 100644 index 441768a0c0001316b6bb305b4b88ecc3e0d181b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31491 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 BXh{G7 diff --git a/res/images/error_text.png b/res/images/error_text.png deleted file mode 100644 index 4ac6391ff1b14b3150d57896547fc7ab5a857a86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17504 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 JPDHLkV1iSxu2=v7 diff --git a/res/images/installing_text.png b/res/images/installing_text.png deleted file mode 100644 index e1ac819e6bbc5dec056adc1b9f57379d7caee0a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66592 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 diff --git a/res/images/no_command_text.png b/res/images/no_command_text.png deleted file mode 100644 index a688f0935b8b361fa62274bb2a0f8a2cf648c5b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40632 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 diff --git a/res/images/progress_empty.png b/res/images/progress_empty.png deleted file mode 100644 index 72581832c2d3e429012f7b2506f15f6165a0c81c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n diff --git a/res/images/progress_fill.png b/res/images/progress_fill.png deleted file mode 100644 index becf87bdfe8cc31f44b77cd81d9305cf04252e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmV;F0c-w=P)7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000 y+2 && count < text_rows; ty -= char_height, ++count) { - gr_text(4, ty, text[row], 0); + gr_text(kTextXOffset, ty+kTextYOffset, text[row], 0); --row; if (row < 0) row = text_rows-1; } @@ -350,11 +347,11 @@ void ScreenRecoveryUI::Init() gr_font_size(&char_width, &char_height); text_col = text_row = 0; - text_rows = gr_fb_height() / char_height; + text_rows = (gr_fb_height() - 2 * kTextYOffset) / char_height; if (text_rows > kMaxRows) text_rows = kMaxRows; text_top = 1; - text_cols = gr_fb_width() / char_width; + text_cols = (gr_fb_width() - 2 * kTextXOffset) / char_width; if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1; backgroundIcon[NONE] = NULL; diff --git a/screen_ui.h b/screen_ui.h index 92e4795b..2e01acda 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -87,6 +87,9 @@ class ScreenRecoveryUI : public RecoveryUI { static const int kMaxCols = 96; static const int kMaxRows = 96; + static const int kTextXOffset = 8; + static const int kTextYOffset = 4; + // Log text overlay, displayed when a magic key is pressed char text[kMaxRows][kMaxCols]; int text_cols, text_rows; From 85ef47dd84f5bbf3fa5804f3f3a240ef736818e6 Mon Sep 17 00:00:00 2001 From: Sasha Levitskiy Date: Thu, 10 Apr 2014 17:11:34 -0700 Subject: [PATCH 063/110] Change filesystem add entry API call. Needs fs_mgr matching change from: Icf23e659265d71d5226d527c2b40cfbc132320ee Change-Id: I9adb470b04e4301989d128c9c3097b21b4dea431 Signed-off-by: Sasha Levitskiy --- roots.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roots.cpp b/roots.cpp index 113dba1b..cfe13382 100644 --- a/roots.cpp +++ b/roots.cpp @@ -44,7 +44,7 @@ void load_volume_table() return; } - ret = fs_mgr_add_entry(fstab, "/tmp", "ramdisk", "ramdisk", 0); + ret = fs_mgr_add_entry(fstab, "/tmp", "ramdisk", "ramdisk"); if (ret < 0 ) { LOGE("failed to add /tmp entry to fstab\n"); fs_mgr_free_fstab(fstab); From 0e22af658c89fb53ab1215a3538bbaf10d733ad9 Mon Sep 17 00:00:00 2001 From: Benoit Goby Date: Wed, 19 Feb 2014 17:41:02 -0800 Subject: [PATCH 064/110] recovery: Fix adb with linux 3.10 In kernel 3.10, f_adb has been removed and adbd can use functionfs instead. Mount functionfs on boot for adbd. On older kernels, mount will fail silently and adbd will revert to f_adb. Bug: 14160609 Change-Id: I5db57aaf35b35859ea88c7d0e0661d8c553e5811 --- etc/init.rc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/init.rc b/etc/init.rc index 159747e2..6e0595b4 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -28,9 +28,15 @@ on init chown root shell /tmp chmod 0775 /tmp +on fs + mkdir /dev/usb-ffs 0770 shell shell + mkdir /dev/usb-ffs/adb 0770 shell shell + mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000 + write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct D001 + write /sys/class/android_usb/android0/f_ffs/aliases adb write /sys/class/android_usb/android0/functions adb write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer} write /sys/class/android_usb/android0/iProduct ${ro.product.model} From 41909ddefbb57a9ce3c417341c1f83261e482046 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Fri, 25 Apr 2014 10:39:50 -0700 Subject: [PATCH 065/110] recovery: minui: add adf backend Change-Id: I1ad97b5b62bddbcb1104fa0b4e54415b793a4194 Signed-off-by: Greg Hackmann --- CleanSpec.mk | 1 + minui/Android.mk | 5 +- minui/graphics.c | 18 +++- minui/graphics.h | 1 + minui/graphics_adf.c | 247 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 267 insertions(+), 5 deletions(-) create mode 100644 minui/graphics_adf.c diff --git a/CleanSpec.mk b/CleanSpec.mk index ecf89ae7..e2d97d42 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -48,3 +48,4 @@ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/recovery_intermediates) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libminui_intermediates/import_includes) diff --git a/minui/Android.mk b/minui/Android.mk index 5cc84ac7..df4aac16 100644 --- a/minui/Android.mk +++ b/minui/Android.mk @@ -1,12 +1,15 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_SRC_FILES := graphics.c graphics_fbdev.c events.c resources.c +LOCAL_SRC_FILES := graphics.c graphics_adf.c graphics_fbdev.c events.c \ + resources.c LOCAL_C_INCLUDES +=\ external/libpng\ external/zlib +LOCAL_WHOLE_STATIC_LIBRARIES += libadf + LOCAL_MODULE := libminui # This used to compare against values in double-quotes (which are just diff --git a/minui/graphics.c b/minui/graphics.c index 32b3361e..6049d85c 100644 --- a/minui/graphics.c +++ b/minui/graphics.c @@ -369,10 +369,20 @@ int gr_init(void) return -1; } - gr_backend = open_fbdev(); - gr_draw = gr_backend->init(gr_backend); - if (gr_draw == NULL) { - return -1; + gr_backend = open_adf(); + if (gr_backend) { + gr_draw = gr_backend->init(gr_backend); + if (!gr_draw) { + gr_backend->exit(gr_backend); + } + } + + if (!gr_draw) { + gr_backend = open_fbdev(); + gr_draw = gr_backend->init(gr_backend); + if (gr_draw == NULL) { + return -1; + } } overscan_offset_x = gr_draw->width * overscan_percent / 100; diff --git a/minui/graphics.h b/minui/graphics.h index 94b89a55..993e986e 100644 --- a/minui/graphics.h +++ b/minui/graphics.h @@ -41,6 +41,7 @@ typedef struct minui_backend { } minui_backend; minui_backend* open_fbdev(); +minui_backend* open_adf(); #ifdef __cplusplus } diff --git a/minui/graphics_adf.c b/minui/graphics_adf.c new file mode 100644 index 00000000..ac6d64e9 --- /dev/null +++ b/minui/graphics_adf.c @@ -0,0 +1,247 @@ +/* + * Copyright (C) 2014 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. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "graphics.h" + +struct adf_surface_pdata { + GRSurface base; + int fd; + __u32 offset; + __u32 pitch; +}; + +struct adf_pdata { + minui_backend base; + int intf_fd; + adf_id_t eng_id; + __u32 format; + + unsigned int current_surface; + unsigned int n_surfaces; + struct adf_surface_pdata surfaces[2]; +}; + +static gr_surface adf_flip(struct minui_backend *backend); +static void adf_blank(struct minui_backend *backend, bool blank); + +static int adf_surface_init(struct adf_pdata *pdata, + struct drm_mode_modeinfo *mode, struct adf_surface_pdata *surf) +{ + memset(surf, 0, sizeof(*surf)); + + surf->fd = adf_interface_simple_buffer_alloc(pdata->intf_fd, mode->hdisplay, + mode->vdisplay, pdata->format, &surf->offset, &surf->pitch); + if (surf->fd < 0) + return surf->fd; + + surf->base.width = mode->hdisplay; + surf->base.height = mode->vdisplay; + surf->base.row_bytes = surf->pitch; + surf->base.pixel_bytes = (pdata->format == DRM_FORMAT_RGB565) ? 2 : 4; + + surf->base.data = mmap(NULL, surf->pitch * surf->base.height, PROT_WRITE, + MAP_SHARED, surf->fd, surf->offset); + if (surf->base.data == MAP_FAILED) { + close(surf->fd); + return -errno; + } + + return 0; +} + +static int adf_interface_init(struct adf_pdata *pdata) +{ + struct adf_interface_data intf_data; + int ret = 0; + int err; + + err = adf_get_interface_data(pdata->intf_fd, &intf_data); + if (err < 0) + return err; + + err = adf_surface_init(pdata, &intf_data.current_mode, &pdata->surfaces[0]); + if (err < 0) { + fprintf(stderr, "allocating surface 0 failed: %s\n", strerror(-err)); + ret = err; + goto done; + } + + err = adf_surface_init(pdata, &intf_data.current_mode, + &pdata->surfaces[1]); + if (err < 0) { + fprintf(stderr, "allocating surface 1 failed: %s\n", strerror(-err)); + memset(&pdata->surfaces[1], 0, sizeof(pdata->surfaces[1])); + pdata->n_surfaces = 1; + } else { + pdata->n_surfaces = 2; + } + +done: + adf_free_interface_data(&intf_data); + return ret; +} + +static int adf_device_init(struct adf_pdata *pdata, struct adf_device *dev) +{ + adf_id_t intf_id; + int intf_fd; + int err; + + err = adf_find_simple_post_configuration(dev, &pdata->format, 1, &intf_id, + &pdata->eng_id); + if (err < 0) + return err; + + err = adf_device_attach(dev, pdata->eng_id, intf_id); + if (err < 0 && err != -EALREADY) + return err; + + pdata->intf_fd = adf_interface_open(dev, intf_id, O_RDWR); + if (pdata->intf_fd < 0) + return pdata->intf_fd; + + err = adf_interface_init(pdata); + if (err < 0) { + close(pdata->intf_fd); + pdata->intf_fd = -1; + } + + return err; +} + +static gr_surface adf_init(minui_backend *backend) +{ + struct adf_pdata *pdata = (struct adf_pdata *)backend; + adf_id_t *dev_ids = NULL; + ssize_t n_dev_ids, i; + gr_surface ret; + +#if defined(RECOVERY_BGRA) + pdata->format = DRM_FORMAT_BGRA8888; +#elif defined(RECOVERY_RGBX) + pdata->format = DRM_FORMAT_RGBX8888; +#else + pdata->format = DRM_FORMAT_RGB565; +#endif + + n_dev_ids = adf_devices(&dev_ids); + if (n_dev_ids == 0) { + return NULL; + } else if (n_dev_ids < 0) { + fprintf(stderr, "enumerating adf devices failed: %s\n", + strerror(-n_dev_ids)); + return NULL; + } + + pdata->intf_fd = -1; + + for (i = 0; i < n_dev_ids && pdata->intf_fd < 0; i++) { + struct adf_device dev; + + int err = adf_device_open(dev_ids[i], O_RDWR, &dev); + if (err < 0) { + fprintf(stderr, "opening adf device %u failed: %s\n", dev_ids[i], + strerror(-err)); + continue; + } + + err = adf_device_init(pdata, &dev); + if (err < 0) + fprintf(stderr, "initializing adf device %u failed: %s\n", + dev_ids[i], strerror(-err)); + + adf_device_close(&dev); + } + + free(dev_ids); + + if (pdata->intf_fd < 0) + return NULL; + + ret = adf_flip(backend); + + adf_blank(backend, true); + adf_blank(backend, false); + + return ret; +} + +static gr_surface adf_flip(struct minui_backend *backend) +{ + struct adf_pdata *pdata = (struct adf_pdata *)backend; + struct adf_surface_pdata *surf = &pdata->surfaces[pdata->current_surface]; + + int fence_fd = adf_interface_simple_post(pdata->intf_fd, pdata->eng_id, + surf->base.width, surf->base.height, pdata->format, surf->fd, + surf->offset, surf->pitch, -1); + if (fence_fd >= 0) + close(fence_fd); + + pdata->current_surface = (pdata->current_surface + 1) % pdata->n_surfaces; + return &pdata->surfaces[pdata->current_surface].base; +} + +static void adf_blank(struct minui_backend *backend, bool blank) +{ + struct adf_pdata *pdata = (struct adf_pdata *)backend; + adf_interface_blank(pdata->intf_fd, + blank ? DRM_MODE_DPMS_OFF : DRM_MODE_DPMS_ON); +} + +static void adf_surface_destroy(struct adf_surface_pdata *surf) +{ + munmap(surf->base.data, surf->pitch * surf->base.height); + close(surf->fd); +} + +static void adf_exit(struct minui_backend *backend) +{ + struct adf_pdata *pdata = (struct adf_pdata *)backend; + unsigned int i; + + for (i = 0; i < pdata->n_surfaces; i++) + adf_surface_destroy(&pdata->surfaces[i]); + if (pdata->intf_fd >= 0) + close(pdata->intf_fd); + free(pdata); +} + +minui_backend *open_adf() +{ + struct adf_pdata *pdata = calloc(1, sizeof(*pdata)); + if (!pdata) { + perror("allocating adf backend failed"); + return NULL; + } + + pdata->base.init = adf_init; + pdata->base.flip = adf_flip; + pdata->base.blank = adf_blank; + pdata->base.exit = adf_exit; + return &pdata->base; +} From aa1a31e83d25e6c3c3371063704eeb14558a595e Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Fri, 25 Apr 2014 18:47:18 -0700 Subject: [PATCH 066/110] Allow lines without = signs. The new build.prop for Sprout includes lines of the format: import xxx.prop These can be safely ignored when reading the property file. Change-Id: Ia84a138e71461ffe8e591e88143b9787873def29 --- updater/install.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/updater/install.c b/updater/install.c index 53f5e48c..8defc772 100644 --- a/updater/install.c +++ b/updater/install.c @@ -927,8 +927,8 @@ Value* GetPropFn(const char* name, State* state, int argc, Expr* argv[]) { // file_getprop(file, key) // // interprets 'file' as a getprop-style file (key=value pairs, one -// per line, # comment lines and blank lines okay), and returns the value -// for 'key' (or "" if it isn't defined). +// per line. # comment lines,blank lines, lines without '=' ignored), +// and returns the value for 'key' (or "" if it isn't defined). Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) { char* result = NULL; char* buffer = NULL; @@ -986,9 +986,7 @@ Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) { char* equal = strchr(line, '='); if (equal == NULL) { - ErrorAbort(state, "%s: malformed line \"%s\": %s not a prop file?", - name, line, filename); - goto done; + continue; } // trim whitespace between key and '=' From f5d9f891524862ba560650bd545668dc22622cdb Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Tue, 6 May 2014 16:54:42 -0700 Subject: [PATCH 067/110] Allow 0-byte files in full OTAs. Currently, the writeProcessFunction fails when there are zero bytes to write, potentially returning errno from a previous operation, or hanging indefinitely while it waits for a >0 result on a write of size 0. This happens when the output file is intended to be zero bytes in size. Change-Id: Ib3cfcaf66d82942bc89e5f5c64697862403b38da --- minzip/Zip.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/minzip/Zip.c b/minzip/Zip.c index abc98901..5070104d 100644 --- a/minzip/Zip.c +++ b/minzip/Zip.c @@ -698,7 +698,9 @@ static bool writeProcessFunction(const unsigned char *data, int dataLen, void *cookie) { int fd = (int)(intptr_t)cookie; - + if (dataLen == 0) { + return true; + } ssize_t soFar = 0; while (true) { ssize_t n = write(fd, data+soFar, dataLen-soFar); From 4aa12dd0decafb139239779ab38e6ffda23109ab Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 13 May 2014 08:40:49 -0700 Subject: [PATCH 068/110] fix vulnerability in bspatch Patches with control data tuples with negative numbers in the first and/or second can cause bspatch to write to arbitrary locations in the heap. Change-Id: I8c5d81948be773e6483241131d3d166b6da27cb8 --- applypatch/bspatch.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/applypatch/bspatch.c b/applypatch/bspatch.c index 2e80f81d..1dc7ab10 100644 --- a/applypatch/bspatch.c +++ b/applypatch/bspatch.c @@ -205,6 +205,11 @@ int ApplyBSDiffPatchMem(const unsigned char* old_data, ssize_t old_size, ctrl[1] = offtin(buf+8); ctrl[2] = offtin(buf+16); + if (ctrl[0] < 0 || ctrl[1] < 0) { + printf("corrupt patch (negative byte counts)\n"); + return 1; + } + // Sanity check if (newpos + ctrl[0] > *new_size) { printf("corrupt patch (new file overrun)\n"); From f766396d9931e1879161132c26fe61453065f450 Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Wed, 19 Mar 2014 13:41:31 -0700 Subject: [PATCH 069/110] Support BGRA framebuffer The re-designed recovery graphics code only supports RGB{_,X,A} framebuffer, and this patch adds support for BGRA framebuffer. Change-Id: I3780c8288088f497fa248f3492c54f43834a8598 Signed-off-by: Daniel Leung Reviewed-by: Jovanovic, Radivoje Reviewed-by: Parkinson, TimothyX L Tested-by: Parkinson, TimothyX L Reviewed-by: Boie, Andrew P Reviewed-by: Gumbel, Matthew K --- minui/graphics_fbdev.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/minui/graphics_fbdev.c b/minui/graphics_fbdev.c index bb91975a..a91ea872 100644 --- a/minui/graphics_fbdev.c +++ b/minui/graphics_fbdev.c @@ -184,8 +184,21 @@ static gr_surface fbdev_flip(minui_backend* backend __unused) { set_displayed_framebuffer(1-displayed_buffer); } else { // Copy from the in-memory surface to the framebuffer. + +#if defined(RECOVERY_BGRA) + unsigned int idx; + unsigned char* ucfb_vaddr = (unsigned char*)gr_framebuffer[0].data; + unsigned char* ucbuffer_vaddr = (unsigned char*)gr_draw->data; + for (idx = 0 ; idx < (gr_draw->height * gr_draw->row_bytes); idx += 4) { + ucfb_vaddr[idx ] = ucbuffer_vaddr[idx + 2]; + ucfb_vaddr[idx + 1] = ucbuffer_vaddr[idx + 1]; + ucfb_vaddr[idx + 2] = ucbuffer_vaddr[idx ]; + ucfb_vaddr[idx + 3] = ucbuffer_vaddr[idx + 3]; + } +#else memcpy(gr_framebuffer[0].data, gr_draw->data, gr_draw->height * gr_draw->row_bytes); +#endif } return gr_draw; } From c704e06ce596bd0a6de66b10b108aee95535468a Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 23 May 2014 08:40:35 -0700 Subject: [PATCH 070/110] disable async reboot during package installation The default recovery UI will reboot the device when the power key is pressed 7 times in a row, regardless of what recovery is doing. Disable this feature during package installation, to minimize the chance of corrupting the device due to a mid-install reboot. (Debug packages can explicitly request that the feature be reenabled.) Change-Id: I20f3ec240ecd344615d452005ff26d8dd7775acf --- install.cpp | 7 +++++++ ui.cpp | 25 +++++++++++++++++++++---- ui.h | 8 ++++++++ updater/install.c | 11 +++++++++++ 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/install.cpp b/install.cpp index 0bd7945c..0f059602 100644 --- a/install.cpp +++ b/install.cpp @@ -160,6 +160,11 @@ try_update_binary(const char *path, ZipArchive *zip, int* wipe_cache) { *wipe_cache = 1; } else if (strcmp(command, "clear_display") == 0) { ui->SetBackground(RecoveryUI::NONE); + } else if (strcmp(command, "enable_reboot") == 0) { + // packages can explicitly request that they want the user + // to be able to reboot during installation (useful for + // debugging packages that don't exit). + ui->SetEnableReboot(true); } else { LOGE("unknown command [%s]\n", command); } @@ -236,7 +241,9 @@ really_install_package(const char *path, int* wipe_cache) /* Verify and install the contents of the package. */ ui->Print("Installing update...\n"); + ui->SetEnableReboot(false); int result = try_update_binary(path, &zip, wipe_cache); + ui->SetEnableReboot(true); sysReleaseMap(&map); diff --git a/ui.cpp b/ui.cpp index 091012f2..98442539 100644 --- a/ui.cpp +++ b/ui.cpp @@ -49,6 +49,7 @@ RecoveryUI::RecoveryUI() : key_last_down(-1), key_long_press(false), key_down_count(0), + enable_reboot(true), consecutive_power_keys(0), consecutive_alternate_keys(0), last_key(-1) { @@ -116,6 +117,7 @@ int RecoveryUI::input_callback(int fd, uint32_t epevents, void* data) void RecoveryUI::process_key(int key_code, int updown) { bool register_key = false; bool long_press = false; + bool reboot_enabled; pthread_mutex_lock(&key_queue_mutex); key_pressed[key_code] = updown; @@ -137,6 +139,7 @@ void RecoveryUI::process_key(int key_code, int updown) { } key_last_down = -1; } + reboot_enabled = enable_reboot; pthread_mutex_unlock(&key_queue_mutex); if (register_key) { @@ -150,7 +153,9 @@ void RecoveryUI::process_key(int key_code, int updown) { break; case RecoveryUI::REBOOT: - android_reboot(ANDROID_RB_RESTART, 0, 0); + if (reboot_enabled) { + android_reboot(ANDROID_RB_RESTART, 0, 0); + } break; case RecoveryUI::ENQUEUE: @@ -281,9 +286,15 @@ RecoveryUI::KeyAction RecoveryUI::CheckKey(int key) { } if (key == KEY_POWER) { - ++consecutive_power_keys; - if (consecutive_power_keys >= 7) { - return REBOOT; + pthread_mutex_lock(&key_queue_mutex); + bool reboot_enabled = enable_reboot; + pthread_mutex_unlock(&key_queue_mutex); + + if (reboot_enabled) { + ++consecutive_power_keys; + if (consecutive_power_keys >= 7) { + return REBOOT; + } } } else { consecutive_power_keys = 0; @@ -311,3 +322,9 @@ void RecoveryUI::NextCheckKeyIsLong(bool is_long_press) { void RecoveryUI::KeyLongPress(int key) { } + +void RecoveryUI::SetEnableReboot(bool enabled) { + pthread_mutex_lock(&key_queue_mutex); + enable_reboot = enabled; + pthread_mutex_unlock(&key_queue_mutex); +} diff --git a/ui.h b/ui.h index faa0acd4..31a8a7fb 100644 --- a/ui.h +++ b/ui.h @@ -93,6 +93,13 @@ class RecoveryUI { // be called with "true". virtual void KeyLongPress(int key); + // Normally in recovery there's a key sequence that triggers + // immediate reboot of the device, regardless of what recovery is + // doing (with the default CheckKey implementation, it's pressing + // the power button 7 times in row). Call this to enable or + // disable that feature. It is enabled by default. + virtual void SetEnableReboot(bool enabled); + // --- menu display --- // Display some header text followed by a menu of items, which appears @@ -121,6 +128,7 @@ private: int key_last_down; // under key_queue_mutex bool key_long_press; // under key_queue_mutex int key_down_count; // under key_queue_mutex + bool enable_reboot; // under key_queue_mutex int rel_sum; int consecutive_power_keys; diff --git a/updater/install.c b/updater/install.c index 8defc772..e1071c90 100644 --- a/updater/install.c +++ b/updater/install.c @@ -1640,6 +1640,15 @@ Value* WipeBlockDeviceFn(const char* name, State* state, int argc, Expr* argv[]) return StringValue(strdup(success ? "t" : "")); } +Value* EnableRebootFn(const char* name, State* state, int argc, Expr* argv[]) { + if (argc != 0) { + return ErrorAbort(state, "%s() expects no args, got %d", name, argc); + } + UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); + fprintf(ui->cmd_pipe, "enable_reboot\n"); + return StringValue(strdup("t")); +} + void RegisterInstallFunctions() { RegisterFunction("mount", MountFn); RegisterFunction("is_mounted", IsMountedFn); @@ -1689,4 +1698,6 @@ void RegisterInstallFunctions() { RegisterFunction("reboot_now", RebootNowFn); RegisterFunction("get_stage", GetStageFn); RegisterFunction("set_stage", SetStageFn); + + RegisterFunction("enable_reboot", EnableRebootFn); } From dff8afe1b21c6ffe09269434f9f8f0d166e1a848 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 3 Jun 2014 10:50:13 -0700 Subject: [PATCH 071/110] restore holo UI in recovery -- DO NOT MERGE Since we don't have quantum assets for recovery yet, go back to the holo appearance (dark background, blue glowing progress bar) for lmp-preview. Change-Id: Id4d3f23e0a6251a12aa42f3793cff347f38b4243 --- res-hdpi/images/progress_empty.png | Bin 81 -> 118 bytes res-hdpi/images/progress_fill.png | Bin 83 -> 404 bytes res-mdpi/images/progress_empty.png | Bin 74 -> 118 bytes res-mdpi/images/progress_fill.png | Bin 83 -> 404 bytes res-xhdpi/images/progress_empty.png | Bin 84 -> 118 bytes res-xhdpi/images/progress_fill.png | Bin 84 -> 404 bytes res-xxhdpi/images/progress_empty.png | Bin 86 -> 118 bytes res-xxhdpi/images/progress_fill.png | Bin 86 -> 404 bytes res-xxxhdpi/images/progress_empty.png | Bin 90 -> 118 bytes res-xxxhdpi/images/progress_fill.png | Bin 90 -> 404 bytes screen_ui.cpp | 29 ++++++++++++++------------ screen_ui.h | 3 --- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/res-hdpi/images/progress_empty.png b/res-hdpi/images/progress_empty.png index b29d9be0c3f36772498d29a344fd9713f7d76fcf..72581832c2d3e429012f7b2506f15f6165a0c81c 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^AAp#R14uC3`0C>Yq$E6D978G?lPe4k9az!cE-Uf% e!w0s-a%>Dy`fqHlYi}7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000d%8G= eR4^t>Yyxt2F)*^uOL+riF?hQAxvX(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^3xJq~14uCFXl8Q)DM3#c$B+ufISi#KL WeZ)ZCPoD1xNRg+jpUXO@geCwAP7xIV diff --git a/res-mdpi/images/progress_fill.png b/res-mdpi/images/progress_fill.png index c223871b9bb3b7c0f73c44a168d61941a9cf4d54..becf87bdfe8cc31f44b77cd81d9305cf04252e91 100644 GIT binary patch literal 404 zcmV;F0c-w=P)7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 84 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoIT)FN7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000u-E{~^+ gV@L&K@&YaiRt8272F74Mb&zTXPgg&ebxsLQ0E0XbZU6uP diff --git a/res-xxhdpi/images/progress_empty.png b/res-xxhdpi/images/progress_empty.png index 57c8235874c46d05324ff5c86bbc0d6b43da7fd8..72581832c2d3e429012f7b2506f15f6165a0c81c 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yV0-{%^Dr_4$%fZ|W&6c=P8Skjv-k k;uuoFm@Kg@L8OO?f$0td<7_wEG@uNFr>mdKI;Vst0IgpakN^Mx diff --git a/res-xxhdpi/images/progress_fill.png b/res-xxhdpi/images/progress_fill.png index 0f36f48c243847b71f78b77d958a8f74e1fa161b..becf87bdfe8cc31f44b77cd81d9305cf04252e91 100644 GIT binary patch literal 404 zcmV;F0c-w=P)7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000tz&UUj+1IjRXy85}Sb4q9e05ujAxc~qF diff --git a/res-xxxhdpi/images/progress_empty.png b/res-xxxhdpi/images/progress_empty.png index ba25afb6e2387d0ef94c46cb4e3c0e19a8da3655..72581832c2d3e429012f7b2506f15f6165a0c81c 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe1sIuu7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000RudLY^*; nAr*|t49$TCTy6(7Bv=_(1sE8`_a`3)$})Jm`njxgN@xNADTEWn diff --git a/screen_ui.cpp b/screen_ui.cpp index d087af32..03ef049a 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -89,7 +89,7 @@ ScreenRecoveryUI::ScreenRecoveryUI() : void ScreenRecoveryUI::draw_background_locked(Icon icon) { pagesIdentical = false; - gr_color(250, 250, 250, 255); + gr_color(0, 0, 0, 255); gr_clear(); if (icon) { @@ -125,7 +125,7 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) } } - gr_color(115, 115, 115, 255); + gr_color(255, 255, 255, 255); gr_texticon(textX, textY, text_surface); } } @@ -150,7 +150,7 @@ void ScreenRecoveryUI::draw_progress_locked() int dy = (3*gr_fb_height() + iconHeight - 2*height)/4; // Erase behind the progress bar (in case this was a progress-only update) - gr_color(250, 250, 250, 255); + gr_color(0, 0, 0, 255); gr_fill(dx, dy, width, height); if (progressBarType == DETERMINATE) { @@ -181,17 +181,20 @@ void ScreenRecoveryUI::draw_progress_locked() void ScreenRecoveryUI::SetColor(UIElement e) { switch (e) { case HEADER: - gr_color(0xff, 0x57, 0x22, 255); // Quantum "Deep Orange" 500 + gr_color(247, 0, 6, 255); break; case MENU: case MENU_SEL_BG: - gr_color(0x67, 0x3a, 0xb7, 255); // Quantum "Deep Purple" 500 + gr_color(0, 106, 157, 255); break; case MENU_SEL_FG: gr_color(255, 255, 255, 255); break; case LOG: - gr_color(0x3f, 0x51, 0xb5, 255); // Quantum "Indigo" 500 + gr_color(249, 194, 0, 255); + break; + case TEXT_FILL: + gr_color(0, 0, 0, 160); break; default: gr_color(255, 255, 255, 255); @@ -207,7 +210,7 @@ void ScreenRecoveryUI::draw_screen_locked() draw_background_locked(currentIcon); draw_progress_locked(); } else { - gr_color(250, 250, 250, 255); + gr_color(0, 0, 0, 255); gr_clear(); int y = 0; @@ -221,13 +224,13 @@ void ScreenRecoveryUI::draw_screen_locked() if (i == menu_top + menu_sel) { // draw the highlight bar SetColor(MENU_SEL_BG); - gr_fill(0, y-2+kTextYOffset, gr_fb_width(), y+char_height+2+kTextYOffset); + gr_fill(0, y-2, gr_fb_width(), y+char_height+2); // white text of selected item SetColor(MENU_SEL_FG); - if (menu[i][0]) gr_text(kTextXOffset, y+kTextYOffset, menu[i], 1); + if (menu[i][0]) gr_text(4, y, menu[i], 1); SetColor(MENU); } else { - if (menu[i][0]) gr_text(kTextXOffset, y+kTextYOffset, menu[i], i < menu_top); + if (menu[i][0]) gr_text(4, y, menu[i], i < menu_top); } y += char_height+4; } @@ -248,7 +251,7 @@ void ScreenRecoveryUI::draw_screen_locked() for (int ty = gr_fb_height() - char_height, count = 0; ty > y+2 && count < text_rows; ty -= char_height, ++count) { - gr_text(kTextXOffset, ty+kTextYOffset, text[row], 0); + gr_text(4, ty, text[row], 0); --row; if (row < 0) row = text_rows-1; } @@ -349,11 +352,11 @@ void ScreenRecoveryUI::Init() gr_font_size(&char_width, &char_height); text_col = text_row = 0; - text_rows = (gr_fb_height() - 2 * kTextYOffset) / char_height; + text_rows = gr_fb_height() / char_height; if (text_rows > kMaxRows) text_rows = kMaxRows; text_top = 1; - text_cols = (gr_fb_width() - 2 * kTextXOffset) / char_width; + text_cols = gr_fb_width() / char_width; if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1; backgroundIcon[NONE] = NULL; diff --git a/screen_ui.h b/screen_ui.h index d5e58922..01a33bfe 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -87,9 +87,6 @@ class ScreenRecoveryUI : public RecoveryUI { static const int kMaxCols = 96; static const int kMaxRows = 96; - static const int kTextXOffset = 8; - static const int kTextYOffset = 4; - // Log text overlay, displayed when a magic key is pressed char text[kMaxRows][kMaxCols]; int text_cols, text_rows; From 187d626e6108298b436f22657a8e14658c15d910 Mon Sep 17 00:00:00 2001 From: Mihai Serban Date: Fri, 6 Jun 2014 15:23:20 +0300 Subject: [PATCH 072/110] recovery: initialize keys press tracking status Checks for keys pressed return random results because of an uninitialized data structure. Change-Id: Ic8b3d453d62347921aa893403079b374c16a092e Signed-off-by: Mihai Serban --- ui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ui.cpp b/ui.cpp index 5043ee52..a7c8bea4 100644 --- a/ui.cpp +++ b/ui.cpp @@ -55,6 +55,7 @@ RecoveryUI::RecoveryUI() : pthread_mutex_init(&key_queue_mutex, NULL); pthread_cond_init(&key_queue_cond, NULL); self = this; + memset(key_pressed, 0, sizeof(key_pressed)); } void RecoveryUI::Init() { From 5b5f6c2fd32839227d10ee3c97e662a415b80e2b Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 3 Jun 2014 10:50:13 -0700 Subject: [PATCH 073/110] restore holo UI in recovery Return to the recovery to the holo appearance. Bug: 15424396 Change-Id: Id4d3f23e0a6251a12aa42f3793cff347f38b4243 --- res-hdpi/images/progress_empty.png | Bin 81 -> 118 bytes res-hdpi/images/progress_fill.png | Bin 83 -> 404 bytes res-mdpi/images/progress_empty.png | Bin 74 -> 118 bytes res-mdpi/images/progress_fill.png | Bin 83 -> 404 bytes res-xhdpi/images/progress_empty.png | Bin 84 -> 118 bytes res-xhdpi/images/progress_fill.png | Bin 84 -> 404 bytes res-xxhdpi/images/progress_empty.png | Bin 86 -> 118 bytes res-xxhdpi/images/progress_fill.png | Bin 86 -> 404 bytes res-xxxhdpi/images/progress_empty.png | Bin 90 -> 118 bytes res-xxxhdpi/images/progress_fill.png | Bin 90 -> 404 bytes screen_ui.cpp | 29 ++++++++++++++------------ screen_ui.h | 3 --- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/res-hdpi/images/progress_empty.png b/res-hdpi/images/progress_empty.png index b29d9be0c3f36772498d29a344fd9713f7d76fcf..72581832c2d3e429012f7b2506f15f6165a0c81c 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^AAp#R14uC3`0C>Yq$E6D978G?lPe4k9az!cE-Uf% e!w0s-a%>Dy`fqHlYi}7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000d%8G= eR4^t>Yyxt2F)*^uOL+riF?hQAxvX(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^3xJq~14uCFXl8Q)DM3#c$B+ufISi#KL WeZ)ZCPoD1xNRg+jpUXO@geCwAP7xIV diff --git a/res-mdpi/images/progress_fill.png b/res-mdpi/images/progress_fill.png index c223871b9bb3b7c0f73c44a168d61941a9cf4d54..becf87bdfe8cc31f44b77cd81d9305cf04252e91 100644 GIT binary patch literal 404 zcmV;F0c-w=P)7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 84 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoIT)FN7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000u-E{~^+ gV@L&K@&YaiRt8272F74Mb&zTXPgg&ebxsLQ0E0XbZU6uP diff --git a/res-xxhdpi/images/progress_empty.png b/res-xxhdpi/images/progress_empty.png index 57c8235874c46d05324ff5c86bbc0d6b43da7fd8..72581832c2d3e429012f7b2506f15f6165a0c81c 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yV0-{%^Dr_4$%fZ|W&6c=P8Skjv-k k;uuoFm@Kg@L8OO?f$0td<7_wEG@uNFr>mdKI;Vst0IgpakN^Mx diff --git a/res-xxhdpi/images/progress_fill.png b/res-xxhdpi/images/progress_fill.png index 0f36f48c243847b71f78b77d958a8f74e1fa161b..becf87bdfe8cc31f44b77cd81d9305cf04252e91 100644 GIT binary patch literal 404 zcmV;F0c-w=P)7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000tz&UUj+1IjRXy85}Sb4q9e05ujAxc~qF diff --git a/res-xxxhdpi/images/progress_empty.png b/res-xxxhdpi/images/progress_empty.png index ba25afb6e2387d0ef94c46cb4e3c0e19a8da3655..72581832c2d3e429012f7b2506f15f6165a0c81c 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^e}I^sg9%73p0oWGkh1l3aSW-L^Y;2iUIqgW=7Sba zAshbh%3*B%ulD0m@6?(61wuV?d5d(9*jMYlPgz^4M-)VwjjX RsQ_dHgQu&X%Q~loCIDU+C|&>n literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe1sIuu7(bkr*$ak&PJp8 zO=Vu;CVM0_T`5woek3*QMWZxrT5$hHbCNW}dH_HIz-HqEY(g;?i#V{24IE#PR$dTD z_)?`T!{$}1Z)uwKqnW)hF5}Pi(%FAu`uZ%3o+Cb0pC!ipmr{7&>He{01iJ!;+lCvC zWZQ=xy`ZY4tlOJv22iWBODh2IM*rUxE1o!(=~uj52)=FyTxa@qrtb;<>6xCL@*(T( y%}mUg{_6OR>AR~r#k-=fwPddAM&b+J-uwW*e*ZAYSL$p40000RudLY^*; nAr*|t49$TCTy6(7Bv=_(1sE8`_a`3)$})Jm`njxgN@xNADTEWn diff --git a/screen_ui.cpp b/screen_ui.cpp index d087af32..03ef049a 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -89,7 +89,7 @@ ScreenRecoveryUI::ScreenRecoveryUI() : void ScreenRecoveryUI::draw_background_locked(Icon icon) { pagesIdentical = false; - gr_color(250, 250, 250, 255); + gr_color(0, 0, 0, 255); gr_clear(); if (icon) { @@ -125,7 +125,7 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) } } - gr_color(115, 115, 115, 255); + gr_color(255, 255, 255, 255); gr_texticon(textX, textY, text_surface); } } @@ -150,7 +150,7 @@ void ScreenRecoveryUI::draw_progress_locked() int dy = (3*gr_fb_height() + iconHeight - 2*height)/4; // Erase behind the progress bar (in case this was a progress-only update) - gr_color(250, 250, 250, 255); + gr_color(0, 0, 0, 255); gr_fill(dx, dy, width, height); if (progressBarType == DETERMINATE) { @@ -181,17 +181,20 @@ void ScreenRecoveryUI::draw_progress_locked() void ScreenRecoveryUI::SetColor(UIElement e) { switch (e) { case HEADER: - gr_color(0xff, 0x57, 0x22, 255); // Quantum "Deep Orange" 500 + gr_color(247, 0, 6, 255); break; case MENU: case MENU_SEL_BG: - gr_color(0x67, 0x3a, 0xb7, 255); // Quantum "Deep Purple" 500 + gr_color(0, 106, 157, 255); break; case MENU_SEL_FG: gr_color(255, 255, 255, 255); break; case LOG: - gr_color(0x3f, 0x51, 0xb5, 255); // Quantum "Indigo" 500 + gr_color(249, 194, 0, 255); + break; + case TEXT_FILL: + gr_color(0, 0, 0, 160); break; default: gr_color(255, 255, 255, 255); @@ -207,7 +210,7 @@ void ScreenRecoveryUI::draw_screen_locked() draw_background_locked(currentIcon); draw_progress_locked(); } else { - gr_color(250, 250, 250, 255); + gr_color(0, 0, 0, 255); gr_clear(); int y = 0; @@ -221,13 +224,13 @@ void ScreenRecoveryUI::draw_screen_locked() if (i == menu_top + menu_sel) { // draw the highlight bar SetColor(MENU_SEL_BG); - gr_fill(0, y-2+kTextYOffset, gr_fb_width(), y+char_height+2+kTextYOffset); + gr_fill(0, y-2, gr_fb_width(), y+char_height+2); // white text of selected item SetColor(MENU_SEL_FG); - if (menu[i][0]) gr_text(kTextXOffset, y+kTextYOffset, menu[i], 1); + if (menu[i][0]) gr_text(4, y, menu[i], 1); SetColor(MENU); } else { - if (menu[i][0]) gr_text(kTextXOffset, y+kTextYOffset, menu[i], i < menu_top); + if (menu[i][0]) gr_text(4, y, menu[i], i < menu_top); } y += char_height+4; } @@ -248,7 +251,7 @@ void ScreenRecoveryUI::draw_screen_locked() for (int ty = gr_fb_height() - char_height, count = 0; ty > y+2 && count < text_rows; ty -= char_height, ++count) { - gr_text(kTextXOffset, ty+kTextYOffset, text[row], 0); + gr_text(4, ty, text[row], 0); --row; if (row < 0) row = text_rows-1; } @@ -349,11 +352,11 @@ void ScreenRecoveryUI::Init() gr_font_size(&char_width, &char_height); text_col = text_row = 0; - text_rows = (gr_fb_height() - 2 * kTextYOffset) / char_height; + text_rows = gr_fb_height() / char_height; if (text_rows > kMaxRows) text_rows = kMaxRows; text_top = 1; - text_cols = (gr_fb_width() - 2 * kTextXOffset) / char_width; + text_cols = gr_fb_width() / char_width; if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1; backgroundIcon[NONE] = NULL; diff --git a/screen_ui.h b/screen_ui.h index d5e58922..01a33bfe 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -87,9 +87,6 @@ class ScreenRecoveryUI : public RecoveryUI { static const int kMaxCols = 96; static const int kMaxRows = 96; - static const int kTextXOffset = 8; - static const int kTextYOffset = 4; - // Log text overlay, displayed when a magic key is pressed char text[kMaxRows][kMaxCols]; int text_cols, text_rows; From 43772d26a5d8d31fd092a21edfca346f3b3901e7 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 9 Jun 2014 14:13:19 -0700 Subject: [PATCH 074/110] advance progress bar during block OTA installations While executing syspatch and package_extract_file() calls with don't care maps (both of which are used to rewrite the system image in incremental and full block OTAs, respectively), pass a progress callback in and use it to update the visible progress bar. Change-Id: I1d3742d167c1bb2130571eb5103b7795c65ff371 --- updater/install.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/updater/install.c b/updater/install.c index e1071c90..42f22897 100644 --- a/updater/install.c +++ b/updater/install.c @@ -463,17 +463,31 @@ DontCareMap* ReadDontCareMapFromZip(ZipArchive* za, const char* path) { map->region_count = strtoul(p, &p, 0); map->regions = (int*) malloc(map->region_count * sizeof(int)); + map->total_blocks = 0; int i; for (i = 0; i < map->region_count; ++i) { map->regions[i] = strtoul(p, &p, 0); + map->total_blocks += map->regions[i]; } return map; } +static FILE* mapwrite_cmd_pipe; + +static void progress_cb(long done, long total) { + if (total > 0) { + double frac = (double)done / total; + fprintf(mapwrite_cmd_pipe, "set_progress %f\n", frac); + fflush(mapwrite_cmd_pipe); + } +} + + + bool MapWriter(const unsigned char* data, int dataLen, void* cookie) { - return write_with_map(data, dataLen, (MapState*) cookie) == dataLen; + return write_with_map(data, dataLen, (MapState*) cookie, progress_cb) == dataLen; } // package_extract_file(package_path, destination_path, map_path) @@ -490,6 +504,10 @@ Value* PackageExtractFileFn(const char* name, State* state, name, argc); } bool success = false; + + UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); + mapwrite_cmd_pipe = ui->cmd_pipe; + if (argc >= 2) { // The two-argument version extracts to a file; the three-arg // version extracts to a file, skipping over regions in a @@ -1185,6 +1203,9 @@ Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { return NULL; } + UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); + mapwrite_cmd_pipe = ui->cmd_pipe; + if (ParseSha1(target_sha1, target_digest) != 0) { printf("%s(): failed to parse '%s' as target SHA-1", name, target_sha1); memset(target_digest, 0, SHA_DIGEST_SIZE); @@ -1220,7 +1241,7 @@ Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { FILE* tgt = fopen(filename, "r+"); - int ret = syspatch(src, init_map, patch_data, patch_len, tgt, target_map); + int ret = syspatch(src, init_map, patch_data, patch_len, tgt, target_map, progress_cb); fclose(src); fclose(tgt); From ba545d7e2388e81e985a43fc86d191590b923c90 Mon Sep 17 00:00:00 2001 From: Joey Pan Date: Wed, 4 Jun 2014 20:47:46 +0800 Subject: [PATCH 075/110] minui: avoid random screen frame at startup Clear framebuffer at init. [toddpoynor@google.com: forward port] Change-Id: Ie98c7724cd974dcacef3e3559a6fe492864a5e72 --- minui/graphics_fbdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/minui/graphics_fbdev.c b/minui/graphics_fbdev.c index a91ea872..c0c1bcb1 100644 --- a/minui/graphics_fbdev.c +++ b/minui/graphics_fbdev.c @@ -130,6 +130,8 @@ static gr_surface fbdev_init(minui_backend* backend) { return NULL; } + memset(bits, 0, fi.smem_len); + gr_framebuffer[0].width = vi.xres; gr_framebuffer[0].height = vi.yres; gr_framebuffer[0].row_bytes = fi.line_length; From 37aedb3fafcccd0da5bd9089987f05895c27492d Mon Sep 17 00:00:00 2001 From: JP Abgrall Date: Mon, 16 Jun 2014 19:07:39 -0700 Subject: [PATCH 076/110] Support F2FS for the data partition This adds F2FS support - for wiping a device - for the install "format" command. Note: crypto data in "footer" with a default/negative length is not supported, unlike with "ext4". Change-Id: I8d141a0d4d14df9fe84d3b131484e9696fcd8870 Signed-off-by: JP Abgrall --- Android.mk | 6 +++++ roots.cpp | 62 +++++++++++++++++++++++++++++++++++++---------- updater/install.c | 37 ++++++++++++++++++++++++++-- 3 files changed, 90 insertions(+), 15 deletions(-) diff --git a/Android.mk b/Android.mk index 577679c0..1970956b 100644 --- a/Android.mk +++ b/Android.mk @@ -32,6 +32,12 @@ LOCAL_MODULE := recovery LOCAL_FORCE_STATIC_EXECUTABLE := true +# Not working as expected? +# LOCAL_ADDITIONAL_DEPENDENCIES := mkfs.f2fs +# LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_RECOVERY_ROOT_OUT)/sbin/mkfs.f2fs +LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_ROOT_OUT_SBIN)/mkfs.f2fs + + RECOVERY_API_VERSION := 3 RECOVERY_FSTAB_VERSION := 2 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION) diff --git a/roots.cpp b/roots.cpp index 66481a3b..8f990190 100644 --- a/roots.cpp +++ b/roots.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -151,6 +152,20 @@ int ensure_path_unmounted(const char* path) { return unmount_mounted_volume(mv); } +static int exec_cmd(const char* path, char* const argv[]) { + int status; + pid_t child; + if ((child = vfork()) == 0) { + execv(path, argv); + _exit(-1); + } + waitpid(child, &status, 0); + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { + LOGE("%s failed with status %d\n", path, WEXITSTATUS(status)); + } + return WEXITSTATUS(status); +} + int format_volume(const char* volume) { Volume* v = volume_for_path(volume); if (v == NULL) { @@ -195,19 +210,7 @@ int format_volume(const char* volume) { return 0; } - if (strcmp(v->fs_type, "ext4") == 0) { - ssize_t length = 0; - if (v->length != 0) { - length = v->length; - } else if (v->key_loc != NULL && strcmp(v->key_loc, "footer") == 0) { - length = -CRYPT_FOOTER_OFFSET; - } - int result = make_ext4fs(v->blk_device, length, volume, sehandle); - if (result != 0) { - LOGE("format_volume: make_extf4fs failed on %s\n", v->blk_device); - return -1; - } - + if (strcmp(v->fs_type, "ext4") == 0 || strcmp(v->fs_type, "f2fs") == 0) { // if there's a key_loc that looks like a path, it should be a // block device for storing encryption metadata. wipe it too. if (v->key_loc != NULL && v->key_loc[0] == '/') { @@ -221,6 +224,39 @@ int format_volume(const char* volume) { close(fd); } + ssize_t length = 0; + if (v->length != 0) { + length = v->length; + } else if (v->key_loc != NULL && strcmp(v->key_loc, "footer") == 0) { + length = -CRYPT_FOOTER_OFFSET; + } + int result; + if (strcmp(v->fs_type, "ext4") == 0) { + result = make_ext4fs(v->blk_device, length, volume, sehandle); + } else { /* Has to be f2fs because we checked earlier. */ + if (v->key_loc != NULL && strcmp(v->key_loc, "footer") == 0 && length < 0) { + LOGE("format_volume: crypt footer + negative length (%lld) not supported on %s\n", v->fs_type, length); + return -1; + } + if (length < 0) { + LOGE("format_volume: negative length (%ld) not supported on %s\n", length, v->fs_type); + return -1; + } + char *num_sectors; + if (asprintf(&num_sectors, "%ld", length / 512) <= 0) { + LOGE("format_volume: failed to create %s command for %s\n", v->fs_type, v->blk_device); + return -1; + } + const char *f2fs_path = "/sbin/mkfs.f2fs"; + const char* const f2fs_argv[] = {"mkfs.f2fs", "-t", "-d1", v->blk_device, num_sectors, NULL}; + + result = exec_cmd(f2fs_path, (char* const*)f2fs_argv); + free(num_sectors); + } + if (result != 0) { + LOGE("format_volume: make %s failed on %s with %d(%s)\n", v->fs_type, v->blk_device, result, strerror(errno)); + return -1; + } return 0; } diff --git a/updater/install.c b/updater/install.c index 42f22897..edc386dc 100644 --- a/updater/install.c +++ b/updater/install.c @@ -211,14 +211,29 @@ done: return StringValue(result); } +static int exec_cmd(const char* path, char* const argv[]) { + int status; + pid_t child; + if ((child = vfork()) == 0) { + execv(path, argv); + _exit(-1); + } + waitpid(child, &status, 0); + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { + printf("%s failed with status %d\n", path, WEXITSTATUS(status)); + } + return WEXITSTATUS(status); +} + // format(fs_type, partition_type, location, fs_size, mount_point) // // fs_type="yaffs2" partition_type="MTD" location=partition fs_size= mount_point= // fs_type="ext4" partition_type="EMMC" location=device fs_size= mount_point= -// if fs_size == 0, then make_ext4fs uses the entire partition. +// fs_type="f2fs" partition_type="EMMC" location=device fs_size= mount_point= +// if fs_size == 0, then make fs uses the entire partition. // if fs_size > 0, that is the size to use -// if fs_size < 0, then reserve that many bytes at the end of the partition +// if fs_size < 0, then reserve that many bytes at the end of the partition (not for "f2fs") Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) { char* result = NULL; if (argc != 5) { @@ -290,6 +305,24 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) { goto done; } result = location; + } else if (strcmp(fs_type, "f2fs") == 0) { + char *num_sectors; + if (asprintf(&num_sectors, "%lld", atoll(fs_size) / 512) <= 0) { + printf("format_volume: failed to create %s command for %s\n", fs_type, location); + result = strdup(""); + goto done; + } + const char *f2fs_path = "/sbin/mkfs.f2fs"; + const char* const f2fs_argv[] = {"mkfs.f2fs", "-t", "-d1", location, num_sectors, NULL}; + int status = exec_cmd(f2fs_path, (char* const*)f2fs_argv); + free(num_sectors); + if (status != 0) { + printf("%s: mkfs.f2fs failed (%d) on %s", + name, status, location); + result = strdup(""); + goto done; + } + result = location; #endif } else { printf("%s: unsupported fs_type \"%s\" partition_type \"%s\"", From b9afc2bf15822d09af188912ac27bd81bf078394 Mon Sep 17 00:00:00 2001 From: Ji-Hwan Lee Date: Thu, 19 Jun 2014 02:02:50 +0900 Subject: [PATCH 077/110] Use LOCAL_REQUIRED_MODULES for mkfs.f2fs Instead of LOCAL_ADDITIONAL_DEPENDENCIES. Bug: 15702524 Change-Id: Ic152ae60354bf09eccdb9a85dcd04f0f076a6422 --- Android.mk | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Android.mk b/Android.mk index 1970956b..1165acba 100644 --- a/Android.mk +++ b/Android.mk @@ -32,11 +32,9 @@ LOCAL_MODULE := recovery LOCAL_FORCE_STATIC_EXECUTABLE := true -# Not working as expected? -# LOCAL_ADDITIONAL_DEPENDENCIES := mkfs.f2fs -# LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_RECOVERY_ROOT_OUT)/sbin/mkfs.f2fs -LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_ROOT_OUT_SBIN)/mkfs.f2fs - +ifeq ($(HOST_OS),linux) +LOCAL_REQUIRED_MODULES := mkfs.f2fs +endif RECOVERY_API_VERSION := 3 RECOVERY_FSTAB_VERSION := 2 From e739d7e6cd94e8300f9ea61a2d57d88328755b9f Mon Sep 17 00:00:00 2001 From: Riley Andrews Date: Tue, 24 Jun 2014 16:29:16 -0700 Subject: [PATCH 078/110] Fix recovery mode. Duplicate changes made to init.rc for https://android-review.googlesource.com/98852 in the init.rc used for recovery mode. Bug 15849856 Change-Id: Ia376ddf6373a28718653f7fb1435bf7ecb33d813 --- etc/init.rc | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/etc/init.rc b/etc/init.rc index 6e0595b4..cd25d98d 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -44,13 +44,31 @@ on fs on boot - ifup lo hostname localhost domainname localdomain class_start default +# Load properties from /system/ + /factory after fs mount. +on load_all_props_action + load_all_props + +# Mount filesystems and start core system services. +on late-init + trigger early-fs + trigger fs + trigger post-fs + trigger post-fs-data + + # Load properties from /system/ + /factory after fs mount. Place + # this in another action so that the load will be scheduled after the prior + # issued fs triggers have completed. + trigger load_all_props_action + + trigger early-boot + trigger boot + on property:sys.powerctl=* powerctl ${sys.powerctl} From 22bcf97a5949816db85242157cb2640feed73616 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 24 Jun 2014 13:43:39 -0700 Subject: [PATCH 079/110] recovery: enable panic_on_oops Set panic_on_oops=1 to reboot if the kernel panics. Change-Id: Id9e8689a570229db2ea2a3d72b52784f8a1ed107 --- etc/init.rc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/init.rc b/etc/init.rc index 8ed00388..23aca5aa 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -28,6 +28,8 @@ on init chown root shell /tmp chmod 0775 /tmp + write /proc/sys/kernel/panic_on_oops 1 + on fs mkdir /dev/usb-ffs 0770 shell shell mkdir /dev/usb-ffs/adb 0770 shell shell From 075ad800c539503d0515e5e0b4af160eccedead9 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 26 Jun 2014 15:35:51 -0700 Subject: [PATCH 080/110] sideload without holding the whole package in RAM Implement a new method of sideloading over ADB that does not require the entire package to be held in RAM (useful for low-RAM devices and devices using block OTA where we'd rather have more RAM available for binary patching). We communicate with the host using a new adb service called "sideload-host", which makes the host act as a server, sending us different parts of the package file on request. We create a FUSE filesystem that creates a virtual file "/sideload/package.zip" that is backed by the ADB connection -- users see a normal file, but when they read from the file we're actually fetching the data from the adb host. This file is then passed to the verification and installation systems like any other. To prevent a malicious adb host implementation from serving different data to the verification and installation phases of sideloading, the FUSE filesystem verifies that the contents of the file don't change between reads -- every time we fetch a block from the host we compare its hash to the previous hash for that block (if it was read before) and cause the read to fail if it changes. One necessary change is that the minadbd started by recovery in sideload mode no longer drops its root privileges (they're needed to mount the FUSE filesystem). We rely on SELinux enforcement to restrict the set of things that can be accessed. Change-Id: Ida7dbd3b04c1d4e27a2779d88c1da0c7c81fb114 --- adb_install.cpp | 67 ++++-- etc/init.rc | 1 + install.cpp | 10 +- install.h | 2 +- minadbd/Android.mk | 6 +- minadbd/adb.c | 10 - minadbd/adb.h | 8 +- minadbd/fuse_sideload.c | 508 ++++++++++++++++++++++++++++++++++++++++ minadbd/fuse_sideload.h | 22 ++ minadbd/services.c | 51 ++-- recovery.cpp | 4 +- 11 files changed, 618 insertions(+), 71 deletions(-) create mode 100644 minadbd/fuse_sideload.c create mode 100644 minadbd/fuse_sideload.h diff --git a/adb_install.cpp b/adb_install.cpp index a226ea57..fb7860c9 100644 --- a/adb_install.cpp +++ b/adb_install.cpp @@ -69,6 +69,10 @@ maybe_restart_adbd() { } } +// How long (in seconds) we wait for the host to start sending us a +// package, before timing out. +#define ADB_INSTALL_TIMEOUT 300 + int apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { ui = ui_; @@ -84,27 +88,58 @@ apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { execl("/sbin/recovery", "recovery", "--adbd", NULL); _exit(-1); } + + // ADB_SIDELOAD_HOST_PATHNAME will start to exist once the host + // connects and starts serving a package. Poll for its + // appearance. (Note that inotify doesn't work with FUSE.) + int result; int status; - // TODO(dougz): there should be a way to cancel waiting for a - // package (by pushing some button combo on the device). For now - // you just have to 'adb sideload' a file that's not a valid - // package, like "/dev/null". - waitpid(child, &status, 0); + bool waited = false; + struct stat st; + for (int i = 0; i < ADB_INSTALL_TIMEOUT; ++i) { + if (waitpid(child, &status, WNOHANG) != 0) { + result = INSTALL_ERROR; + waited = true; + break; + } + + if (stat(ADB_SIDELOAD_HOST_PATHNAME, &st) != 0) { + if (errno == ENOENT && i < ADB_INSTALL_TIMEOUT-1) { + sleep(1); + continue; + } else { + ui->Print("\nTimed out waiting for package.\n\n", strerror(errno)); + result = INSTALL_ERROR; + kill(child, SIGKILL); + break; + } + } + result = install_package(ADB_SIDELOAD_HOST_PATHNAME, wipe_cache, install_file, false); + break; + } + + if (!waited) { + // Calling stat() on this magic filename signals the minadbd + // subprocess to shut down. + stat(ADB_SIDELOAD_HOST_EXIT_PATHNAME, &st); + + // TODO(dougz): there should be a way to cancel waiting for a + // package (by pushing some button combo on the device). For now + // you just have to 'adb sideload' a file that's not a valid + // package, like "/dev/null". + waitpid(child, &status, 0); + } + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { - ui->Print("status %d\n", WEXITSTATUS(status)); + if (WEXITSTATUS(status) == 3) { + ui->Print("\nYou need adb 1.0.32 or newer to sideload\nto this device.\n\n"); + } else if (!WIFSIGNALED(status)) { + ui->Print("\n(adbd status %d)\n", WEXITSTATUS(status)); + } } set_usb_driver(false); maybe_restart_adbd(); - struct stat st; - if (stat(ADB_SIDELOAD_FILENAME, &st) != 0) { - if (errno == ENOENT) { - ui->Print("No package received.\n"); - } else { - ui->Print("Error reading package:\n %s\n", strerror(errno)); - } - return INSTALL_ERROR; - } - return install_package(ADB_SIDELOAD_FILENAME, wipe_cache, install_file); + return result; } diff --git a/etc/init.rc b/etc/init.rc index effb6449..1b402e20 100644 --- a/etc/init.rc +++ b/etc/init.rc @@ -23,6 +23,7 @@ on init mkdir /system mkdir /data mkdir /cache + mkdir /sideload mount tmpfs tmpfs /tmp chown root shell /tmp diff --git a/install.cpp b/install.cpp index 0f059602..9db5640a 100644 --- a/install.cpp +++ b/install.cpp @@ -182,7 +182,7 @@ try_update_binary(const char *path, ZipArchive *zip, int* wipe_cache) { } static int -really_install_package(const char *path, int* wipe_cache) +really_install_package(const char *path, int* wipe_cache, bool needs_mount) { ui->SetBackground(RecoveryUI::INSTALLING_UPDATE); ui->Print("Finding update package...\n"); @@ -194,7 +194,7 @@ really_install_package(const char *path, int* wipe_cache) // Map the update package into memory. ui->Print("Opening update package...\n"); - if (path) { + if (path && needs_mount) { if (path[0] == '@') { ensure_path_mounted(path+1); } else { @@ -244,6 +244,7 @@ really_install_package(const char *path, int* wipe_cache) ui->SetEnableReboot(false); int result = try_update_binary(path, &zip, wipe_cache); ui->SetEnableReboot(true); + ui->Print("\n"); sysReleaseMap(&map); @@ -251,7 +252,8 @@ really_install_package(const char *path, int* wipe_cache) } int -install_package(const char* path, int* wipe_cache, const char* install_file) +install_package(const char* path, int* wipe_cache, const char* install_file, + bool needs_mount) { FILE* install_log = fopen_path(install_file, "w"); if (install_log) { @@ -265,7 +267,7 @@ install_package(const char* path, int* wipe_cache, const char* install_file) LOGE("failed to set up expected mounts for install; aborting\n"); result = INSTALL_ERROR; } else { - result = really_install_package(path, wipe_cache); + result = really_install_package(path, wipe_cache, needs_mount); } if (install_log) { fputc(result == INSTALL_SUCCESS ? '1' : '0', install_log); diff --git a/install.h b/install.h index 2ada529e..53c0d312 100644 --- a/install.h +++ b/install.h @@ -28,7 +28,7 @@ enum { INSTALL_SUCCESS, INSTALL_ERROR, INSTALL_CORRUPT, INSTALL_NONE }; // returned and *wipe_cache is true on exit, caller should wipe the // cache partition. int install_package(const char *root_path, int* wipe_cache, - const char* install_file); + const char* install_file, bool needs_mount); #ifdef __cplusplus } diff --git a/minadbd/Android.mk b/minadbd/Android.mk index 5a4de682..b5fb8448 100644 --- a/minadbd/Android.mk +++ b/minadbd/Android.mk @@ -13,6 +13,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ adb.c \ fdevent.c \ + fuse_sideload.c \ transport.c \ transport_usb.c \ sockets.c \ @@ -25,8 +26,5 @@ LOCAL_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE LOCAL_MODULE := libminadbd -LOCAL_STATIC_LIBRARIES := libcutils libc +LOCAL_STATIC_LIBRARIES := libcutils libc libmincrypt include $(BUILD_STATIC_LIBRARY) - - - diff --git a/minadbd/adb.c b/minadbd/adb.c index 7291b4bd..127d072b 100644 --- a/minadbd/adb.c +++ b/minadbd/adb.c @@ -392,16 +392,6 @@ int adb_main() usb_init(); } - if (setgid(AID_SHELL) != 0) { - fprintf(stderr, "failed to setgid to shell\n"); - exit(1); - } - if (setuid(AID_SHELL) != 0) { - fprintf(stderr, "failed to setuid to shell\n"); - exit(1); - } - fprintf(stderr, "userid is %d\n", getuid()); - D("Event loop starting\n"); fdevent_loop(); diff --git a/minadbd/adb.h b/minadbd/adb.h index d389165a..770f34d1 100644 --- a/minadbd/adb.h +++ b/minadbd/adb.h @@ -400,6 +400,7 @@ int connection_state(atransport *t); #define CS_RECOVERY 4 #define CS_NOPERM 5 /* Insufficient permissions to communicate with the device */ #define CS_SIDELOAD 6 +#define CS_UNAUTHORIZED 7 extern int HOST; extern int SHELL_EXIT_NOTIFY_FD; @@ -420,6 +421,11 @@ extern int SHELL_EXIT_NOTIFY_FD; int sendfailmsg(int fd, const char *reason); int handle_host_request(char *service, transport_type ttype, char* serial, int reply_fd, asocket *s); -#define ADB_SIDELOAD_FILENAME "/tmp/update.zip" +// define the filenames created by the sideload-host FUSE filesystem +#define ADB_SIDELOAD_HOST_MOUNTPOINT "/sideload" +#define ADB_SIDELOAD_HOST_FILENAME "package.zip" +#define ADB_SIDELOAD_HOST_PATHNAME (ADB_SIDELOAD_HOST_MOUNTPOINT "/" ADB_SIDELOAD_HOST_FILENAME) +#define ADB_SIDELOAD_HOST_EXIT_FLAG "exit" +#define ADB_SIDELOAD_HOST_EXIT_PATHNAME (ADB_SIDELOAD_HOST_MOUNTPOINT "/" ADB_SIDELOAD_HOST_EXIT_FLAG) #endif diff --git a/minadbd/fuse_sideload.c b/minadbd/fuse_sideload.c new file mode 100644 index 00000000..def068e5 --- /dev/null +++ b/minadbd/fuse_sideload.c @@ -0,0 +1,508 @@ +/* + * Copyright (C) 2014 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. + */ + +// This module creates a special filesystem containing two files. +// +// "/sideload/package.zip" appears to be a normal file, but reading +// from it causes data to be fetched from the adb host. We can use +// this to sideload packages over an adb connection without having to +// store the entire package in RAM on the device. +// +// Because we may not trust the adb host, this filesystem maintains +// the following invariant: each read of a given position returns the +// same data as the first read at that position. That is, once a +// section of the file is read, future reads of that section return +// the same data. (Otherwise, a malicious adb host process could +// return one set of bits when the package is read for signature +// verification, and then different bits for when the package is +// accessed by the installer.) If the adb host returns something +// different than it did on the first read, the reader of the file +// will see their read fail with EINVAL. +// +// The other file, "/sideload/exit", is used to control the subprocess +// that creates this filesystem. Calling stat() on the exit file +// causes the filesystem to be unmounted and the adb process on the +// device shut down. +// +// Note that only the minimal set of file operations needed for these +// two files is implemented. In particular, you can't opendir() or +// readdir() on the "/sideload" directory; ls on it won't work. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "transport.h" +#include "adb.h" +#include "mincrypt/sha256.h" + +#define PACKAGE_FILE_ID (FUSE_ROOT_ID+1) +#define EXIT_FLAG_ID (FUSE_ROOT_ID+2) + +#define NO_STATUS 1 +#define NO_STATUS_EXIT 2 + +struct fuse_data { + int ffd; // file descriptor for the fuse socket + int sfd; // file descriptor for the adb channel + + uint64_t file_size; // bytes + + uint32_t block_size; // block size that the adb host is using to send the file to us + uint32_t file_blocks; // file size in block_size blocks + + uid_t uid; + gid_t gid; + + uint32_t curr_block; // cache the block most recently read from the host + uint8_t* block_data; + + uint8_t* extra_block; // another block of storage for reads that + // span two blocks + + uint8_t* hashes; // SHA-256 hash of each block (all zeros + // if block hasn't been read yet) +}; + +static void fuse_reply(struct fuse_data* fd, __u64 unique, const void *data, size_t len) +{ + struct fuse_out_header hdr; + struct iovec vec[2]; + int res; + + hdr.len = len + sizeof(hdr); + hdr.error = 0; + hdr.unique = unique; + + vec[0].iov_base = &hdr; + vec[0].iov_len = sizeof(hdr); + vec[1].iov_base = data; + vec[1].iov_len = len; + + res = writev(fd->ffd, vec, 2); + if (res < 0) { + printf("*** REPLY FAILED *** %d\n", errno); + } +} + +static int handle_init(void* data, struct fuse_data* fd, const struct fuse_in_header* hdr) { + const struct fuse_init_in* req = data; + struct fuse_init_out out; + + out.major = FUSE_KERNEL_VERSION; + out.minor = FUSE_KERNEL_MINOR_VERSION; + out.max_readahead = req->max_readahead; + out.flags = 0; + out.max_background = 32; + out.congestion_threshold = 32; + out.max_write = 4096; + fuse_reply(fd, hdr->unique, &out, sizeof(out)); + + return NO_STATUS; +} + +static void fill_attr(struct fuse_attr* attr, struct fuse_data* fd, + uint64_t nodeid, uint64_t size, uint32_t mode) { + memset(attr, 0, sizeof(*attr)); + attr->nlink = 1; + attr->uid = fd->uid; + attr->gid = fd->gid; + attr->blksize = 4096; + + attr->ino = nodeid; + attr->size = size; + attr->blocks = (size == 0) ? 0 : (((size-1) / attr->blksize) + 1); + attr->mode = mode; +} + +static int handle_getattr(void* data, struct fuse_data* fd, const struct fuse_in_header* hdr) { + const struct fuse_getattr_in* req = data; + struct fuse_attr_out out; + memset(&out, 0, sizeof(out)); + out.attr_valid = 10; + + if (hdr->nodeid == FUSE_ROOT_ID) { + fill_attr(&(out.attr), fd, hdr->nodeid, 4096, S_IFDIR | 0555); + } else if (hdr->nodeid == PACKAGE_FILE_ID) { + fill_attr(&(out.attr), fd, PACKAGE_FILE_ID, fd->file_size, S_IFREG | 0444); + } else if (hdr->nodeid == EXIT_FLAG_ID) { + fill_attr(&(out.attr), fd, EXIT_FLAG_ID, 0, S_IFREG | 0); + } else { + return -ENOENT; + } + + fuse_reply(fd, hdr->unique, &out, sizeof(out)); + return (hdr->nodeid == EXIT_FLAG_ID) ? NO_STATUS_EXIT : NO_STATUS; +} + +static int handle_lookup(void* data, struct fuse_data* fd, + const struct fuse_in_header* hdr) { + struct fuse_entry_out out; + memset(&out, 0, sizeof(out)); + out.entry_valid = 10; + out.attr_valid = 10; + + if (strncmp(ADB_SIDELOAD_HOST_FILENAME, data, + sizeof(ADB_SIDELOAD_HOST_FILENAME)) == 0) { + out.nodeid = PACKAGE_FILE_ID; + out.generation = PACKAGE_FILE_ID; + fill_attr(&(out.attr), fd, PACKAGE_FILE_ID, fd->file_size, S_IFREG | 0444); + } else if (strncmp(ADB_SIDELOAD_HOST_EXIT_FLAG, data, + sizeof(ADB_SIDELOAD_HOST_EXIT_FLAG)) == 0) { + out.nodeid = EXIT_FLAG_ID; + out.generation = EXIT_FLAG_ID; + fill_attr(&(out.attr), fd, EXIT_FLAG_ID, 0, S_IFREG | 0); + } else { + return -ENOENT; + } + + fuse_reply(fd, hdr->unique, &out, sizeof(out)); + return (out.nodeid == EXIT_FLAG_ID) ? NO_STATUS_EXIT : NO_STATUS; +} + +static int handle_open(void* data, struct fuse_data* fd, const struct fuse_in_header* hdr) { + const struct fuse_open_in* req = data; + + if (hdr->nodeid == EXIT_FLAG_ID) return -EPERM; + if (hdr->nodeid != PACKAGE_FILE_ID) return -ENOENT; + + struct fuse_open_out out; + memset(&out, 0, sizeof(out)); + out.fh = 10; // an arbitrary number; we always use the same handle + fuse_reply(fd, hdr->unique, &out, sizeof(out)); + return NO_STATUS; +} + +static int handle_flush(void* data, struct fuse_data* fd, const struct fuse_in_header* hdr) { + return 0; +} + +static int handle_release(void* data, struct fuse_data* fd, const struct fuse_in_header* hdr) { + return 0; +} + +// Fetch a block from the host into fd->curr_block and fd->block_data. +// Returns 0 on successful fetch, negative otherwise. +static int fetch_block(struct fuse_data* fd, uint32_t block) { + if (block == fd->curr_block) { + return 0; + } + + if (block >= fd->file_blocks) { + memset(fd->block_data, 0, fd->block_size); + fd->curr_block = block; + return 0; + } + + size_t fetch_size = fd->block_size; + if (block * fd->block_size + fetch_size > fd->file_size) { + // If we're reading the last (partial) block of the file, + // expect a shorter response from the host, and pad the rest + // of the block with zeroes. + fetch_size = fd->file_size - (block * fd->block_size); + memset(fd->block_data + fetch_size, 0, fd->block_size - fetch_size); + } + + char buf[10]; + snprintf(buf, sizeof(buf), "%08u", block); + if (writex(fd->sfd, buf, 8) < 0) { + fprintf(stderr, "failed to write to adb host: %s\n", strerror(errno)); + return -EIO; + } + + if (readx(fd->sfd, fd->block_data, fetch_size) < 0) { + fprintf(stderr, "failed to read from adb host: %s\n", strerror(errno)); + return -EIO; + } + + fd->curr_block = block; + + // Verify the hash of the block we just got from the host. + // + // - If the hash of the just-received data matches the stored hash + // for the block, accept it. + // - If the stored hash is all zeroes, store the new hash and + // accept the block (this is the first time we've read this + // block). + // - Otherwise, return -EINVAL for the read. + + uint8_t hash[SHA256_DIGEST_SIZE]; + SHA256_hash(fd->block_data, fd->block_size, hash); + uint8_t* blockhash = fd->hashes + block * SHA256_DIGEST_SIZE; + if (memcmp(hash, blockhash, SHA256_DIGEST_SIZE) == 0) { + return 0; + } + + int i; + for (i = 0; i < SHA256_DIGEST_SIZE; ++i) { + if (blockhash[i] != 0) { + fd->curr_block = -1; + return -EIO; + } + } + + memcpy(blockhash, hash, SHA256_DIGEST_SIZE); + return 0; +} + +static int handle_read(void* data, struct fuse_data* fd, const struct fuse_in_header* hdr) { + const struct fuse_read_in* req = data; + struct fuse_out_header outhdr; + struct iovec vec[3]; + int vec_used; + int result; + + if (hdr->nodeid != PACKAGE_FILE_ID) return -ENOENT; + + uint64_t offset = req->offset; + uint32_t size = req->size; + + // The docs on the fuse kernel interface are vague about what to + // do when a read request extends past the end of the file. We + // can return a short read -- the return structure does include a + // length field -- but in testing that caused the program using + // the file to segfault. (I speculate that this is due to the + // reading program accessing it via mmap; maybe mmap dislikes when + // you return something short of a whole page?) To fix this we + // zero-pad reads that extend past the end of the file so we're + // always returning exactly as many bytes as were requested. + // (Users of the mapped file have to know its real length anyway.) + + outhdr.len = sizeof(outhdr) + size; + outhdr.error = 0; + outhdr.unique = hdr->unique; + vec[0].iov_base = &outhdr; + vec[0].iov_len = sizeof(outhdr); + + uint32_t block = offset / fd->block_size; + result = fetch_block(fd, block); + if (result != 0) return result; + + // Two cases: + // + // - the read request is entirely within this block. In this + // case we can reply immediately. + // + // - the read request goes over into the next block. Note that + // since we mount the filesystem with max_read=block_size, a + // read can never span more than two blocks. In this case we + // copy the block to extra_block and issue a fetch for the + // following block. + + uint32_t block_offset = offset - (block * fd->block_size); + + if (size + block_offset <= fd->block_size) { + // First case: the read fits entirely in the first block. + + vec[1].iov_base = fd->block_data + block_offset; + vec[1].iov_len = size; + vec_used = 2; + } else { + // Second case: the read spills over into the next block. + + memcpy(fd->extra_block, fd->block_data + block_offset, + fd->block_size - block_offset); + vec[1].iov_base = fd->extra_block; + vec[1].iov_len = fd->block_size - block_offset; + + result = fetch_block(fd, block+1); + if (result != 0) return result; + vec[2].iov_base = fd->block_data; + vec[2].iov_len = size - vec[1].iov_len; + vec_used = 3; + } + + if (writev(fd->ffd, vec, vec_used) < 0) { + printf("*** READ REPLY FAILED: %s ***\n", strerror(errno)); + } + return NO_STATUS; +} + +int run_fuse(int sfd, uint64_t file_size, uint32_t block_size) +{ + int result; + + // If something's already mounted on our mountpoint, try to remove + // it. (Mostly in case of a previous abnormal exit.) + umount2(ADB_SIDELOAD_HOST_MOUNTPOINT, MNT_FORCE); + + if (block_size < 1024) { + fprintf(stderr, "block size (%u) is too small\n", block_size); + return -1; + } + if (block_size > (1<<22)) { // 4 MiB + fprintf(stderr, "block size (%u) is too large\n", block_size); + return -1; + } + + struct fuse_data fd; + memset(&fd, 0, sizeof(fd)); + fd.sfd = sfd; + fd.file_size = file_size; + fd.block_size = block_size; + fd.file_blocks = (file_size == 0) ? 0 : (((file_size-1) / block_size) + 1); + + if (fd.file_blocks > (1<<18)) { + fprintf(stderr, "file has too many blocks (%u)\n", fd.file_blocks); + result = -1; + goto done; + } + + fd.hashes = (uint8_t*)calloc(fd.file_blocks, SHA256_DIGEST_SIZE); + if (fd.hashes == NULL) { + fprintf(stderr, "failed to allocate %d bites for hashes\n", + fd.file_blocks * SHA256_DIGEST_SIZE); + result = -1; + goto done; + } + + fd.uid = getuid(); + fd.gid = getgid(); + + fd.curr_block = -1; + fd.block_data = (uint8_t*)malloc(block_size); + if (fd.block_data == NULL) { + fprintf(stderr, "failed to allocate %d bites for block_data\n", block_size); + result = -1; + goto done; + } + fd.extra_block = (uint8_t*)malloc(block_size); + if (fd.extra_block == NULL) { + fprintf(stderr, "failed to allocate %d bites for extra_block\n", block_size); + result = -1; + goto done; + } + + fd.ffd = open("/dev/fuse", O_RDWR); + if (fd.ffd < 0) { + perror("open /dev/fuse"); + result = -1; + goto done; + } + + char opts[256]; + snprintf(opts, sizeof(opts), + ("fd=%d,user_id=%d,group_id=%d,max_read=%zu," + "allow_other,rootmode=040000"), + fd.ffd, fd.uid, fd.gid, block_size); + + result = mount("/dev/fuse", ADB_SIDELOAD_HOST_MOUNTPOINT, + "fuse", MS_NOSUID | MS_NODEV | MS_RDONLY | MS_NOEXEC, opts); + if (result < 0) { + perror("mount"); + goto done; + } + uint8_t request_buffer[sizeof(struct fuse_in_header) + PATH_MAX*8]; + for (;;) { + ssize_t len = read(fd.ffd, request_buffer, sizeof(request_buffer)); + if (len < 0) { + if (errno != EINTR) { + perror("read request"); + if (errno == ENODEV) { + result = -1; + break; + } + } + continue; + } + + if ((size_t)len < sizeof(struct fuse_in_header)) { + fprintf(stderr, "request too short: len=%zu\n", (size_t)len); + continue; + } + + struct fuse_in_header* hdr = (struct fuse_in_header*) request_buffer; + void* data = request_buffer + sizeof(struct fuse_in_header); + + result = -ENOSYS; + + switch (hdr->opcode) { + case FUSE_INIT: + result = handle_init(data, &fd, hdr); + break; + + case FUSE_LOOKUP: + result = handle_lookup(data, &fd, hdr); + break; + + case FUSE_GETATTR: + result = handle_getattr(data, &fd, hdr); + break; + + case FUSE_OPEN: + result = handle_open(data, &fd, hdr); + break; + + case FUSE_READ: + result = handle_read(data, &fd, hdr); + break; + + case FUSE_FLUSH: + result = handle_flush(data, &fd, hdr); + break; + + case FUSE_RELEASE: + result = handle_release(data, &fd, hdr); + break; + + default: + fprintf(stderr, "unknown fuse request opcode %d\n", hdr->opcode); + break; + } + + if (result == NO_STATUS_EXIT) { + result = 0; + break; + } + + if (result != NO_STATUS) { + struct fuse_out_header outhdr; + outhdr.len = sizeof(outhdr); + outhdr.error = result; + outhdr.unique = hdr->unique; + write(fd.ffd, &outhdr, sizeof(outhdr)); + } + } + + done: + writex(sfd, "DONEDONE", 8); + result = umount2(ADB_SIDELOAD_HOST_MOUNTPOINT, MNT_DETACH); + if (result < 0) { + printf("fuse_sideload umount failed: %s\n", strerror(errno)); + } + + if (fd.ffd) close(fd.ffd); + free(fd.hashes); + free(fd.block_data); + free(fd.extra_block); + + return result; +} diff --git a/minadbd/fuse_sideload.h b/minadbd/fuse_sideload.h new file mode 100644 index 00000000..caeeec75 --- /dev/null +++ b/minadbd/fuse_sideload.h @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef __FUSE_SIDELOAD_H +#define __FUSE_SIDELOAD_H + +int run_fuse(int sfd, uint64_t file_size, uint32_t block_size); + +#endif diff --git a/minadbd/services.c b/minadbd/services.c index 752b33e8..bf57dc37 100644 --- a/minadbd/services.c +++ b/minadbd/services.c @@ -22,6 +22,7 @@ #include "sysdeps.h" #include "fdevent.h" +#include "fuse_sideload.h" #define TRACE_TAG TRACE_SERVICES #include "adb.h" @@ -43,44 +44,23 @@ void *service_bootstrap_func(void *x) return 0; } -static void sideload_service(int s, void *cookie) +static void sideload_host_service(int sfd, void* cookie) { - unsigned char buf[4096]; - unsigned count = (unsigned)(uintptr_t)cookie; - int fd; + char* saveptr; + const char* s = strtok_r(cookie, ":", &saveptr); + uint64_t file_size = strtoull(s, NULL, 10); + s = strtok_r(NULL, ":", &saveptr); + uint32_t block_size = strtoul(s, NULL, 10); - fprintf(stderr, "sideload_service invoked\n"); + printf("sideload-host file size %llu block size %lu\n", file_size, block_size); - fd = adb_creat(ADB_SIDELOAD_FILENAME, 0644); - if(fd < 0) { - fprintf(stderr, "failed to create %s\n", ADB_SIDELOAD_FILENAME); - adb_close(s); - exit(1); - } + int result = run_fuse(sfd, file_size, block_size); - while(count > 0) { - unsigned xfer = (count > 4096) ? 4096 : count; - if(readx(s, buf, xfer)) break; - if(writex(fd, buf, xfer)) break; - count -= xfer; - } - - if(count == 0) { - writex(s, "OKAY", 4); - } else { - writex(s, "FAIL", 4); - } - adb_close(fd); - adb_close(s); - - if (count == 0) { - fprintf(stderr, "adbd exiting after successful sideload\n"); - sleep(1); - exit(0); - } + printf("sideload_host finished\n"); + sleep(1); + exit(result == 0 ? 0 : 1); } - #if 0 static void echo_service(int fd, void *cookie) { @@ -149,7 +129,12 @@ int service_to_fd(const char *name) int ret = -1; if (!strncmp(name, "sideload:", 9)) { - ret = create_service_thread(sideload_service, (void*)(uintptr_t)atoi(name + 9)); + // this exit status causes recovery to print a special error + // message saying to use a newer adb (that supports + // sideload-host). + exit(3); + } else if (!strncmp(name, "sideload-host:", 14)) { + ret = create_service_thread(sideload_host_service, (void*)(name + 14)); #if 0 } else if(!strncmp(name, "echo:", 5)){ ret = create_service_thread(echo_service, 0); diff --git a/recovery.cpp b/recovery.cpp index 09af5f8b..5a2715cb 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -712,7 +712,7 @@ update_directory(const char* path, const char* unmount_when_done, ensure_path_unmounted(unmount_when_done); } if (copy) { - result = install_package(copy, wipe_cache, TEMPORARY_INSTALL_FILE); + result = install_package(copy, wipe_cache, TEMPORARY_INSTALL_FILE, true); free(copy); } else { result = INSTALL_ERROR; @@ -1047,7 +1047,7 @@ main(int argc, char **argv) { int status = INSTALL_SUCCESS; if (update_package != NULL) { - status = install_package(update_package, &wipe_cache, TEMPORARY_INSTALL_FILE); + status = install_package(update_package, &wipe_cache, TEMPORARY_INSTALL_FILE, true); if (status == INSTALL_SUCCESS && wipe_cache) { if (erase_volume("/cache")) { LOGE("Cache wipe (requested by package) failed."); From 93950229cf9a991589f6bb071a966b00349d18d6 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 8 Jul 2014 14:10:23 -0700 Subject: [PATCH 081/110] drop APPLY_CACHE and refactor APPLY_EXT Drop support for sideloading OTA packages of the cache partition (a half-solution that's long since been deprecated by "adb sideload"). Refactor the code to sideload OTA packages from SD cards: remove the installation code from the file browser. Change-Id: Id0dff6b27c4a5837546f174f50e2e1d0379c43db --- device.h | 3 +- recovery.cpp | 116 ++++++++++++++++++++++----------------------------- 2 files changed, 51 insertions(+), 68 deletions(-) diff --git a/device.h b/device.h index df71377c..57ec3fc3 100644 --- a/device.h +++ b/device.h @@ -65,7 +65,8 @@ class Device { // - invoke a specific action (a menu position: any non-negative number) virtual int HandleMenuKey(int key, int visible) = 0; - enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, APPLY_CACHE, + enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, + APPLY_CACHE, // APPLY_CACHE is deprecated; has no effect APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE, REBOOT_BOOTLOADER, SHUTDOWN }; diff --git a/recovery.cpp b/recovery.cpp index 5a2715cb..1c7c0d6a 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -604,9 +604,9 @@ static int compare_string(const void* a, const void* b) { return strcmp(*(const char**)a, *(const char**)b); } -static int -update_directory(const char* path, const char* unmount_when_done, - int* wipe_cache, Device* device) { +// Returns a malloc'd path, or NULL. +static char* +browse_directory(const char* path, Device* device) { ensure_path_mounted(path); const char* MENU_HEADERS[] = { "Choose a package to install:", @@ -618,10 +618,7 @@ update_directory(const char* path, const char* unmount_when_done, d = opendir(path); if (d == NULL) { LOGE("error opening %s: %s\n", path, strerror(errno)); - if (unmount_when_done != NULL) { - ensure_path_unmounted(unmount_when_done); - } - return 0; + return NULL; } const char** headers = prepend_title(MENU_HEADERS); @@ -677,58 +674,41 @@ update_directory(const char* path, const char* unmount_when_done, z_size += d_size; zips[z_size] = NULL; - int result; + char* result; int chosen_item = 0; - do { + while (true) { chosen_item = get_menu_selection(headers, zips, 1, chosen_item, device); char* item = zips[chosen_item]; int item_len = strlen(item); if (chosen_item == 0) { // item 0 is always "../" // go up but continue browsing (if the caller is update_directory) - result = -1; - break; - } else if (item[item_len-1] == '/') { - // recurse down into a subdirectory - char new_path[PATH_MAX]; - strlcpy(new_path, path, PATH_MAX); - strlcat(new_path, "/", PATH_MAX); - strlcat(new_path, item, PATH_MAX); - new_path[strlen(new_path)-1] = '\0'; // truncate the trailing '/' - result = update_directory(new_path, unmount_when_done, wipe_cache, device); - if (result >= 0) break; - } else { - // selected a zip file: attempt to install it, and return - // the status to the caller. - char new_path[PATH_MAX]; - strlcpy(new_path, path, PATH_MAX); - strlcat(new_path, "/", PATH_MAX); - strlcat(new_path, item, PATH_MAX); - - ui->Print("\n-- Install %s ...\n", path); - set_sdcard_update_bootloader_message(); - char* copy = copy_sideloaded_package(new_path); - if (unmount_when_done != NULL) { - ensure_path_unmounted(unmount_when_done); - } - if (copy) { - result = install_package(copy, wipe_cache, TEMPORARY_INSTALL_FILE, true); - free(copy); - } else { - result = INSTALL_ERROR; - } + result = NULL; break; } - } while (true); + + char new_path[PATH_MAX]; + strlcpy(new_path, path, PATH_MAX); + strlcat(new_path, "/", PATH_MAX); + strlcat(new_path, item, PATH_MAX); + + if (item[item_len-1] == '/') { + // recurse down into a subdirectory + new_path[strlen(new_path)-1] = '\0'; // truncate the trailing '/' + result = browse_directory(new_path, device); + if (result) break; + } else { + // selected a zip file: return the malloc'd path to the caller. + result = strdup(new_path); + break; + } + } int i; for (i = 0; i < z_size; ++i) free(zips[i]); free(zips); free(headers); - if (unmount_when_done != NULL) { - ensure_path_unmounted(unmount_when_done); - } return result; } @@ -800,7 +780,7 @@ prompt_and_wait(Device* device, int status) { // statement below. Device::BuiltinAction chosen_action = device->InvokeMenuItem(chosen_item); - int wipe_cache; + int wipe_cache = 0; switch (chosen_action) { case Device::NO_ACTION: break; @@ -822,8 +802,28 @@ prompt_and_wait(Device* device, int status) { if (!ui->IsTextVisible()) return Device::NO_ACTION; break; - case Device::APPLY_EXT: - status = update_directory(SDCARD_ROOT, SDCARD_ROOT, &wipe_cache, device); + case Device::APPLY_EXT: { + ensure_path_mounted(SDCARD_ROOT); + char* path = browse_directory(SDCARD_ROOT, device); + if (path == NULL) { + ui->Print("\n-- No package file selected.\n", path); + break; + } + + ui->Print("\n-- Install %s ...\n", path); + set_sdcard_update_bootloader_message(); + char* copy = copy_sideloaded_package(path); + free(path); + ensure_path_unmounted(SDCARD_ROOT); + + int status; + if (copy) { + status = install_package(copy, &wipe_cache, TEMPORARY_INSTALL_FILE, true); + free(copy); + } else { + status = INSTALL_ERROR; + } + if (status == INSTALL_SUCCESS && wipe_cache) { ui->Print("\n-- Wiping cache (at package request)...\n"); if (erase_volume("/cache")) { @@ -843,28 +843,10 @@ prompt_and_wait(Device* device, int status) { } } break; + } case Device::APPLY_CACHE: - // Don't unmount cache at the end of this. - status = update_directory(CACHE_ROOT, NULL, &wipe_cache, device); - if (status == INSTALL_SUCCESS && wipe_cache) { - ui->Print("\n-- Wiping cache (at package request)...\n"); - if (erase_volume("/cache")) { - ui->Print("Cache wipe failed.\n"); - } else { - ui->Print("Cache wipe complete.\n"); - } - } - if (status >= 0) { - if (status != INSTALL_SUCCESS) { - ui->SetBackground(RecoveryUI::ERROR); - ui->Print("Installation aborted.\n"); - } else if (!ui->IsTextVisible()) { - return Device::NO_ACTION; // reboot if logs aren't visible - } else { - ui->Print("\nInstall from cache complete.\n"); - } - } + ui->Print("\nAPPLY_CACHE is deprecated.\n"); break; case Device::APPLY_ADB_SIDELOAD: From 18a78e0a162c35756628610307f41179816d3333 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 10 Jul 2014 07:31:46 -0700 Subject: [PATCH 082/110] refactor fuse sideloading code Split the adb-specific portions (fetching a block from the adb host and closing the connections) out from the rest of the FUSE filesystem code, so that we can reuse the fuse stuff for installing off sdcards as well. Change-Id: I0ba385fd35999c5f5cad27842bc82024a264dd14 --- Android.mk | 13 ++++ adb_install.cpp | 11 +-- minadbd/fuse_sideload.c => fuse_sideload.c | 43 ++++++------ fuse_sideload.h | 38 +++++++++++ minadbd/Android.mk | 6 +- minadbd/adb.h | 7 -- minadbd/fuse_adb_provider.c | 67 +++++++++++++++++++ .../{fuse_sideload.h => fuse_adb_provider.h} | 6 +- minadbd/services.c | 4 +- 9 files changed, 152 insertions(+), 43 deletions(-) rename minadbd/fuse_sideload.c => fuse_sideload.c (93%) create mode 100644 fuse_sideload.h create mode 100644 minadbd/fuse_adb_provider.c rename minadbd/{fuse_sideload.h => fuse_adb_provider.h} (83%) diff --git a/Android.mk b/Android.mk index 1165acba..f469182e 100644 --- a/Android.mk +++ b/Android.mk @@ -15,6 +15,18 @@ LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := fuse_sideload.c + +LOCAL_CFLAGS := -O2 -g -DADB_HOST=0 -Wall -Wno-unused-parameter +LOCAL_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE + +LOCAL_MODULE := libfusesideload + +LOCAL_STATIC_LIBRARIES := libcutils libc libmincrypt +include $(BUILD_STATIC_LIBRARY) + include $(CLEAR_VARS) LOCAL_SRC_FILES := \ @@ -49,6 +61,7 @@ LOCAL_STATIC_LIBRARIES := \ libmtdutils \ libmincrypt \ libminadbd \ + libfusesideload \ libminui \ libpng \ libfs_mgr \ diff --git a/adb_install.cpp b/adb_install.cpp index fb7860c9..be3b9a06 100644 --- a/adb_install.cpp +++ b/adb_install.cpp @@ -31,7 +31,8 @@ #include "common.h" #include "adb_install.h" extern "C" { -#include "minadbd/adb.h" +#include "minadbd/fuse_adb_provider.h" +#include "fuse_sideload.h" } static RecoveryUI* ui = NULL; @@ -89,7 +90,7 @@ apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { _exit(-1); } - // ADB_SIDELOAD_HOST_PATHNAME will start to exist once the host + // FUSE_SIDELOAD_HOST_PATHNAME will start to exist once the host // connects and starts serving a package. Poll for its // appearance. (Note that inotify doesn't work with FUSE.) int result; @@ -103,7 +104,7 @@ apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { break; } - if (stat(ADB_SIDELOAD_HOST_PATHNAME, &st) != 0) { + if (stat(FUSE_SIDELOAD_HOST_PATHNAME, &st) != 0) { if (errno == ENOENT && i < ADB_INSTALL_TIMEOUT-1) { sleep(1); continue; @@ -114,14 +115,14 @@ apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { break; } } - result = install_package(ADB_SIDELOAD_HOST_PATHNAME, wipe_cache, install_file, false); + result = install_package(FUSE_SIDELOAD_HOST_PATHNAME, wipe_cache, install_file, false); break; } if (!waited) { // Calling stat() on this magic filename signals the minadbd // subprocess to shut down. - stat(ADB_SIDELOAD_HOST_EXIT_PATHNAME, &st); + stat(FUSE_SIDELOAD_HOST_EXIT_PATHNAME, &st); // TODO(dougz): there should be a way to cancel waiting for a // package (by pushing some button combo on the device). For now diff --git a/minadbd/fuse_sideload.c b/fuse_sideload.c similarity index 93% rename from minadbd/fuse_sideload.c rename to fuse_sideload.c index def068e5..ab91defb 100644 --- a/minadbd/fuse_sideload.c +++ b/fuse_sideload.c @@ -60,9 +60,8 @@ #include #include -#include "transport.h" -#include "adb.h" #include "mincrypt/sha256.h" +#include "fuse_sideload.h" #define PACKAGE_FILE_ID (FUSE_ROOT_ID+1) #define EXIT_FLAG_ID (FUSE_ROOT_ID+2) @@ -72,7 +71,9 @@ struct fuse_data { int ffd; // file descriptor for the fuse socket - int sfd; // file descriptor for the adb channel + + struct provider_vtab* vtab; + void* cookie; uint64_t file_size; // bytes @@ -170,13 +171,13 @@ static int handle_lookup(void* data, struct fuse_data* fd, out.entry_valid = 10; out.attr_valid = 10; - if (strncmp(ADB_SIDELOAD_HOST_FILENAME, data, - sizeof(ADB_SIDELOAD_HOST_FILENAME)) == 0) { + if (strncmp(FUSE_SIDELOAD_HOST_FILENAME, data, + sizeof(FUSE_SIDELOAD_HOST_FILENAME)) == 0) { out.nodeid = PACKAGE_FILE_ID; out.generation = PACKAGE_FILE_ID; fill_attr(&(out.attr), fd, PACKAGE_FILE_ID, fd->file_size, S_IFREG | 0444); - } else if (strncmp(ADB_SIDELOAD_HOST_EXIT_FLAG, data, - sizeof(ADB_SIDELOAD_HOST_EXIT_FLAG)) == 0) { + } else if (strncmp(FUSE_SIDELOAD_HOST_EXIT_FLAG, data, + sizeof(FUSE_SIDELOAD_HOST_EXIT_FLAG)) == 0) { out.nodeid = EXIT_FLAG_ID; out.generation = EXIT_FLAG_ID; fill_attr(&(out.attr), fd, EXIT_FLAG_ID, 0, S_IFREG | 0); @@ -231,17 +232,8 @@ static int fetch_block(struct fuse_data* fd, uint32_t block) { memset(fd->block_data + fetch_size, 0, fd->block_size - fetch_size); } - char buf[10]; - snprintf(buf, sizeof(buf), "%08u", block); - if (writex(fd->sfd, buf, 8) < 0) { - fprintf(stderr, "failed to write to adb host: %s\n", strerror(errno)); - return -EIO; - } - - if (readx(fd->sfd, fd->block_data, fetch_size) < 0) { - fprintf(stderr, "failed to read from adb host: %s\n", strerror(errno)); - return -EIO; - } + int result = fd->vtab->read_block(fd->cookie, block, fd->block_data, fetch_size); + if (result < 0) return result; fd->curr_block = block; @@ -346,13 +338,14 @@ static int handle_read(void* data, struct fuse_data* fd, const struct fuse_in_he return NO_STATUS; } -int run_fuse(int sfd, uint64_t file_size, uint32_t block_size) +int run_fuse_sideload(struct provider_vtab* vtab, void* cookie, + uint64_t file_size, uint32_t block_size) { int result; // If something's already mounted on our mountpoint, try to remove // it. (Mostly in case of a previous abnormal exit.) - umount2(ADB_SIDELOAD_HOST_MOUNTPOINT, MNT_FORCE); + umount2(FUSE_SIDELOAD_HOST_MOUNTPOINT, MNT_FORCE); if (block_size < 1024) { fprintf(stderr, "block size (%u) is too small\n", block_size); @@ -365,7 +358,8 @@ int run_fuse(int sfd, uint64_t file_size, uint32_t block_size) struct fuse_data fd; memset(&fd, 0, sizeof(fd)); - fd.sfd = sfd; + fd.vtab = vtab; + fd.cookie = cookie; fd.file_size = file_size; fd.block_size = block_size; fd.file_blocks = (file_size == 0) ? 0 : (((file_size-1) / block_size) + 1); @@ -414,7 +408,7 @@ int run_fuse(int sfd, uint64_t file_size, uint32_t block_size) "allow_other,rootmode=040000"), fd.ffd, fd.uid, fd.gid, block_size); - result = mount("/dev/fuse", ADB_SIDELOAD_HOST_MOUNTPOINT, + result = mount("/dev/fuse", FUSE_SIDELOAD_HOST_MOUNTPOINT, "fuse", MS_NOSUID | MS_NODEV | MS_RDONLY | MS_NOEXEC, opts); if (result < 0) { perror("mount"); @@ -493,8 +487,9 @@ int run_fuse(int sfd, uint64_t file_size, uint32_t block_size) } done: - writex(sfd, "DONEDONE", 8); - result = umount2(ADB_SIDELOAD_HOST_MOUNTPOINT, MNT_DETACH); + fd.vtab->close(fd.cookie); + + result = umount2(FUSE_SIDELOAD_HOST_MOUNTPOINT, MNT_DETACH); if (result < 0) { printf("fuse_sideload umount failed: %s\n", strerror(errno)); } diff --git a/fuse_sideload.h b/fuse_sideload.h new file mode 100644 index 00000000..c0b16efb --- /dev/null +++ b/fuse_sideload.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef __FUSE_SIDELOAD_H +#define __FUSE_SIDELOAD_H + +// define the filenames created by the sideload FUSE filesystem +#define FUSE_SIDELOAD_HOST_MOUNTPOINT "/sideload" +#define FUSE_SIDELOAD_HOST_FILENAME "package.zip" +#define FUSE_SIDELOAD_HOST_PATHNAME (FUSE_SIDELOAD_HOST_MOUNTPOINT "/" FUSE_SIDELOAD_HOST_FILENAME) +#define FUSE_SIDELOAD_HOST_EXIT_FLAG "exit" +#define FUSE_SIDELOAD_HOST_EXIT_PATHNAME (FUSE_SIDELOAD_HOST_MOUNTPOINT "/" FUSE_SIDELOAD_HOST_EXIT_FLAG) + +struct provider_vtab { + // read a block + int (*read_block)(void* cookie, uint32_t block, uint8_t* buffer, uint32_t fetch_size); + + // close down + void (*close)(void* cookie); +}; + +int run_fuse_sideload(struct provider_vtab* vtab, void* cookie, + uint64_t file_size, uint32_t block_size); + +#endif diff --git a/minadbd/Android.mk b/minadbd/Android.mk index b5fb8448..04956d87 100644 --- a/minadbd/Android.mk +++ b/minadbd/Android.mk @@ -13,7 +13,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ adb.c \ fdevent.c \ - fuse_sideload.c \ + fuse_adb_provider.c \ transport.c \ transport_usb.c \ sockets.c \ @@ -23,8 +23,10 @@ LOCAL_SRC_FILES := \ LOCAL_CFLAGS := -O2 -g -DADB_HOST=0 -Wall -Wno-unused-parameter LOCAL_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE +LOCAL_C_INCLUDES += bootable/recovery LOCAL_MODULE := libminadbd -LOCAL_STATIC_LIBRARIES := libcutils libc libmincrypt +LOCAL_STATIC_LIBRARIES := libfusesideload libcutils libc + include $(BUILD_STATIC_LIBRARY) diff --git a/minadbd/adb.h b/minadbd/adb.h index 770f34d1..714868f5 100644 --- a/minadbd/adb.h +++ b/minadbd/adb.h @@ -421,11 +421,4 @@ extern int SHELL_EXIT_NOTIFY_FD; int sendfailmsg(int fd, const char *reason); int handle_host_request(char *service, transport_type ttype, char* serial, int reply_fd, asocket *s); -// define the filenames created by the sideload-host FUSE filesystem -#define ADB_SIDELOAD_HOST_MOUNTPOINT "/sideload" -#define ADB_SIDELOAD_HOST_FILENAME "package.zip" -#define ADB_SIDELOAD_HOST_PATHNAME (ADB_SIDELOAD_HOST_MOUNTPOINT "/" ADB_SIDELOAD_HOST_FILENAME) -#define ADB_SIDELOAD_HOST_EXIT_FLAG "exit" -#define ADB_SIDELOAD_HOST_EXIT_PATHNAME (ADB_SIDELOAD_HOST_MOUNTPOINT "/" ADB_SIDELOAD_HOST_EXIT_FLAG) - #endif diff --git a/minadbd/fuse_adb_provider.c b/minadbd/fuse_adb_provider.c new file mode 100644 index 00000000..f80533a8 --- /dev/null +++ b/minadbd/fuse_adb_provider.c @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2014 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. + */ + +#include +#include +#include + +#include "adb.h" +#include "fuse_sideload.h" + +struct adb_data { + int sfd; // file descriptor for the adb channel + + uint64_t file_size; + uint32_t block_size; +}; + +static int read_block_adb(void* cookie, uint32_t block, uint8_t* buffer, uint32_t fetch_size) { + struct adb_data* ad = (struct adb_data*)cookie; + + char buf[10]; + snprintf(buf, sizeof(buf), "%08u", block); + if (writex(ad->sfd, buf, 8) < 0) { + fprintf(stderr, "failed to write to adb host: %s\n", strerror(errno)); + return -EIO; + } + + if (readx(ad->sfd, buffer, fetch_size) < 0) { + fprintf(stderr, "failed to read from adb host: %s\n", strerror(errno)); + return -EIO; + } + + return 0; +} + +static void close_adb(void* cookie) { + struct adb_data* ad = (struct adb_data*)cookie; + + writex(ad->sfd, "DONEDONE", 8); +} + +int run_adb_fuse(int sfd, uint64_t file_size, uint32_t block_size) { + struct adb_data ad; + struct provider_vtab vtab; + + ad.sfd = sfd; + ad.file_size = file_size; + ad.block_size = block_size; + + vtab.read_block = read_block_adb; + vtab.close = close_adb; + + return run_fuse_sideload(&vtab, &ad, file_size, block_size); +} diff --git a/minadbd/fuse_sideload.h b/minadbd/fuse_adb_provider.h similarity index 83% rename from minadbd/fuse_sideload.h rename to minadbd/fuse_adb_provider.h index caeeec75..0eb1f79d 100644 --- a/minadbd/fuse_sideload.h +++ b/minadbd/fuse_adb_provider.h @@ -14,9 +14,9 @@ * limitations under the License. */ -#ifndef __FUSE_SIDELOAD_H -#define __FUSE_SIDELOAD_H +#ifndef __FUSE_ADB_PROVIDER_H +#define __FUSE_ADB_PROVIDER_H -int run_fuse(int sfd, uint64_t file_size, uint32_t block_size); +int run_adb_fuse(int sfd, uint64_t file_size, uint32_t block_size); #endif diff --git a/minadbd/services.c b/minadbd/services.c index bf57dc37..218b84a3 100644 --- a/minadbd/services.c +++ b/minadbd/services.c @@ -22,7 +22,7 @@ #include "sysdeps.h" #include "fdevent.h" -#include "fuse_sideload.h" +#include "fuse_adb_provider.h" #define TRACE_TAG TRACE_SERVICES #include "adb.h" @@ -54,7 +54,7 @@ static void sideload_host_service(int sfd, void* cookie) printf("sideload-host file size %llu block size %lu\n", file_size, block_size); - int result = run_fuse(sfd, file_size, block_size); + int result = run_adb_fuse(sfd, file_size, block_size); printf("sideload_host finished\n"); sleep(1); From 945fc68c62692467ddb8b7d714bcf0bf01c783c2 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 10 Jul 2014 10:50:39 -0700 Subject: [PATCH 083/110] do sdcard sideloading through the fuse filesystem Make a fuse filesystem that sits on top of the selected package file on the sdcard, so we can verify that the file contents don't change while being read and avoid copying the file to /tmp (that is, RAM) before verifying and installing it. Change-Id: Ifd982aa68bfe469eda5f839042648654bf7386a1 --- Android.mk | 3 +- fuse_sdcard_provider.c | 141 +++++++++++++++++++++++++++++++++++++++++ fuse_sdcard_provider.h | 23 +++++++ recovery.cpp | 110 +++----------------------------- 4 files changed, 175 insertions(+), 102 deletions(-) create mode 100644 fuse_sdcard_provider.c create mode 100644 fuse_sdcard_provider.h diff --git a/Android.mk b/Android.mk index f469182e..1a91f002 100644 --- a/Android.mk +++ b/Android.mk @@ -38,7 +38,8 @@ LOCAL_SRC_FILES := \ screen_ui.cpp \ asn1_decoder.cpp \ verifier.cpp \ - adb_install.cpp + adb_install.cpp \ + fuse_sdcard_provider.c LOCAL_MODULE := recovery diff --git a/fuse_sdcard_provider.c b/fuse_sdcard_provider.c new file mode 100644 index 00000000..19fb52df --- /dev/null +++ b/fuse_sdcard_provider.c @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2014 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "fuse_sideload.h" + +struct file_data { + int fd; // the underlying sdcard file + + uint64_t file_size; + uint32_t block_size; +}; + +static int read_block_file(void* cookie, uint32_t block, uint8_t* buffer, uint32_t fetch_size) { + struct file_data* fd = (struct file_data*)cookie; + + if (lseek(fd->fd, block * fd->block_size, SEEK_SET) < 0) { + printf("seek on sdcard failed: %s\n", strerror(errno)); + return -EIO; + } + + while (fetch_size > 0) { + ssize_t r = read(fd->fd, buffer, fetch_size); + if (r < 0) { + if (r != -EINTR) { + printf("read on sdcard failed: %s\n", strerror(errno)); + return -EIO; + } + r = 0; + } + fetch_size -= r; + buffer += r; + } + + return 0; +} + +static void close_file(void* cookie) { + struct file_data* fd = (struct file_data*)cookie; + close(fd->fd); +} + +struct token { + pthread_t th; + const char* path; + int result; +}; + +static void* run_sdcard_fuse(void* cookie) { + struct token* t = (struct token*)cookie; + + struct stat sb; + if (stat(t->path, &sb) < 0) { + fprintf(stderr, "failed to stat %s: %s\n", t->path, strerror(errno)); + t->result = -1; + return NULL; + } + + struct file_data fd; + struct provider_vtab vtab; + + fd.fd = open(t->path, O_RDONLY); + if (fd.fd < 0) { + fprintf(stderr, "failed to open %s: %s\n", t->path, strerror(errno)); + t->result = -1; + return NULL; + } + fd.file_size = sb.st_size; + fd.block_size = 65536; + + vtab.read_block = read_block_file; + vtab.close = close_file; + + t->result = run_fuse_sideload(&vtab, &fd, fd.file_size, fd.block_size); + return NULL; +} + +// How long (in seconds) we wait for the fuse-provided package file to +// appear, before timing out. +#define SDCARD_INSTALL_TIMEOUT 10 + +void* start_sdcard_fuse(const char* path) { + struct token* t = malloc(sizeof(struct token)); + + t->path = path; + pthread_create(&(t->th), NULL, run_sdcard_fuse, t); + + struct stat st; + int i; + for (i = 0; i < SDCARD_INSTALL_TIMEOUT; ++i) { + if (stat(FUSE_SIDELOAD_HOST_PATHNAME, &st) != 0) { + if (errno == ENOENT && i < SDCARD_INSTALL_TIMEOUT-1) { + sleep(1); + continue; + } else { + return NULL; + } + } + } + + // The installation process expects to find the sdcard unmounted. + // Unmount it with MNT_DETACH so that our open file continues to + // work but new references see it as unmounted. + umount2("/sdcard", MNT_DETACH); + + return t; +} + +void finish_sdcard_fuse(void* cookie) { + if (cookie == NULL) return; + struct token* t = (struct token*)cookie; + + // Calling stat() on this magic filename signals the fuse + // filesystem to shut down. + struct stat st; + stat(FUSE_SIDELOAD_HOST_EXIT_PATHNAME, &st); + + pthread_join(t->th, NULL); + free(t); +} diff --git a/fuse_sdcard_provider.h b/fuse_sdcard_provider.h new file mode 100644 index 00000000..dc2982ca --- /dev/null +++ b/fuse_sdcard_provider.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef __FUSE_SDCARD_PROVIDER_H +#define __FUSE_SDCARD_PROVIDER_H + +void* start_sdcard_fuse(const char* path); +void finish_sdcard_fuse(void* token); + +#endif diff --git a/recovery.cpp b/recovery.cpp index 1c7c0d6a..d2d85e7c 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -44,6 +44,8 @@ #include "adb_install.h" extern "C" { #include "minadbd/adb.h" +#include "fuse_sideload.h" +#include "fuse_sdcard_provider.h" } struct selabel_handle *sehandle; @@ -73,7 +75,6 @@ static const char *CACHE_ROOT = "/cache"; static const char *SDCARD_ROOT = "/sdcard"; static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log"; static const char *TEMPORARY_INSTALL_FILE = "/tmp/last_install"; -static const char *SIDELOAD_TEMP_DIR = "/tmp/sideload"; RecoveryUI* ui = NULL; char* locale = NULL; @@ -439,96 +440,6 @@ erase_volume(const char *volume) { return result; } -static char* -copy_sideloaded_package(const char* original_path) { - if (ensure_path_mounted(original_path) != 0) { - LOGE("Can't mount %s\n", original_path); - return NULL; - } - - if (ensure_path_mounted(SIDELOAD_TEMP_DIR) != 0) { - LOGE("Can't mount %s\n", SIDELOAD_TEMP_DIR); - return NULL; - } - - if (mkdir(SIDELOAD_TEMP_DIR, 0700) != 0) { - if (errno != EEXIST) { - LOGE("Can't mkdir %s (%s)\n", SIDELOAD_TEMP_DIR, strerror(errno)); - return NULL; - } - } - - // verify that SIDELOAD_TEMP_DIR is exactly what we expect: a - // directory, owned by root, readable and writable only by root. - struct stat st; - if (stat(SIDELOAD_TEMP_DIR, &st) != 0) { - LOGE("failed to stat %s (%s)\n", SIDELOAD_TEMP_DIR, strerror(errno)); - return NULL; - } - if (!S_ISDIR(st.st_mode)) { - LOGE("%s isn't a directory\n", SIDELOAD_TEMP_DIR); - return NULL; - } - if ((st.st_mode & 0777) != 0700) { - LOGE("%s has perms %o\n", SIDELOAD_TEMP_DIR, st.st_mode); - return NULL; - } - if (st.st_uid != 0) { - LOGE("%s owned by %lu; not root\n", SIDELOAD_TEMP_DIR, st.st_uid); - return NULL; - } - - char copy_path[PATH_MAX]; - strcpy(copy_path, SIDELOAD_TEMP_DIR); - strcat(copy_path, "/package.zip"); - - char* buffer = (char*)malloc(BUFSIZ); - if (buffer == NULL) { - LOGE("Failed to allocate buffer\n"); - return NULL; - } - - size_t read; - FILE* fin = fopen(original_path, "rb"); - if (fin == NULL) { - LOGE("Failed to open %s (%s)\n", original_path, strerror(errno)); - return NULL; - } - FILE* fout = fopen(copy_path, "wb"); - if (fout == NULL) { - LOGE("Failed to open %s (%s)\n", copy_path, strerror(errno)); - return NULL; - } - - while ((read = fread(buffer, 1, BUFSIZ, fin)) > 0) { - if (fwrite(buffer, 1, read, fout) != read) { - LOGE("Short write of %s (%s)\n", copy_path, strerror(errno)); - return NULL; - } - } - - free(buffer); - - if (fclose(fout) != 0) { - LOGE("Failed to close %s (%s)\n", copy_path, strerror(errno)); - return NULL; - } - - if (fclose(fin) != 0) { - LOGE("Failed to close %s (%s)\n", original_path, strerror(errno)); - return NULL; - } - - // "adb push" is happy to overwrite read-only files when it's - // running as root, but we'll try anyway. - if (chmod(copy_path, 0400) != 0) { - LOGE("Failed to chmod %s (%s)\n", copy_path, strerror(errno)); - return NULL; - } - - return strdup(copy_path); -} - static const char** prepend_title(const char* const* headers) { // count the number of lines in our title, plus the @@ -812,17 +723,13 @@ prompt_and_wait(Device* device, int status) { ui->Print("\n-- Install %s ...\n", path); set_sdcard_update_bootloader_message(); - char* copy = copy_sideloaded_package(path); - free(path); - ensure_path_unmounted(SDCARD_ROOT); + void* token = start_sdcard_fuse(path); - int status; - if (copy) { - status = install_package(copy, &wipe_cache, TEMPORARY_INSTALL_FILE, true); - free(copy); - } else { - status = INSTALL_ERROR; - } + int status = install_package(FUSE_SIDELOAD_HOST_PATHNAME, &wipe_cache, + TEMPORARY_INSTALL_FILE, false); + + finish_sdcard_fuse(token); + ensure_path_unmounted(SDCARD_ROOT); if (status == INSTALL_SUCCESS && wipe_cache) { ui->Print("\n-- Wiping cache (at package request)...\n"); @@ -832,6 +739,7 @@ prompt_and_wait(Device* device, int status) { ui->Print("Cache wipe complete.\n"); } } + if (status >= 0) { if (status != INSTALL_SUCCESS) { ui->SetBackground(RecoveryUI::ERROR); From a91ecc59b2753a3dcc93b2619559a980074e77bd Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Mon, 21 Jul 2014 17:40:02 -0700 Subject: [PATCH 084/110] Auto create parent directories for rename support Sometimes renames will move a file into a directory that does not yet exist. This will create the parent directories, using the same symlink logic, to ensure that there is a valid destination. Change-Id: Iaa005a12ce800c39f4db20f7c25a2a68cb40a52d --- updater/install.c | 8 +++++--- updater/install.h | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/updater/install.c b/updater/install.c index edc386dc..5025881d 100644 --- a/updater/install.c +++ b/updater/install.c @@ -357,8 +357,10 @@ Value* RenameFn(const char* name, State* state, int argc, Expr* argv[]) { name); goto done; } - - if (rename(src_name, dst_name) != 0) { + if (make_parents(dst_name) != 0) { + ErrorAbort(state, "Creating parent of %s() failed, error %s()", + dst_name, strerror(errno)); + } else if (rename(src_name, dst_name) != 0) { ErrorAbort(state, "Rename of %s() to %s() failed, error %s()", src_name, dst_name, strerror(errno)); } else { @@ -642,7 +644,7 @@ static int make_parents(char* name) { *p = '\0'; if (make_parents(name) < 0) return -1; int result = mkdir(name, 0700); - if (result == 0) printf("symlink(): created [%s]\n", name); + if (result == 0) printf("created [%s]\n", name); *p = '/'; if (result == 0 || errno == EEXIST) { // successfully created or already existed; we're done diff --git a/updater/install.h b/updater/install.h index 94f344f8..659c8b41 100644 --- a/updater/install.h +++ b/updater/install.h @@ -19,4 +19,6 @@ void RegisterInstallFunctions(); +static int make_parents(char* name); + #endif From eaf33654c1817bd665831a13c5bd0c04daabee02 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 31 Jul 2014 14:59:01 -0700 Subject: [PATCH 085/110] only do uncryption on packages in /data If recovery is invoked with a package somewhere other than /data, leave it alone. Change-Id: Ief358b53df467ae24a65e30e7a631da59bf13683 --- uncrypt/uncrypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index 24d1ffc2..bce53dbb 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -159,7 +159,7 @@ char* parse_recovery_command_file() while (fgets(temp, sizeof(temp), f)) { printf("read: %s", temp); - if (strncmp(temp, "--update_package=", strlen("--update_package=")) == 0) { + if (strncmp(temp, "--update_package=/data/", strlen("--update_package=/data/")) == 0) { fn = strdup(temp + strlen("--update_package=")); strcpy(temp, "--update_package=@" CACHE_BLOCK_MAP "\n"); } From 78d458c3d279a24a60fda013026b7a5454d01a9b Mon Sep 17 00:00:00 2001 From: JP Abgrall Date: Mon, 4 Aug 2014 16:44:33 -0700 Subject: [PATCH 086/110] Fix length printing + formats Fix wrong argument order. Fix for 32 vs 64 bit. (reported by htc) Change-Id: Ie37a280bed2848199bcc075500e1326e371cd326 --- roots.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roots.cpp b/roots.cpp index 8f990190..ee140160 100644 --- a/roots.cpp +++ b/roots.cpp @@ -235,15 +235,15 @@ int format_volume(const char* volume) { result = make_ext4fs(v->blk_device, length, volume, sehandle); } else { /* Has to be f2fs because we checked earlier. */ if (v->key_loc != NULL && strcmp(v->key_loc, "footer") == 0 && length < 0) { - LOGE("format_volume: crypt footer + negative length (%lld) not supported on %s\n", v->fs_type, length); + LOGE("format_volume: crypt footer + negative length (%zd) not supported on %s\n", length, v->fs_type); return -1; } if (length < 0) { - LOGE("format_volume: negative length (%ld) not supported on %s\n", length, v->fs_type); + LOGE("format_volume: negative length (%zd) not supported on %s\n", length, v->fs_type); return -1; } char *num_sectors; - if (asprintf(&num_sectors, "%ld", length / 512) <= 0) { + if (asprintf(&num_sectors, "%zd", length / 512) <= 0) { LOGE("format_volume: failed to create %s command for %s\n", v->fs_type, v->blk_device); return -1; } From 2b5f0e0f767ce51d9605809052ad04fe83d1df83 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 6 Aug 2014 08:25:03 -0700 Subject: [PATCH 087/110] remove spurious parens from error message These error messages include empty parens after each string substition. Ill-advised cut and paste, probably. Bug: 16467401 Change-Id: Ib623172d6228354afdcc2e33442cc53a07f0ecbc --- updater/install.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/updater/install.c b/updater/install.c index 5025881d..19861800 100644 --- a/updater/install.c +++ b/updater/install.c @@ -353,15 +353,14 @@ Value* RenameFn(const char* name, State* state, int argc, Expr* argv[]) { goto done; } if (strlen(dst_name) == 0) { - ErrorAbort(state, "dst_name argument to %s() can't be empty", - name); + ErrorAbort(state, "dst_name argument to %s() can't be empty", name); goto done; } if (make_parents(dst_name) != 0) { - ErrorAbort(state, "Creating parent of %s() failed, error %s()", + ErrorAbort(state, "Creating parent of %s failed, error %s", dst_name, strerror(errno)); } else if (rename(src_name, dst_name) != 0) { - ErrorAbort(state, "Rename of %s() to %s() failed, error %s()", + ErrorAbort(state, "Rename of %s to %s failed, error %s", src_name, dst_name, strerror(errno)); } else { result = dst_name; From ee19387905650cab5da7dd97ada5502cd17ac93d Mon Sep 17 00:00:00 2001 From: Andres Morales Date: Tue, 5 Aug 2014 19:49:09 -0700 Subject: [PATCH 088/110] Erase PST partition if its marked to be erased. We need to wipe the challenges on this partition if OEM unlock is enabled, as this is a signal that the user has opted out of factory reset protection. go/factory-reset Bug: 16633064 Change-Id: Icb8f1433bf99ca57813f5b72d5a3dd15fa94a263 --- recovery.cpp | 2 ++ roots.cpp | 37 +++++++++++++++++++++++++++++++++++++ roots.h | 5 +++++ 3 files changed, 44 insertions(+) diff --git a/recovery.cpp b/recovery.cpp index d2d85e7c..f78d6e46 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -659,6 +659,7 @@ wipe_data(int confirm, Device* device) { device->WipeData(); erase_volume("/data"); erase_volume("/cache"); + erase_persistent_partition(); ui->Print("Data wipe complete.\n"); } @@ -959,6 +960,7 @@ main(int argc, char **argv) { if (device->WipeData()) status = INSTALL_ERROR; if (erase_volume("/data")) status = INSTALL_ERROR; if (wipe_cache && erase_volume("/cache")) status = INSTALL_ERROR; + if (erase_persistent_partition() == -1 ) status = INSTALL_ERROR; if (status != INSTALL_SUCCESS) ui->Print("Data wipe failed.\n"); } else if (wipe_cache) { if (wipe_cache && erase_volume("/cache")) status = INSTALL_ERROR; diff --git a/roots.cpp b/roots.cpp index 8f990190..61798f49 100644 --- a/roots.cpp +++ b/roots.cpp @@ -39,6 +39,8 @@ static struct fstab *fstab = NULL; extern struct selabel_handle *sehandle; +static const char* PERSISTENT_PATH = "/persistent"; + void load_volume_table() { int i; @@ -264,6 +266,41 @@ int format_volume(const char* volume) { return -1; } +int erase_persistent_partition() { + Volume *v = volume_for_path(PERSISTENT_PATH); + if (v == NULL) { + // most devices won't have /persistent, so this is not an error. + return 0; + } + + int fd = open(v->blk_device, O_RDWR); + uint64_t size = get_file_size(fd); + if (size == 0) { + LOGE("failed to stat size of /persistent\n"); + close(fd); + return -1; + } + + char oem_unlock_enabled; + lseek(fd, size - 1, SEEK_SET); + read(fd, &oem_unlock_enabled, 1); + + if (oem_unlock_enabled) { + if (wipe_block_device(fd, size)) { + LOGE("error wiping /persistent: %s\n", strerror(errno)); + close(fd); + return -1; + } + + lseek(fd, size - 1, SEEK_SET); + write(fd, &oem_unlock_enabled, 1); + } + + close(fd); + + return (int) oem_unlock_enabled; +} + int setup_install_mounts() { if (fstab == NULL) { LOGE("can't set up install mounts: no fstab loaded\n"); diff --git a/roots.h b/roots.h index 230d9ded..b62a5b13 100644 --- a/roots.h +++ b/roots.h @@ -46,6 +46,11 @@ int format_volume(const char* volume); // mounted (/tmp and /cache) are mounted. Returns 0 on success. int setup_install_mounts(); +// Conditionally wipes the /persistent partition if it's marked +// to wipe. Returns -1 on failure, 1 if the partition was wiped +// and 0 if the partition was not wiped. +int erase_persistent_partition(); + #ifdef __cplusplus } #endif From 537d34f907a5e984ccad1c88825adc8ae9814834 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 14 Aug 2014 07:59:28 -0700 Subject: [PATCH 089/110] change uncrypt to static linking Bug: 17015157 Change-Id: I3c4bdcf4f11d44b617bb731a48413e3707044d1c --- uncrypt/Android.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/uncrypt/Android.mk b/uncrypt/Android.mk index 756bc964..ef3cead3 100644 --- a/uncrypt/Android.mk +++ b/uncrypt/Android.mk @@ -25,4 +25,6 @@ LOCAL_STATIC_LIBRARIES := \ libcutils \ libc +LOCAL_FORCE_STATIC_EXECUTABLE := true + include $(BUILD_EXECUTABLE) From 64be82755cc42b05775265b87a0c64242a72d0dd Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 14 Aug 2014 07:59:28 -0700 Subject: [PATCH 090/110] change uncrypt to static linking Bug: 17015157 Change-Id: I3c4bdcf4f11d44b617bb731a48413e3707044d1c --- uncrypt/Android.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/uncrypt/Android.mk b/uncrypt/Android.mk index 756bc964..ef3cead3 100644 --- a/uncrypt/Android.mk +++ b/uncrypt/Android.mk @@ -25,4 +25,6 @@ LOCAL_STATIC_LIBRARIES := \ libcutils \ libc +LOCAL_FORCE_STATIC_EXECUTABLE := true + include $(BUILD_EXECUTABLE) From 1a35a586904cd429fd3a6a6c2de64a16ccdf693d Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 14 Aug 2014 10:29:54 -0700 Subject: [PATCH 091/110] revert uncrypt back to dynamic linking, fix libs Bug: 17029174, 17015157 Change-Id: I1d24f3402875dfb972daa6daef0f385baeff84e9 --- uncrypt/Android.mk | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/uncrypt/Android.mk b/uncrypt/Android.mk index ef3cead3..8d0a7376 100644 --- a/uncrypt/Android.mk +++ b/uncrypt/Android.mk @@ -20,11 +20,6 @@ LOCAL_SRC_FILES := uncrypt.c LOCAL_MODULE := uncrypt -LOCAL_STATIC_LIBRARIES := \ - libfs_mgr \ - libcutils \ - libc - -LOCAL_FORCE_STATIC_EXECUTABLE := true +LOCAL_STATIC_LIBRARIES := libfs_mgr libcutils include $(BUILD_EXECUTABLE) From 2efc9d994ce59f9ebfc2290c2adc5d760e8939c2 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 18 Aug 2014 15:55:28 -0700 Subject: [PATCH 092/110] clear BCB in misc partition before rebooting Something is leaving behind wipe commands in the BCB area of the /misc partition. We don't know what is doing that. It should always be safe to zero out that area from uncrypt, though (because if uncrypt is running then it's got the command we want in the recovery command file rather than the BCB). Bug: 16715412 Change-Id: Iad01124287f13b80ff71d6371db6371f43c43211 --- uncrypt/uncrypt.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index bce53dbb..77bfdc20 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -56,6 +56,8 @@ #define RECOVERY_COMMAND_FILE_TMP "/cache/recovery/command.tmp" #define CACHE_BLOCK_MAP "/cache/recovery/block.map" +static struct fstab* fstab = NULL; + static int write_at_offset(unsigned char* buffer, size_t size, int wfd, off64_t offset) { @@ -101,8 +103,10 @@ void add_block_to_ranges(int** ranges, int* range_alloc, int* range_used, int ne } } -const char* find_block_device(const char* path, int* encryptable, int* encrypted) +static struct fstab* read_fstab() { + fstab = NULL; + // The fstab path is always "/fstab.${ro.hardware}". char fstab_path[PATH_MAX+1] = "/fstab."; if (!property_get("ro.hardware", fstab_path+strlen(fstab_path), "")) { @@ -110,12 +114,17 @@ const char* find_block_device(const char* path, int* encryptable, int* encrypted return NULL; } - struct fstab* fstab = fs_mgr_read_fstab(fstab_path); + fstab = fs_mgr_read_fstab(fstab_path); if (!fstab) { fprintf(stderr, "failed to read %s\n", fstab_path); return NULL; } + return fstab; +} + +const char* find_block_device(const char* path, int* encryptable, int* encrypted) +{ // Look for a volume whose mount point is the prefix of path and // return its block device. Set encrypted if it's currently // encrypted. @@ -302,6 +311,33 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de return 0; } +void wipe_misc() { + int i; + for (i = 0; i < fstab->num_entries; ++i) { + struct fstab_rec* v = &fstab->recs[i]; + if (!v->mount_point) continue; + if (strcmp(v->mount_point, "/misc") == 0) { + int fd = open(v->blk_device, O_RDWR); + uint8_t zeroes[1088]; // sizeof(bootloader_message) from recovery + memset(zeroes, 0, sizeof(zeroes)); + + size_t written = 0; + size_t size = sizeof(zeroes); + while (written < size) { + ssize_t w = write(fd, zeroes, size-written); + if (w < 0 && errno != EINTR) { + fprintf(stderr, "zero write failed: %s\n", strerror(errno)); + return; + } else { + written += w; + } + } + + close(fd); + } + } +} + void reboot_to_recovery() { property_set("sys.powerctl", "reboot,recovery"); sleep(10); @@ -347,6 +383,9 @@ int main(int argc, char** argv) int encryptable; int encrypted; + if (read_fstab() == NULL) { + return 1; + } const char* blk_dev = find_block_device(path, &encryptable, &encrypted); if (blk_dev == NULL) { fprintf(stderr, "failed to find block device for %s\n", path); @@ -376,7 +415,8 @@ int main(int argc, char** argv) } } + wipe_misc(); rename(RECOVERY_COMMAND_FILE_TMP, RECOVERY_COMMAND_FILE); - reboot_to_recovery(); + if (do_reboot) reboot_to_recovery(); return 0; } From bc7ffeda98a861e346c30c771d3258030f7fcf21 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 15 Aug 2014 14:31:52 -0700 Subject: [PATCH 093/110] installer for new block OTA system (Cherry-pick back from master.) Bug: 16984795 Change-Id: Ifa3d8345c5e2a0be86fb28faa080ca82592a96b4 --- applypatch/applypatch.c | 6 +- applypatch/applypatch.h | 2 +- applypatch/bspatch.c | 4 +- applypatch/imgpatch.c | 4 +- updater/Android.mk | 1 + updater/blockimg.c | 631 ++++++++++++++++++++++++++++++++++++++++ updater/blockimg.h | 22 ++ updater/install.c | 2 +- updater/updater.c | 4 + updater/updater.h | 3 + 10 files changed, 669 insertions(+), 10 deletions(-) create mode 100644 updater/blockimg.c create mode 100644 updater/blockimg.h diff --git a/applypatch/applypatch.c b/applypatch/applypatch.c index 60e9e4a5..bfb9440e 100644 --- a/applypatch/applypatch.c +++ b/applypatch/applypatch.c @@ -32,7 +32,7 @@ #include "edify/expr.h" static int LoadPartitionContents(const char* filename, FileContents* file); -static ssize_t FileSink(unsigned char* data, ssize_t len, void* token); +static ssize_t FileSink(const unsigned char* data, ssize_t len, void* token); static int GenerateTarget(FileContents* source_file, const Value* source_patch_value, FileContents* copy_file, @@ -599,7 +599,7 @@ int ShowLicenses() { return 0; } -ssize_t FileSink(unsigned char* data, ssize_t len, void* token) { +ssize_t FileSink(const unsigned char* data, ssize_t len, void* token) { int fd = *(int *)token; ssize_t done = 0; ssize_t wrote; @@ -620,7 +620,7 @@ typedef struct { ssize_t pos; } MemorySinkInfo; -ssize_t MemorySink(unsigned char* data, ssize_t len, void* token) { +ssize_t MemorySink(const unsigned char* data, ssize_t len, void* token) { MemorySinkInfo* msi = (MemorySinkInfo*)token; if (msi->size - msi->pos < len) { return -1; diff --git a/applypatch/applypatch.h b/applypatch/applypatch.h index ee54c24e..edec8481 100644 --- a/applypatch/applypatch.h +++ b/applypatch/applypatch.h @@ -40,7 +40,7 @@ typedef struct _FileContents { // and use it as the source instead. #define CACHE_TEMP_SOURCE "/cache/saved.file" -typedef ssize_t (*SinkFn)(unsigned char*, ssize_t, void*); +typedef ssize_t (*SinkFn)(const unsigned char*, ssize_t, void*); // applypatch.c int ShowLicenses(); diff --git a/applypatch/bspatch.c b/applypatch/bspatch.c index 1dc7ab10..b34ec2a8 100644 --- a/applypatch/bspatch.c +++ b/applypatch/bspatch.c @@ -112,9 +112,7 @@ int ApplyBSDiffPatch(const unsigned char* old_data, ssize_t old_size, printf("short write of output: %d (%s)\n", errno, strerror(errno)); return 1; } - if (ctx) { - SHA_update(ctx, new_data, new_size); - } + if (ctx) SHA_update(ctx, new_data, new_size); free(new_data); return 0; diff --git a/applypatch/imgpatch.c b/applypatch/imgpatch.c index af4d0728..33c44876 100644 --- a/applypatch/imgpatch.c +++ b/applypatch/imgpatch.c @@ -95,7 +95,7 @@ int ApplyImagePatch(const unsigned char* old_data, ssize_t old_size __unused, printf("failed to read chunk %d raw data\n", i); return -1; } - SHA_update(ctx, patch->data + pos, data_len); + if (ctx) SHA_update(ctx, patch->data + pos, data_len); if (sink((unsigned char*)patch->data + pos, data_len, token) != data_len) { printf("failed to write chunk %d raw data\n", i); @@ -217,7 +217,7 @@ int ApplyImagePatch(const unsigned char* old_data, ssize_t old_size __unused, (long)have); return -1; } - SHA_update(ctx, temp_data, have); + if (ctx) SHA_update(ctx, temp_data, have); } while (ret != Z_STREAM_END); deflateEnd(&strm); diff --git a/updater/Android.mk b/updater/Android.mk index 99b48902..b183c922 100644 --- a/updater/Android.mk +++ b/updater/Android.mk @@ -4,6 +4,7 @@ LOCAL_PATH := $(call my-dir) updater_src_files := \ install.c \ + blockimg.c \ updater.c # diff --git a/updater/blockimg.c b/updater/blockimg.c new file mode 100644 index 00000000..c442ab22 --- /dev/null +++ b/updater/blockimg.c @@ -0,0 +1,631 @@ +/* + * Copyright (C) 2014 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "applypatch/applypatch.h" +#include "edify/expr.h" +#include "mincrypt/sha.h" +#include "minzip/DirUtil.h" +#include "updater.h" + +#define BLOCKSIZE 4096 + +// Set this to 1 to interpret 'erase' transfers to mean do a +// BLKDISCARD ioctl. Set to 0 to interpret erase to mean fill the +// region with zeroes. +#define DEBUG_ERASE 0 + +#ifndef BLKDISCARD +#define BLKDISCARD _IO(0x12,119) +#endif + +char* PrintSha1(const uint8_t* digest); + +typedef struct { + int count; + int size; + int pos[0]; +} RangeSet; + +static RangeSet* parse_range(char* text) { + char* save; + int num; + num = strtol(strtok_r(text, ",", &save), NULL, 0); + + RangeSet* out = malloc(sizeof(RangeSet) + num * sizeof(int)); + if (out == NULL) { + fprintf(stderr, "failed to allocate range of %d bytes\n", + sizeof(RangeSet) + num * sizeof(int)); + exit(1); + } + out->count = num / 2; + out->size = 0; + int i; + for (i = 0; i < num; ++i) { + out->pos[i] = strtol(strtok_r(NULL, ",", &save), NULL, 0); + if (i%2) { + out->size += out->pos[i]; + } else { + out->size -= out->pos[i]; + } + } + + return out; +} + +static void readblock(int fd, uint8_t* data, size_t size) { + size_t so_far = 0; + while (so_far < size) { + ssize_t r = read(fd, data+so_far, size-so_far); + if (r < 0 && errno != EINTR) { + fprintf(stderr, "read failed: %s\n", strerror(errno)); + return; + } else { + so_far += r; + } + } +} + +static void writeblock(int fd, const uint8_t* data, size_t size) { + size_t written = 0; + while (written < size) { + ssize_t w = write(fd, data+written, size-written); + if (w < 0 && errno != EINTR) { + fprintf(stderr, "write failed: %s\n", strerror(errno)); + return; + } else { + written += w; + } + } +} + +static void check_lseek(int fd, off_t offset, int whence) { + while (true) { + int ret = lseek(fd, offset, whence); + if (ret < 0) { + if (errno != EINTR) { + fprintf(stderr, "lseek failed: %s\n", strerror(errno)); + exit(1); + } + } else { + break; + } + } +} + +static void allocate(size_t size, uint8_t** buffer, size_t* buffer_alloc) { + // if the buffer's big enough, reuse it. + if (size <= *buffer_alloc) return; + + free(*buffer); + + *buffer = (uint8_t*) malloc(size); + if (*buffer == NULL) { + fprintf(stderr, "failed to allocate %d bytes\n", size); + exit(1); + } + *buffer_alloc = size; +} + +typedef struct { + int fd; + RangeSet* tgt; + int p_block; + size_t p_remain; +} RangeSinkState; + +static ssize_t RangeSinkWrite(const uint8_t* data, ssize_t size, void* token) { + RangeSinkState* rss = (RangeSinkState*) token; + + if (rss->p_remain <= 0) { + fprintf(stderr, "range sink write overrun"); + exit(1); + } + + ssize_t written = 0; + while (size > 0) { + size_t write_now = size; + if (rss->p_remain < write_now) write_now = rss->p_remain; + writeblock(rss->fd, data, write_now); + data += write_now; + size -= write_now; + + rss->p_remain -= write_now; + written += write_now; + + if (rss->p_remain == 0) { + // move to the next block + ++rss->p_block; + if (rss->p_block < rss->tgt->count) { + rss->p_remain = (rss->tgt->pos[rss->p_block*2+1] - rss->tgt->pos[rss->p_block*2]) * BLOCKSIZE; + check_lseek(rss->fd, rss->tgt->pos[rss->p_block*2] * BLOCKSIZE, SEEK_SET); + } else { + // we can't write any more; return how many bytes have + // been written so far. + return written; + } + } + } + + return written; +} + +// All of the data for all the 'new' transfers is contained in one +// file in the update package, concatenated together in the order in +// which transfers.list will need it. We want to stream it out of the +// archive (it's compressed) without writing it to a temp file, but we +// can't write each section until it's that transfer's turn to go. +// +// To achieve this, we expand the new data from the archive in a +// background thread, and block that threads 'receive uncompressed +// data' function until the main thread has reached a point where we +// want some new data to be written. We signal the background thread +// with the destination for the data and block the main thread, +// waiting for the background thread to complete writing that section. +// Then it signals the main thread to wake up and goes back to +// blocking waiting for a transfer. +// +// NewThreadInfo is the struct used to pass information back and forth +// between the two threads. When the main thread wants some data +// written, it sets rss to the destination location and signals the +// condition. When the background thread is done writing, it clears +// rss and signals the condition again. + +typedef struct { + ZipArchive* za; + const ZipEntry* entry; + + RangeSinkState* rss; + + pthread_mutex_t mu; + pthread_cond_t cv; +} NewThreadInfo; + +static bool receive_new_data(const unsigned char* data, int size, void* cookie) { + NewThreadInfo* nti = (NewThreadInfo*) cookie; + + while (size > 0) { + // Wait for nti->rss to be non-NULL, indicating some of this + // data is wanted. + pthread_mutex_lock(&nti->mu); + while (nti->rss == NULL) { + pthread_cond_wait(&nti->cv, &nti->mu); + } + pthread_mutex_unlock(&nti->mu); + + // At this point nti->rss is set, and we own it. The main + // thread is waiting for it to disappear from nti. + ssize_t written = RangeSinkWrite(data, size, nti->rss); + data += written; + size -= written; + + if (nti->rss->p_block == nti->rss->tgt->count) { + // we have written all the bytes desired by this rss. + + pthread_mutex_lock(&nti->mu); + nti->rss = NULL; + pthread_cond_broadcast(&nti->cv); + pthread_mutex_unlock(&nti->mu); + } + } + + return true; +} + +static void* unzip_new_data(void* cookie) { + NewThreadInfo* nti = (NewThreadInfo*) cookie; + mzProcessZipEntryContents(nti->za, nti->entry, receive_new_data, nti); + return NULL; +} + +// args: +// - block device (or file) to modify in-place +// - transfer list (blob) +// - new data stream (filename within package.zip) +// - patch stream (filename within package.zip, must be uncompressed) + +Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[]) { + Value* blockdev_filename; + Value* transfer_list; + Value* new_data_fn; + Value* patch_data_fn; + bool success = false; + + if (ReadValueArgs(state, argv, 4, &blockdev_filename, &transfer_list, + &new_data_fn, &patch_data_fn) < 0) { + return NULL; + } + + if (blockdev_filename->type != VAL_STRING) { + ErrorAbort(state, "blockdev_filename argument to %s must be string", name); + goto done; + } + if (transfer_list->type != VAL_BLOB) { + ErrorAbort(state, "transfer_list argument to %s must be blob", name); + goto done; + } + if (new_data_fn->type != VAL_STRING) { + ErrorAbort(state, "new_data_fn argument to %s must be string", name); + goto done; + } + if (patch_data_fn->type != VAL_STRING) { + ErrorAbort(state, "patch_data_fn argument to %s must be string", name); + goto done; + } + + UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); + FILE* cmd_pipe = ui->cmd_pipe; + + ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; + + const ZipEntry* patch_entry = mzFindZipEntry(za, patch_data_fn->data); + if (patch_entry == NULL) { + ErrorAbort(state, "%s(): no file \"%s\" in package", name, patch_data_fn->data); + goto done; + } + + uint8_t* patch_start = ((UpdaterInfo*)(state->cookie))->package_zip_addr + + mzGetZipEntryOffset(patch_entry); + + const ZipEntry* new_entry = mzFindZipEntry(za, new_data_fn->data); + if (new_entry == NULL) { + ErrorAbort(state, "%s(): no file \"%s\" in package", name, new_data_fn->data); + goto done; + } + + // The transfer list is a text file containing commands to + // transfer data from one place to another on the target + // partition. We parse it and execute the commands in order: + // + // zero [rangeset] + // - fill the indicated blocks with zeros + // + // new [rangeset] + // - fill the blocks with data read from the new_data file + // + // bsdiff patchstart patchlen [src rangeset] [tgt rangeset] + // imgdiff patchstart patchlen [src rangeset] [tgt rangeset] + // - read the source blocks, apply a patch, write result to + // target blocks. bsdiff or imgdiff specifies the type of + // patch. + // + // move [src rangeset] [tgt rangeset] + // - copy data from source blocks to target blocks (no patch + // needed; rangesets are the same size) + // + // erase [rangeset] + // - mark the given blocks as empty + // + // The creator of the transfer list will guarantee that no block + // is read (ie, used as the source for a patch or move) after it + // has been written. + // + // Within one command the source and target ranges may overlap so + // in general we need to read the entire source into memory before + // writing anything to the target blocks. + // + // All the patch data is concatenated into one patch_data file in + // the update package. It must be stored uncompressed because we + // memory-map it in directly from the archive. (Since patches are + // already compressed, we lose very little by not compressing + // their concatenation.) + + pthread_t new_data_thread; + NewThreadInfo nti; + nti.za = za; + nti.entry = new_entry; + nti.rss = NULL; + pthread_mutex_init(&nti.mu, NULL); + pthread_cond_init(&nti.cv, NULL); + + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + pthread_create(&new_data_thread, &attr, unzip_new_data, &nti); + + int i, j; + + char* linesave; + char* wordsave; + + int fd = open(blockdev_filename->data, O_RDWR); + if (fd < 0) { + ErrorAbort(state, "failed to open %s: %s", blockdev_filename->data, strerror(errno)); + goto done; + } + + char* line; + char* word; + + line = strtok_r(transfer_list->data, "\n", &linesave); + + // first line in transfer list is the version number; currently + // there's only version 1. + if (strcmp(line, "1") != 0) { + ErrorAbort(state, "unexpected transfer list version [%s]\n", line); + goto done; + } + + // second line in transfer list is the total number of blocks we + // expect to write. + line = strtok_r(NULL, "\n", &linesave); + int total_blocks = strtol(line, NULL, 0); + // shouldn't happen, but avoid divide by zero. + if (total_blocks == 0) ++total_blocks; + int blocks_so_far = 0; + + uint8_t* buffer = NULL; + size_t buffer_alloc = 0; + + // third and subsequent lines are all individual transfer commands. + for (line = strtok_r(NULL, "\n", &linesave); line; + line = strtok_r(NULL, "\n", &linesave)) { + char* style; + style = strtok_r(line, " ", &wordsave); + + if (strcmp("move", style) == 0) { + word = strtok_r(NULL, " ", &wordsave); + RangeSet* src = parse_range(word); + word = strtok_r(NULL, " ", &wordsave); + RangeSet* tgt = parse_range(word); + + printf(" moving %d blocks\n", src->size); + + allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); + size_t p = 0; + for (i = 0; i < src->count; ++i) { + check_lseek(fd, src->pos[i*2] * BLOCKSIZE, SEEK_SET); + size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; + readblock(fd, buffer+p, sz); + p += sz; + } + + p = 0; + for (i = 0; i < tgt->count; ++i) { + check_lseek(fd, tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); + size_t sz = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; + writeblock(fd, buffer+p, sz); + p += sz; + } + + blocks_so_far += tgt->size; + fprintf(cmd_pipe, "set_progress %.4f\n", (double)blocks_so_far / total_blocks); + fflush(cmd_pipe); + + free(src); + free(tgt); + + } else if (strcmp("zero", style) == 0 || + (DEBUG_ERASE && strcmp("erase", style) == 0)) { + word = strtok_r(NULL, " ", &wordsave); + RangeSet* tgt = parse_range(word); + + printf(" zeroing %d blocks\n", tgt->size); + + allocate(BLOCKSIZE, &buffer, &buffer_alloc); + memset(buffer, 0, BLOCKSIZE); + for (i = 0; i < tgt->count; ++i) { + check_lseek(fd, tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); + for (j = tgt->pos[i*2]; j < tgt->pos[i*2+1]; ++j) { + writeblock(fd, buffer, BLOCKSIZE); + } + } + + if (style[0] == 'z') { // "zero" but not "erase" + blocks_so_far += tgt->size; + fprintf(cmd_pipe, "set_progress %.4f\n", (double)blocks_so_far / total_blocks); + fflush(cmd_pipe); + } + + free(tgt); + } else if (strcmp("new", style) == 0) { + + word = strtok_r(NULL, " ", &wordsave); + RangeSet* tgt = parse_range(word); + + printf(" writing %d blocks of new data\n", tgt->size); + + RangeSinkState rss; + rss.fd = fd; + rss.tgt = tgt; + rss.p_block = 0; + rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; + check_lseek(fd, tgt->pos[0] * BLOCKSIZE, SEEK_SET); + + pthread_mutex_lock(&nti.mu); + nti.rss = &rss; + pthread_cond_broadcast(&nti.cv); + while (nti.rss) { + pthread_cond_wait(&nti.cv, &nti.mu); + } + pthread_mutex_unlock(&nti.mu); + + blocks_so_far += tgt->size; + fprintf(cmd_pipe, "set_progress %.4f\n", (double)blocks_so_far / total_blocks); + fflush(cmd_pipe); + + free(tgt); + + } else if (strcmp("bsdiff", style) == 0 || + strcmp("imgdiff", style) == 0) { + word = strtok_r(NULL, " ", &wordsave); + size_t patch_offset = strtoul(word, NULL, 0); + word = strtok_r(NULL, " ", &wordsave); + size_t patch_len = strtoul(word, NULL, 0); + + word = strtok_r(NULL, " ", &wordsave); + RangeSet* src = parse_range(word); + word = strtok_r(NULL, " ", &wordsave); + RangeSet* tgt = parse_range(word); + + printf(" patching %d blocks to %d\n", src->size, tgt->size); + + // Read the source into memory. + allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); + size_t p = 0; + for (i = 0; i < src->count; ++i) { + check_lseek(fd, src->pos[i*2] * BLOCKSIZE, SEEK_SET); + size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; + readblock(fd, buffer+p, sz); + p += sz; + } + + Value patch_value; + patch_value.type = VAL_BLOB; + patch_value.size = patch_len; + patch_value.data = (char*)(patch_start + patch_offset); + + RangeSinkState rss; + rss.fd = fd; + rss.tgt = tgt; + rss.p_block = 0; + rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; + check_lseek(fd, tgt->pos[0] * BLOCKSIZE, SEEK_SET); + + if (style[0] == 'i') { // imgdiff + ApplyImagePatch(buffer, src->size * BLOCKSIZE, + &patch_value, + &RangeSinkWrite, &rss, NULL, NULL); + } else { + ApplyBSDiffPatch(buffer, src->size * BLOCKSIZE, + &patch_value, 0, + &RangeSinkWrite, &rss, NULL); + } + + // We expect the output of the patcher to fill the tgt ranges exactly. + if (rss.p_block != tgt->count || rss.p_remain != 0) { + fprintf(stderr, "range sink underrun?\n"); + } + + blocks_so_far += tgt->size; + fprintf(cmd_pipe, "set_progress %.4f\n", (double)blocks_so_far / total_blocks); + fflush(cmd_pipe); + + free(src); + free(tgt); + } else if (!DEBUG_ERASE && strcmp("erase", style) == 0) { + struct stat st; + if (fstat(fd, &st) == 0 && S_ISBLK(st.st_mode)) { + word = strtok_r(NULL, " ", &wordsave); + RangeSet* tgt = parse_range(word); + + printf(" erasing %d blocks\n", tgt->size); + + for (i = 0; i < tgt->count; ++i) { + uint64_t range[2]; + // offset in bytes + range[0] = tgt->pos[i*2] * BLOCKSIZE; + // len in bytes + range[1] = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; + + if (ioctl(fd, BLKDISCARD, &range) < 0) { + printf(" blkdiscard failed: %s\n", strerror(errno)); + } + } + + free(tgt); + } else { + printf(" ignoring erase (not block device)\n"); + } + } else { + fprintf(stderr, "unknown transfer style \"%s\"\n", style); + exit(1); + } + } + + pthread_join(new_data_thread, NULL); + success = true; + + free(buffer); + printf("wrote %d blocks; expected %d\n", blocks_so_far, total_blocks); + printf("max alloc needed was %zu\n", buffer_alloc); + + done: + FreeValue(blockdev_filename); + FreeValue(transfer_list); + FreeValue(new_data_fn); + FreeValue(patch_data_fn); + return StringValue(success ? strdup("t") : strdup("")); +} + +Value* RangeSha1Fn(const char* name, State* state, int argc, Expr* argv[]) { + Value* blockdev_filename; + Value* ranges; + const uint8_t* digest = NULL; + if (ReadValueArgs(state, argv, 2, &blockdev_filename, &ranges) < 0) { + return NULL; + } + + if (blockdev_filename->type != VAL_STRING) { + ErrorAbort(state, "blockdev_filename argument to %s must be string", name); + goto done; + } + if (ranges->type != VAL_STRING) { + ErrorAbort(state, "ranges argument to %s must be string", name); + goto done; + } + + int fd = open(blockdev_filename->data, O_RDWR); + if (fd < 0) { + ErrorAbort(state, "failed to open %s: %s", blockdev_filename->data, strerror(errno)); + goto done; + } + + RangeSet* rs = parse_range(ranges->data); + uint8_t buffer[BLOCKSIZE]; + + SHA_CTX ctx; + SHA_init(&ctx); + + int i, j; + for (i = 0; i < rs->count; ++i) { + check_lseek(fd, rs->pos[i*2] * BLOCKSIZE, SEEK_SET); + for (j = rs->pos[i*2]; j < rs->pos[i*2+1]; ++j) { + readblock(fd, buffer, BLOCKSIZE); + SHA_update(&ctx, buffer, BLOCKSIZE); + } + } + digest = SHA_final(&ctx); + close(fd); + + done: + FreeValue(blockdev_filename); + FreeValue(ranges); + if (digest == NULL) { + return StringValue(strdup("")); + } else { + return StringValue(PrintSha1(digest)); + } +} + +void RegisterBlockImageFunctions() { + RegisterFunction("block_image_update", BlockImageUpdateFn); + RegisterFunction("range_sha1", RangeSha1Fn); +} diff --git a/updater/blockimg.h b/updater/blockimg.h new file mode 100644 index 00000000..2f4ad3c0 --- /dev/null +++ b/updater/blockimg.h @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _UPDATER_BLOCKIMG_H_ +#define _UPDATER_BLOCKIMG_H_ + +void RegisterBlockImageFunctions(); + +#endif diff --git a/updater/install.c b/updater/install.c index 19861800..cdcdb8fd 100644 --- a/updater/install.c +++ b/updater/install.c @@ -54,7 +54,7 @@ #endif // Take a sha-1 digest and return it as a newly-allocated hex string. -static char* PrintSha1(const uint8_t* digest) { +char* PrintSha1(const uint8_t* digest) { char* buffer = malloc(SHA_DIGEST_SIZE*2 + 1); int i; const char* alphabet = "0123456789abcdef"; diff --git a/updater/updater.c b/updater/updater.c index b7af3e50..465e1238 100644 --- a/updater/updater.c +++ b/updater/updater.c @@ -21,6 +21,7 @@ #include "edify/expr.h" #include "updater.h" #include "install.h" +#include "blockimg.h" #include "minzip/Zip.h" #include "minzip/SysUtil.h" @@ -98,6 +99,7 @@ int main(int argc, char** argv) { RegisterBuiltins(); RegisterInstallFunctions(); + RegisterBlockImageFunctions(); RegisterDeviceExtensions(); FinishRegistration(); @@ -127,6 +129,8 @@ int main(int argc, char** argv) { updater_info.cmd_pipe = cmd_pipe; updater_info.package_zip = &za; updater_info.version = atoi(version); + updater_info.package_zip_addr = map.addr; + updater_info.package_zip_len = map.length; State state; state.cookie = &updater_info; diff --git a/updater/updater.h b/updater/updater.h index d2e90114..d1dfdd05 100644 --- a/updater/updater.h +++ b/updater/updater.h @@ -27,6 +27,9 @@ typedef struct { FILE* cmd_pipe; ZipArchive* package_zip; int version; + + uint8_t* package_zip_addr; + size_t package_zip_len; } UpdaterInfo; extern struct selabel_handle *sehandle; From 1d5d6098f4a470bc8e56ae8914180041815e6e22 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 21 Aug 2014 10:47:24 -0700 Subject: [PATCH 094/110] fix two bugs in block image updater The computation of file offsets was overflowing for partitions larger than 2 GB. The parsing of the transfer file could fail at the end if the data happened to not be properly null-terminated. Bug: 16984795 Change-Id: I3ce6eb3e54ab7b55aa9bbed252da5a7eacd3317a --- updater/blockimg.c | 50 +++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/updater/blockimg.c b/updater/blockimg.c index c442ab22..6d412d5d 100644 --- a/updater/blockimg.c +++ b/updater/blockimg.c @@ -61,7 +61,7 @@ static RangeSet* parse_range(char* text) { RangeSet* out = malloc(sizeof(RangeSet) + num * sizeof(int)); if (out == NULL) { - fprintf(stderr, "failed to allocate range of %d bytes\n", + fprintf(stderr, "failed to allocate range of %lu bytes\n", sizeof(RangeSet) + num * sizeof(int)); exit(1); } @@ -108,7 +108,7 @@ static void writeblock(int fd, const uint8_t* data, size_t size) { static void check_lseek(int fd, off_t offset, int whence) { while (true) { - int ret = lseek(fd, offset, whence); + off_t ret = lseek(fd, offset, whence); if (ret < 0) { if (errno != EINTR) { fprintf(stderr, "lseek failed: %s\n", strerror(errno)); @@ -128,7 +128,7 @@ static void allocate(size_t size, uint8_t** buffer, size_t* buffer_alloc) { *buffer = (uint8_t*) malloc(size); if (*buffer == NULL) { - fprintf(stderr, "failed to allocate %d bytes\n", size); + fprintf(stderr, "failed to allocate %zu bytes\n", size); exit(1); } *buffer_alloc = size; @@ -165,7 +165,7 @@ static ssize_t RangeSinkWrite(const uint8_t* data, ssize_t size, void* token) { ++rss->p_block; if (rss->p_block < rss->tgt->count) { rss->p_remain = (rss->tgt->pos[rss->p_block*2+1] - rss->tgt->pos[rss->p_block*2]) * BLOCKSIZE; - check_lseek(rss->fd, rss->tgt->pos[rss->p_block*2] * BLOCKSIZE, SEEK_SET); + check_lseek(rss->fd, rss->tgt->pos[rss->p_block*2] * (off_t)BLOCKSIZE, SEEK_SET); } else { // we can't write any more; return how many bytes have // been written so far. @@ -253,12 +253,13 @@ static void* unzip_new_data(void* cookie) { Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[]) { Value* blockdev_filename; - Value* transfer_list; + Value* transfer_list_value; + char* transfer_list = NULL; Value* new_data_fn; Value* patch_data_fn; bool success = false; - if (ReadValueArgs(state, argv, 4, &blockdev_filename, &transfer_list, + if (ReadValueArgs(state, argv, 4, &blockdev_filename, &transfer_list_value, &new_data_fn, &patch_data_fn) < 0) { return NULL; } @@ -267,7 +268,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] ErrorAbort(state, "blockdev_filename argument to %s must be string", name); goto done; } - if (transfer_list->type != VAL_BLOB) { + if (transfer_list_value->type != VAL_BLOB) { ErrorAbort(state, "transfer_list argument to %s must be blob", name); goto done; } @@ -364,7 +365,19 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] char* line; char* word; - line = strtok_r(transfer_list->data, "\n", &linesave); + // The data in transfer_list_value is not necessarily + // null-terminated, so we need to copy it to a new buffer and add + // the null that strtok_r will need. + transfer_list = malloc(transfer_list_value->size+1); + if (transfer_list == NULL) { + fprintf(stderr, "failed to allocate %zd bytes for transfer list\n", + transfer_list_value->size+1); + exit(1); + } + memcpy(transfer_list, transfer_list_value->data, transfer_list_value->size); + transfer_list[transfer_list_value->size] = '\0'; + + line = strtok_r(transfer_list, "\n", &linesave); // first line in transfer list is the version number; currently // there's only version 1. @@ -401,7 +414,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); size_t p = 0; for (i = 0; i < src->count; ++i) { - check_lseek(fd, src->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, src->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; readblock(fd, buffer+p, sz); p += sz; @@ -409,7 +422,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] p = 0; for (i = 0; i < tgt->count; ++i) { - check_lseek(fd, tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); size_t sz = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; writeblock(fd, buffer+p, sz); p += sz; @@ -432,7 +445,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(BLOCKSIZE, &buffer, &buffer_alloc); memset(buffer, 0, BLOCKSIZE); for (i = 0; i < tgt->count; ++i) { - check_lseek(fd, tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); for (j = tgt->pos[i*2]; j < tgt->pos[i*2+1]; ++j) { writeblock(fd, buffer, BLOCKSIZE); } @@ -457,7 +470,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] rss.tgt = tgt; rss.p_block = 0; rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; - check_lseek(fd, tgt->pos[0] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[0] * (off_t)BLOCKSIZE, SEEK_SET); pthread_mutex_lock(&nti.mu); nti.rss = &rss; @@ -491,7 +504,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); size_t p = 0; for (i = 0; i < src->count; ++i) { - check_lseek(fd, src->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, src->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; readblock(fd, buffer+p, sz); p += sz; @@ -507,7 +520,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] rss.tgt = tgt; rss.p_block = 0; rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; - check_lseek(fd, tgt->pos[0] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[0] * (off_t)BLOCKSIZE, SEEK_SET); if (style[0] == 'i') { // imgdiff ApplyImagePatch(buffer, src->size * BLOCKSIZE, @@ -541,9 +554,9 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] for (i = 0; i < tgt->count; ++i) { uint64_t range[2]; // offset in bytes - range[0] = tgt->pos[i*2] * BLOCKSIZE; + range[0] = tgt->pos[i*2] * (uint64_t)BLOCKSIZE; // len in bytes - range[1] = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; + range[1] = (tgt->pos[i*2+1] - tgt->pos[i*2]) * (uint64_t)BLOCKSIZE; if (ioctl(fd, BLKDISCARD, &range) < 0) { printf(" blkdiscard failed: %s\n", strerror(errno)); @@ -568,8 +581,9 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] printf("max alloc needed was %zu\n", buffer_alloc); done: + free(transfer_list); FreeValue(blockdev_filename); - FreeValue(transfer_list); + FreeValue(transfer_list_value); FreeValue(new_data_fn); FreeValue(patch_data_fn); return StringValue(success ? strdup("t") : strdup("")); @@ -606,7 +620,7 @@ Value* RangeSha1Fn(const char* name, State* state, int argc, Expr* argv[]) { int i, j; for (i = 0; i < rs->count; ++i) { - check_lseek(fd, rs->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, rs->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); for (j = rs->pos[i*2]; j < rs->pos[i*2+1]; ++j) { readblock(fd, buffer, BLOCKSIZE); SHA_update(&ctx, buffer, BLOCKSIZE); From f2127b6435eedd2c2c57a480a0ed049fee014406 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 21 Aug 2014 10:47:24 -0700 Subject: [PATCH 095/110] fix two bugs in block image updater The computation of file offsets was overflowing for partitions larger than 2 GB. The parsing of the transfer file could fail at the end if the data happened to not be properly null-terminated. Bug: 16984795 Change-Id: I3ce6eb3e54ab7b55aa9bbed252da5a7eacd3317a --- updater/blockimg.c | 50 +++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/updater/blockimg.c b/updater/blockimg.c index c442ab22..6d412d5d 100644 --- a/updater/blockimg.c +++ b/updater/blockimg.c @@ -61,7 +61,7 @@ static RangeSet* parse_range(char* text) { RangeSet* out = malloc(sizeof(RangeSet) + num * sizeof(int)); if (out == NULL) { - fprintf(stderr, "failed to allocate range of %d bytes\n", + fprintf(stderr, "failed to allocate range of %lu bytes\n", sizeof(RangeSet) + num * sizeof(int)); exit(1); } @@ -108,7 +108,7 @@ static void writeblock(int fd, const uint8_t* data, size_t size) { static void check_lseek(int fd, off_t offset, int whence) { while (true) { - int ret = lseek(fd, offset, whence); + off_t ret = lseek(fd, offset, whence); if (ret < 0) { if (errno != EINTR) { fprintf(stderr, "lseek failed: %s\n", strerror(errno)); @@ -128,7 +128,7 @@ static void allocate(size_t size, uint8_t** buffer, size_t* buffer_alloc) { *buffer = (uint8_t*) malloc(size); if (*buffer == NULL) { - fprintf(stderr, "failed to allocate %d bytes\n", size); + fprintf(stderr, "failed to allocate %zu bytes\n", size); exit(1); } *buffer_alloc = size; @@ -165,7 +165,7 @@ static ssize_t RangeSinkWrite(const uint8_t* data, ssize_t size, void* token) { ++rss->p_block; if (rss->p_block < rss->tgt->count) { rss->p_remain = (rss->tgt->pos[rss->p_block*2+1] - rss->tgt->pos[rss->p_block*2]) * BLOCKSIZE; - check_lseek(rss->fd, rss->tgt->pos[rss->p_block*2] * BLOCKSIZE, SEEK_SET); + check_lseek(rss->fd, rss->tgt->pos[rss->p_block*2] * (off_t)BLOCKSIZE, SEEK_SET); } else { // we can't write any more; return how many bytes have // been written so far. @@ -253,12 +253,13 @@ static void* unzip_new_data(void* cookie) { Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[]) { Value* blockdev_filename; - Value* transfer_list; + Value* transfer_list_value; + char* transfer_list = NULL; Value* new_data_fn; Value* patch_data_fn; bool success = false; - if (ReadValueArgs(state, argv, 4, &blockdev_filename, &transfer_list, + if (ReadValueArgs(state, argv, 4, &blockdev_filename, &transfer_list_value, &new_data_fn, &patch_data_fn) < 0) { return NULL; } @@ -267,7 +268,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] ErrorAbort(state, "blockdev_filename argument to %s must be string", name); goto done; } - if (transfer_list->type != VAL_BLOB) { + if (transfer_list_value->type != VAL_BLOB) { ErrorAbort(state, "transfer_list argument to %s must be blob", name); goto done; } @@ -364,7 +365,19 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] char* line; char* word; - line = strtok_r(transfer_list->data, "\n", &linesave); + // The data in transfer_list_value is not necessarily + // null-terminated, so we need to copy it to a new buffer and add + // the null that strtok_r will need. + transfer_list = malloc(transfer_list_value->size+1); + if (transfer_list == NULL) { + fprintf(stderr, "failed to allocate %zd bytes for transfer list\n", + transfer_list_value->size+1); + exit(1); + } + memcpy(transfer_list, transfer_list_value->data, transfer_list_value->size); + transfer_list[transfer_list_value->size] = '\0'; + + line = strtok_r(transfer_list, "\n", &linesave); // first line in transfer list is the version number; currently // there's only version 1. @@ -401,7 +414,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); size_t p = 0; for (i = 0; i < src->count; ++i) { - check_lseek(fd, src->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, src->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; readblock(fd, buffer+p, sz); p += sz; @@ -409,7 +422,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] p = 0; for (i = 0; i < tgt->count; ++i) { - check_lseek(fd, tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); size_t sz = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; writeblock(fd, buffer+p, sz); p += sz; @@ -432,7 +445,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(BLOCKSIZE, &buffer, &buffer_alloc); memset(buffer, 0, BLOCKSIZE); for (i = 0; i < tgt->count; ++i) { - check_lseek(fd, tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); for (j = tgt->pos[i*2]; j < tgt->pos[i*2+1]; ++j) { writeblock(fd, buffer, BLOCKSIZE); } @@ -457,7 +470,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] rss.tgt = tgt; rss.p_block = 0; rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; - check_lseek(fd, tgt->pos[0] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[0] * (off_t)BLOCKSIZE, SEEK_SET); pthread_mutex_lock(&nti.mu); nti.rss = &rss; @@ -491,7 +504,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); size_t p = 0; for (i = 0; i < src->count; ++i) { - check_lseek(fd, src->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, src->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; readblock(fd, buffer+p, sz); p += sz; @@ -507,7 +520,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] rss.tgt = tgt; rss.p_block = 0; rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; - check_lseek(fd, tgt->pos[0] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, tgt->pos[0] * (off_t)BLOCKSIZE, SEEK_SET); if (style[0] == 'i') { // imgdiff ApplyImagePatch(buffer, src->size * BLOCKSIZE, @@ -541,9 +554,9 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] for (i = 0; i < tgt->count; ++i) { uint64_t range[2]; // offset in bytes - range[0] = tgt->pos[i*2] * BLOCKSIZE; + range[0] = tgt->pos[i*2] * (uint64_t)BLOCKSIZE; // len in bytes - range[1] = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; + range[1] = (tgt->pos[i*2+1] - tgt->pos[i*2]) * (uint64_t)BLOCKSIZE; if (ioctl(fd, BLKDISCARD, &range) < 0) { printf(" blkdiscard failed: %s\n", strerror(errno)); @@ -568,8 +581,9 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] printf("max alloc needed was %zu\n", buffer_alloc); done: + free(transfer_list); FreeValue(blockdev_filename); - FreeValue(transfer_list); + FreeValue(transfer_list_value); FreeValue(new_data_fn); FreeValue(patch_data_fn); return StringValue(success ? strdup("t") : strdup("")); @@ -606,7 +620,7 @@ Value* RangeSha1Fn(const char* name, State* state, int argc, Expr* argv[]) { int i, j; for (i = 0; i < rs->count; ++i) { - check_lseek(fd, rs->pos[i*2] * BLOCKSIZE, SEEK_SET); + check_lseek(fd, rs->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); for (j = rs->pos[i*2]; j < rs->pos[i*2+1]; ++j) { readblock(fd, buffer, BLOCKSIZE); SHA_update(&ctx, buffer, BLOCKSIZE); From f449db2f30235a0c2fef4bc7bc41776e271a60a0 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Tue, 26 Aug 2014 09:15:08 -0700 Subject: [PATCH 096/110] open misc device in write-only mode Opening the misc block device in read-write mode runs afoul of SELinux, which keeps the wipe code from working. Fix. Also change various things to log to logcat so we can see them happening, for future debugging. Bug: 16715412 Change-Id: Ia14066f0a371cd605fcb544547b58a41acca70b9 --- uncrypt/Android.mk | 2 +- uncrypt/uncrypt.c | 44 ++++++++++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/uncrypt/Android.mk b/uncrypt/Android.mk index 8d0a7376..878d2757 100644 --- a/uncrypt/Android.mk +++ b/uncrypt/Android.mk @@ -20,6 +20,6 @@ LOCAL_SRC_FILES := uncrypt.c LOCAL_MODULE := uncrypt -LOCAL_STATIC_LIBRARIES := libfs_mgr libcutils +LOCAL_STATIC_LIBRARIES := libfs_mgr liblog libcutils include $(BUILD_EXECUTABLE) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index 77bfdc20..07e5ae66 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -48,6 +48,8 @@ #include #include +#define LOG_TAG "uncrypt" +#include #include #include @@ -66,7 +68,7 @@ static int write_at_offset(unsigned char* buffer, size_t size, while (written < size) { ssize_t wrote = write(wfd, buffer + written, size - written); if (wrote < 0) { - fprintf(stderr, "error writing offset %lld: %s\n", offset, strerror(errno)); + ALOGE("error writing offset %lld: %s\n", offset, strerror(errno)); return -1; } written += wrote; @@ -110,13 +112,13 @@ static struct fstab* read_fstab() // The fstab path is always "/fstab.${ro.hardware}". char fstab_path[PATH_MAX+1] = "/fstab."; if (!property_get("ro.hardware", fstab_path+strlen(fstab_path), "")) { - fprintf(stderr, "failed to get ro.hardware\n"); + ALOGE("failed to get ro.hardware\n"); return NULL; } fstab = fs_mgr_read_fstab(fstab_path); if (!fstab) { - fprintf(stderr, "failed to read %s\n", fstab_path); + ALOGE("failed to read %s\n", fstab_path); return NULL; } @@ -194,14 +196,14 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de ret = stat(path, &sb); if (ret != 0) { - fprintf(stderr, "failed to stat %s\n", path); + ALOGE("failed to stat %s\n", path); return -1; } - printf(" block size: %ld bytes\n", (long)sb.st_blksize); + ALOGI(" block size: %ld bytes\n", (long)sb.st_blksize); int blocks = ((sb.st_size-1) / sb.st_blksize) + 1; - printf(" file size: %lld bytes, %d blocks\n", (long long)sb.st_size, blocks); + ALOGI(" file size: %lld bytes, %d blocks\n", (long long)sb.st_size, blocks); int* ranges; int range_alloc = 1; @@ -225,7 +227,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de int fd = open(path, O_RDONLY); if (fd < 0) { - fprintf(stderr, "failed to open fd for reading: %s\n", strerror(errno)); + ALOGE("failed to open fd for reading: %s\n", strerror(errno)); return -1; } fsync(fd); @@ -234,7 +236,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de if (encrypted) { wfd = open(blk_dev, O_WRONLY); if (wfd < 0) { - fprintf(stderr, "failed to open fd for writing: %s\n", strerror(errno)); + ALOGE("failed to open fd for writing: %s\n", strerror(errno)); return -1; } } @@ -245,7 +247,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de int block = head_block; ret = ioctl(fd, FIBMAP, &block); if (ret != 0) { - fprintf(stderr, "failed to find block %d\n", head_block); + ALOGE("failed to find block %d\n", head_block); return -1; } add_block_to_ranges(&ranges, &range_alloc, &range_used, block); @@ -264,7 +266,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de while (so_far < sb.st_blksize && pos < sb.st_size) { ssize_t this_read = read(fd, buffers[tail] + so_far, sb.st_blksize - so_far); if (this_read < 0) { - fprintf(stderr, "failed to read: %s\n", strerror(errno)); + ALOGE("failed to read: %s\n", strerror(errno)); return -1; } so_far += this_read; @@ -284,7 +286,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de int block = head_block; ret = ioctl(fd, FIBMAP, &block); if (ret != 0) { - fprintf(stderr, "failed to find block %d\n", head_block); + ALOGE("failed to find block %d\n", head_block); return -1; } add_block_to_ranges(&ranges, &range_alloc, &range_used, block); @@ -312,12 +314,13 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de } void wipe_misc() { + ALOGI("removing old commands from misc"); int i; for (i = 0; i < fstab->num_entries; ++i) { struct fstab_rec* v = &fstab->recs[i]; if (!v->mount_point) continue; if (strcmp(v->mount_point, "/misc") == 0) { - int fd = open(v->blk_device, O_RDWR); + int fd = open(v->blk_device, O_WRONLY); uint8_t zeroes[1088]; // sizeof(bootloader_message) from recovery memset(zeroes, 0, sizeof(zeroes)); @@ -326,7 +329,7 @@ void wipe_misc() { while (written < size) { ssize_t w = write(fd, zeroes, size-written); if (w < 0 && errno != EINTR) { - fprintf(stderr, "zero write failed: %s\n", strerror(errno)); + ALOGE("zero write failed: %s\n", strerror(errno)); return; } else { written += w; @@ -339,8 +342,10 @@ void wipe_misc() { } void reboot_to_recovery() { + ALOGI("rebooting to recovery"); property_set("sys.powerctl", "reboot,recovery"); sleep(10); + ALOGE("reboot didn't succeed?"); } int main(int argc, char** argv) @@ -366,18 +371,20 @@ int main(int argc, char** argv) // if we're rebooting to recovery without a package (say, // to wipe data), then we don't need to do anything before // going to recovery. - fprintf(stderr, "no recovery command file or no update package arg"); + ALOGI("no recovery command file or no update package arg"); reboot_to_recovery(); return 1; } map_file = CACHE_BLOCK_MAP; } + ALOGI("update package is %s", input_path); + // Turn the name of the file we're supposed to convert into an // absolute path, so we can find what filesystem it's on. char path[PATH_MAX+1]; if (realpath(input_path, path) == NULL) { - fprintf(stderr, "failed to convert %s to absolute path: %s\n", input_path, strerror(errno)); + ALOGE("failed to convert %s to absolute path: %s", input_path, strerror(errno)); return 1; } @@ -388,15 +395,15 @@ int main(int argc, char** argv) } const char* blk_dev = find_block_device(path, &encryptable, &encrypted); if (blk_dev == NULL) { - fprintf(stderr, "failed to find block device for %s\n", path); + ALOGE("failed to find block device for %s", path); return 1; } // If the filesystem it's on isn't encrypted, we only produce the // block map, we don't rewrite the file contents (it would be // pointless to do so). - printf("encryptable: %s\n", encryptable ? "yes" : "no"); - printf(" encrypted: %s\n", encrypted ? "yes" : "no"); + ALOGI("encryptable: %s\n", encryptable ? "yes" : "no"); + ALOGI(" encrypted: %s\n", encrypted ? "yes" : "no"); if (!encryptable) { // If the file is on a filesystem that doesn't support @@ -410,6 +417,7 @@ int main(int argc, char** argv) unlink(RECOVERY_COMMAND_FILE_TMP); } else { + ALOGI("writing block map %s", map_file); if (produce_block_map(path, map_file, blk_dev, encrypted) != 0) { return 1; } From 5f875bf57739bf0b5c2d182173513233bdb71ab8 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 22 Aug 2014 14:53:43 -0700 Subject: [PATCH 097/110] remove code for original block OTA mechanism Superseded by newer code. Bug: 16984795 Change-Id: I842299f6a02af7ccf51ef2ca174d813ca53deef1 --- updater/Android.mk | 2 - updater/install.c | 213 ++------------------------------------------- 2 files changed, 6 insertions(+), 209 deletions(-) diff --git a/updater/Android.mk b/updater/Android.mk index b183c922..a3a900a8 100644 --- a/updater/Android.mk +++ b/updater/Android.mk @@ -36,8 +36,6 @@ LOCAL_STATIC_LIBRARIES += libcutils liblog libstdc++ libc LOCAL_STATIC_LIBRARIES += libselinux LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. -LOCAL_STATIC_LIBRARIES += libsyspatch libxz libxdelta3 - # Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function # named "Register_()". Here we emit a little C function that # gets #included by updater.c. It calls all those registration diff --git a/updater/install.c b/updater/install.c index cdcdb8fd..dad0d08c 100644 --- a/updater/install.c +++ b/updater/install.c @@ -45,7 +45,6 @@ #include "mtdutils/mounts.h" #include "mtdutils/mtdutils.h" #include "updater.h" -#include "syspatch.h" #include "install.h" #ifdef USE_EXT4 @@ -464,68 +463,6 @@ Value* PackageExtractDirFn(const char* name, State* state, } -DontCareMap* ReadDontCareMapFromZip(ZipArchive* za, const char* path) { - const char* name = "ReadDontCareMapFromZip"; - - const ZipEntry* entry = mzFindZipEntry(za, path); - if (entry == NULL) { - printf("%s: no %s in package\n", name, path); - return NULL; - } - - size_t map_size = mzGetZipEntryUncompLen(entry); - char* map_data = malloc(map_size); - if (map_data == NULL) { - printf("%s: failed to allocate %zu bytes for %s\n", - name, map_size, path); - return NULL; - } - - if (!mzExtractZipEntryToBuffer(za, entry, (unsigned char*) map_data)) { - printf("%s: failed to read %s\n", name, path); - return NULL; - } - - char* p = map_data; - DontCareMap* map = (DontCareMap*) malloc(sizeof(DontCareMap)); - - map->block_size = strtoul(p, &p, 0); - if (map->block_size != 4096) { - printf("%s: unexpected block size %zu\n", name, map->block_size); - return NULL; - } - - map->region_count = strtoul(p, &p, 0); - map->regions = (int*) malloc(map->region_count * sizeof(int)); - map->total_blocks = 0; - - int i; - for (i = 0; i < map->region_count; ++i) { - map->regions[i] = strtoul(p, &p, 0); - map->total_blocks += map->regions[i]; - } - - return map; -} - -static FILE* mapwrite_cmd_pipe; - -static void progress_cb(long done, long total) { - if (total > 0) { - double frac = (double)done / total; - fprintf(mapwrite_cmd_pipe, "set_progress %f\n", frac); - fflush(mapwrite_cmd_pipe); - } -} - - - -bool MapWriter(const unsigned char* data, int dataLen, void* cookie) { - return write_with_map(data, dataLen, (MapState*) cookie, progress_cb) == dataLen; -} - -// package_extract_file(package_path, destination_path, map_path) -// or // package_extract_file(package_path, destination_path) // or // package_extract_file(package_path) @@ -533,33 +470,22 @@ bool MapWriter(const unsigned char* data, int dataLen, void* cookie) { // function (the char* returned is actually a FileContents*). Value* PackageExtractFileFn(const char* name, State* state, int argc, Expr* argv[]) { - if (argc < 1 || argc > 3) { - return ErrorAbort(state, "%s() expects 1 or 2 or 3 args, got %d", + if (argc < 1 || argc > 2) { + return ErrorAbort(state, "%s() expects 1 or 2 args, got %d", name, argc); } bool success = false; UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); - mapwrite_cmd_pipe = ui->cmd_pipe; - if (argc >= 2) { - // The two-argument version extracts to a file; the three-arg - // version extracts to a file, skipping over regions in a - // don't care map. + if (argc == 2) { + // The two-argument version extracts to a file. ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; char* zip_path; char* dest_path; - char* map_path = NULL; - DontCareMap* map = NULL; - if (argc == 2) { - if (ReadArgs(state, argv, 2, &zip_path, &dest_path) < 0) return NULL; - } else { - if (ReadArgs(state, argv, 3, &zip_path, &dest_path, &map_path) < 0) return NULL; - map = ReadDontCareMapFromZip(za, map_path); - if (map == NULL) goto done2; - } + if (ReadArgs(state, argv, 2, &zip_path, &dest_path) < 0) return NULL; const ZipEntry* entry = mzFindZipEntry(za, zip_path); if (entry == NULL) { @@ -573,26 +499,12 @@ Value* PackageExtractFileFn(const char* name, State* state, name, dest_path, strerror(errno)); goto done2; } - if (map) { - MapState state; - state.map = map; - state.cr = 0; - state.so_far = 0; - state.f = f; - success = mzProcessZipEntryContents(za, entry, MapWriter, &state); - } else { - success = mzExtractZipEntryToFile(za, entry, fileno(f)); - } + success = mzExtractZipEntryToFile(za, entry, fileno(f)); fclose(f); done2: free(zip_path); free(dest_path); - free(map_path); - if (map) { - free(map->regions); - free(map); - } return StringValue(strdup(success ? "t" : "")); } else { // The one-argument version returns the contents of the file @@ -1192,118 +1104,6 @@ Value* ApplyPatchSpaceFn(const char* name, State* state, return StringValue(strdup(CacheSizeCheck(bytes) ? "" : "t")); } -bool CheckMappedFileSha1(FILE* f, DontCareMap* map, uint8_t* intended_digest) { - MapState state; - - state.f = f; - state.so_far = 0; - state.cr = 0; - state.map = map; - - SHA_CTX ctx; - SHA_init(&ctx); - - unsigned char buffer[32173]; - size_t bytes_read; - - while ((bytes_read = read_with_map(buffer, sizeof(buffer), &state)) > 0) { - SHA_update(&ctx, buffer, bytes_read); - } - const uint8_t* digest = SHA_final(&ctx); - - return memcmp(digest, intended_digest, SHA_DIGEST_SIZE) == 0; -} - - -// syspatch(file, tgt_mapfile, tgt_sha1, init_mapfile, init_sha1, patch) - -Value* SysPatchFn(const char* name, State* state, int argc, Expr* argv[]) { - if (argc != 6) { - return ErrorAbort(state, "%s(): expected 6 args, got %d", name, argc); - } - - char* filename; - char* target_mapfilename; - char* target_sha1; - char* init_mapfilename; - char* init_sha1; - char* patch_filename; - uint8_t target_digest[SHA_DIGEST_SIZE]; - uint8_t init_digest[SHA_DIGEST_SIZE]; - - if (ReadArgs(state, argv, 6, &filename, - &target_mapfilename, &target_sha1, - &init_mapfilename, &init_sha1, &patch_filename) < 0) { - return NULL; - } - - UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); - mapwrite_cmd_pipe = ui->cmd_pipe; - - if (ParseSha1(target_sha1, target_digest) != 0) { - printf("%s(): failed to parse '%s' as target SHA-1", name, target_sha1); - memset(target_digest, 0, SHA_DIGEST_SIZE); - } - if (ParseSha1(init_sha1, init_digest) != 0) { - printf("%s(): failed to parse '%s' as init SHA-1", name, init_sha1); - memset(init_digest, 0, SHA_DIGEST_SIZE); - } - - ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip; - FILE* src = fopen(filename, "r"); - - DontCareMap* init_map = ReadDontCareMapFromZip(za, init_mapfilename); - if (init_map == NULL) return ErrorAbort(state, "%s(): failed to read init map\n", name); - DontCareMap* target_map = ReadDontCareMapFromZip(za, target_mapfilename); - if (target_map == NULL) return ErrorAbort(state, "%s(): failed to read target map\n", name); - - if (CheckMappedFileSha1(src, init_map, init_digest)) { - // If the partition contents match the init_digest, then we need to apply the patch. - - rewind(src); - - const ZipEntry* entry = mzFindZipEntry(za, patch_filename); - if (entry == NULL) { - return ErrorAbort(state, "%s(): no %s in package\n", name, patch_filename); - } - - unsigned char* patch_data; - size_t patch_len; - if (!mzGetStoredEntry(za, entry, &patch_data, &patch_len)) { - return ErrorAbort(state, "%s(): failed to get %s entry\n", name, patch_filename); - } - - FILE* tgt = fopen(filename, "r+"); - - int ret = syspatch(src, init_map, patch_data, patch_len, tgt, target_map, progress_cb); - - fclose(src); - fclose(tgt); - - if (ret != 0) { - return ErrorAbort(state, "%s(): patching failed\n", name); - } - } else { - rewind(src); - if (CheckMappedFileSha1(src, target_map, target_digest)) { - // If the partition contents match the target already, we - // don't need to do anything. - printf("%s: output is already target\n", name); - } else { - return ErrorAbort(state, "%s(): %s in unknown state\n", name, filename); - } - } - - done: - free(target_sha1); - free(target_mapfilename); - free(init_sha1); - free(init_mapfilename); - free(patch_filename); - return StringValue(filename); - -} - // apply_patch(file, size, init_sha1, tgt_sha1, patch) Value* ApplyPatchFn(const char* name, State* state, int argc, Expr* argv[]) { @@ -1738,7 +1538,6 @@ void RegisterInstallFunctions() { RegisterFunction("apply_patch_space", ApplyPatchSpaceFn); RegisterFunction("wipe_block_device", WipeBlockDeviceFn); - RegisterFunction("syspatch", SysPatchFn); RegisterFunction("read_file", ReadFileFn); RegisterFunction("sha1_check", Sha1CheckFn); From 8328922ff040280007da0aaaf8b567581231d5ed Mon Sep 17 00:00:00 2001 From: Andrew Boie Date: Wed, 3 Sep 2014 12:41:06 -0700 Subject: [PATCH 098/110] use lseek64 instead of lseek Otherwise, overflow problems can occur with images larger than 2G since the offsets will overflow a 32-bit off_t. Change-Id: I05951a38ebeae83ad2cb938594e8d8adb323e2aa Signed-off-by: Andrew Boie --- updater/blockimg.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/updater/blockimg.c b/updater/blockimg.c index 6d412d5d..5c0c3a72 100644 --- a/updater/blockimg.c +++ b/updater/blockimg.c @@ -106,12 +106,12 @@ static void writeblock(int fd, const uint8_t* data, size_t size) { } } -static void check_lseek(int fd, off_t offset, int whence) { +static void check_lseek(int fd, off64_t offset, int whence) { while (true) { - off_t ret = lseek(fd, offset, whence); + off64_t ret = lseek64(fd, offset, whence); if (ret < 0) { if (errno != EINTR) { - fprintf(stderr, "lseek failed: %s\n", strerror(errno)); + fprintf(stderr, "lseek64 failed: %s\n", strerror(errno)); exit(1); } } else { @@ -165,7 +165,7 @@ static ssize_t RangeSinkWrite(const uint8_t* data, ssize_t size, void* token) { ++rss->p_block; if (rss->p_block < rss->tgt->count) { rss->p_remain = (rss->tgt->pos[rss->p_block*2+1] - rss->tgt->pos[rss->p_block*2]) * BLOCKSIZE; - check_lseek(rss->fd, rss->tgt->pos[rss->p_block*2] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(rss->fd, (off64_t)rss->tgt->pos[rss->p_block*2] * BLOCKSIZE, SEEK_SET); } else { // we can't write any more; return how many bytes have // been written so far. @@ -414,7 +414,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); size_t p = 0; for (i = 0; i < src->count; ++i) { - check_lseek(fd, src->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)src->pos[i*2] * BLOCKSIZE, SEEK_SET); size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; readblock(fd, buffer+p, sz); p += sz; @@ -422,7 +422,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] p = 0; for (i = 0; i < tgt->count; ++i) { - check_lseek(fd, tgt->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); size_t sz = (tgt->pos[i*2+1] - tgt->pos[i*2]) * BLOCKSIZE; writeblock(fd, buffer+p, sz); p += sz; @@ -445,7 +445,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(BLOCKSIZE, &buffer, &buffer_alloc); memset(buffer, 0, BLOCKSIZE); for (i = 0; i < tgt->count; ++i) { - check_lseek(fd, tgt->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)tgt->pos[i*2] * BLOCKSIZE, SEEK_SET); for (j = tgt->pos[i*2]; j < tgt->pos[i*2+1]; ++j) { writeblock(fd, buffer, BLOCKSIZE); } @@ -470,7 +470,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] rss.tgt = tgt; rss.p_block = 0; rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; - check_lseek(fd, tgt->pos[0] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)tgt->pos[0] * BLOCKSIZE, SEEK_SET); pthread_mutex_lock(&nti.mu); nti.rss = &rss; @@ -504,7 +504,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] allocate(src->size * BLOCKSIZE, &buffer, &buffer_alloc); size_t p = 0; for (i = 0; i < src->count; ++i) { - check_lseek(fd, src->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)src->pos[i*2] * BLOCKSIZE, SEEK_SET); size_t sz = (src->pos[i*2+1] - src->pos[i*2]) * BLOCKSIZE; readblock(fd, buffer+p, sz); p += sz; @@ -520,7 +520,7 @@ Value* BlockImageUpdateFn(const char* name, State* state, int argc, Expr* argv[] rss.tgt = tgt; rss.p_block = 0; rss.p_remain = (tgt->pos[1] - tgt->pos[0]) * BLOCKSIZE; - check_lseek(fd, tgt->pos[0] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)tgt->pos[0] * BLOCKSIZE, SEEK_SET); if (style[0] == 'i') { // imgdiff ApplyImagePatch(buffer, src->size * BLOCKSIZE, @@ -620,7 +620,7 @@ Value* RangeSha1Fn(const char* name, State* state, int argc, Expr* argv[]) { int i, j; for (i = 0; i < rs->count; ++i) { - check_lseek(fd, rs->pos[i*2] * (off_t)BLOCKSIZE, SEEK_SET); + check_lseek(fd, (off64_t)rs->pos[i*2] * BLOCKSIZE, SEEK_SET); for (j = rs->pos[i*2]; j < rs->pos[i*2+1]; ++j) { readblock(fd, buffer, BLOCKSIZE); SHA_update(&ctx, buffer, BLOCKSIZE); From f7bb09dae8d7c89130648ef2aca7025860b6d801 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 4 Sep 2014 08:10:32 -0700 Subject: [PATCH 099/110] fix comment in blockimg updater code The comment for the DEBUG_ERASE setting is exactly backwards. Change-Id: I98ab5828365894217fc78976817a131e7d22d5c1 --- updater/blockimg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/updater/blockimg.c b/updater/blockimg.c index 6d412d5d..555230dd 100644 --- a/updater/blockimg.c +++ b/updater/blockimg.c @@ -37,9 +37,9 @@ #define BLOCKSIZE 4096 -// Set this to 1 to interpret 'erase' transfers to mean do a -// BLKDISCARD ioctl. Set to 0 to interpret erase to mean fill the -// region with zeroes. +// Set this to 0 to interpret 'erase' transfers to mean do a +// BLKDISCARD ioctl (the normal behavior). Set to 1 to interpret +// erase to mean fill the region with zeroes. #define DEBUG_ERASE 0 #ifndef BLKDISCARD From 574443d8956802f35347cac7fae7eb16240e3c16 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 5 Sep 2014 08:22:12 -0700 Subject: [PATCH 100/110] create block map for all update packages on /data Always create the block map for packages on /data; don't only look at the encryptable/encrypted flags. Bug: 17395453 Change-Id: Iaa7643a32898328277841e324305b9419a9e071c --- uncrypt/uncrypt.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index 07e5ae66..189fa57e 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -160,8 +160,6 @@ char* parse_recovery_command_file() int count = 0; char temp[1024]; - - FILE* f = fopen(RECOVERY_COMMAND_FILE, "r"); if (f == NULL) { return NULL; @@ -405,16 +403,15 @@ int main(int argc, char** argv) ALOGI("encryptable: %s\n", encryptable ? "yes" : "no"); ALOGI(" encrypted: %s\n", encrypted ? "yes" : "no"); - if (!encryptable) { - // If the file is on a filesystem that doesn't support - // encryption (eg, /cache), then leave it alone. - // - // TODO: change this to be !encrypted -- if the file is on - // /data but /data isn't encrypted, we don't need to use the - // block map mechanism. We do for now so as to get more - // testing of it (since most dogfood devices aren't - // encrypted). - + // Recovery supports installing packages from 3 paths: /cache, + // /data, and /sdcard. (On a particular device, other locations + // may work, but those are three we actually expect.) + // + // On /data we want to convert the file to a block map so that we + // can read the package without mounting the partition. On /cache + // and /sdcard we leave the file alone. + if (strncmp(path, "/data/", 6) != 0) { + // path does not start with "/data/"; leave it alone. unlink(RECOVERY_COMMAND_FILE_TMP); } else { ALOGI("writing block map %s", map_file); From f9bc2a544d5189ef9279edb8b5d67913eec53855 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 5 Sep 2014 08:22:12 -0700 Subject: [PATCH 101/110] create block map for all update packages on /data Always create the block map for packages on /data; don't only look at the encryptable/encrypted flags. Bug: 17395453 Change-Id: Iaa7643a32898328277841e324305b9419a9e071c --- uncrypt/uncrypt.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/uncrypt/uncrypt.c b/uncrypt/uncrypt.c index 07e5ae66..189fa57e 100644 --- a/uncrypt/uncrypt.c +++ b/uncrypt/uncrypt.c @@ -160,8 +160,6 @@ char* parse_recovery_command_file() int count = 0; char temp[1024]; - - FILE* f = fopen(RECOVERY_COMMAND_FILE, "r"); if (f == NULL) { return NULL; @@ -405,16 +403,15 @@ int main(int argc, char** argv) ALOGI("encryptable: %s\n", encryptable ? "yes" : "no"); ALOGI(" encrypted: %s\n", encrypted ? "yes" : "no"); - if (!encryptable) { - // If the file is on a filesystem that doesn't support - // encryption (eg, /cache), then leave it alone. - // - // TODO: change this to be !encrypted -- if the file is on - // /data but /data isn't encrypted, we don't need to use the - // block map mechanism. We do for now so as to get more - // testing of it (since most dogfood devices aren't - // encrypted). - + // Recovery supports installing packages from 3 paths: /cache, + // /data, and /sdcard. (On a particular device, other locations + // may work, but those are three we actually expect.) + // + // On /data we want to convert the file to a block map so that we + // can read the package without mounting the partition. On /cache + // and /sdcard we leave the file alone. + if (strncmp(path, "/data/", 6) != 0) { + // path does not start with "/data/"; leave it alone. unlink(RECOVERY_COMMAND_FILE_TMP); } else { ALOGI("writing block map %s", map_file); From a6e13ae01bff5109361868f565187f16d045c82d Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 24 Sep 2014 11:46:17 -0700 Subject: [PATCH 102/110] Include reason when wiping data. This will help us track down who requested a data wipe. Bug: 17412160 Change-Id: I1c439fbd29f96b9851810baca9101f683a0f18d8 --- recovery.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recovery.cpp b/recovery.cpp index f78d6e46..7f17b16e 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -60,6 +60,7 @@ static const struct option OPTIONS[] = { { "locale", required_argument, NULL, 'l' }, { "stages", required_argument, NULL, 'g' }, { "shutdown_after", no_argument, NULL, 'p' }, + { "reason", required_argument, NULL, 'r' }, { NULL, 0, NULL, 0 }, }; @@ -80,6 +81,7 @@ RecoveryUI* ui = NULL; char* locale = NULL; char recovery_version[PROPERTY_VALUE_MAX+1]; char* stage = NULL; +char* reason = NULL; /* * The recovery tool communicates with the main system through /cache files. @@ -870,6 +872,7 @@ main(int argc, char **argv) { break; } case 'p': shutdown_after = true; break; + case 'r': reason = optarg; break; case '?': LOGE("Invalid command argument\n"); continue; @@ -881,6 +884,7 @@ main(int argc, char **argv) { } printf("locale is [%s]\n", locale); printf("stage is [%s]\n", stage); + printf("reason is [%s]\n", reason); Device* device = make_device(); ui = device->GetUI(); From d5b1727765060b2886d11cf7af9588b818be12cf Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Wed, 22 Oct 2014 14:28:23 -0700 Subject: [PATCH 103/110] Treat already-renamed files as having no problems. This should help with reentrant OTAs. Bug: 18079773 Change-Id: I102fd738e3b450483ecd4471384c12e89fc586e2 --- updater/install.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/updater/install.c b/updater/install.c index dad0d08c..42dbb58d 100644 --- a/updater/install.c +++ b/updater/install.c @@ -358,6 +358,9 @@ Value* RenameFn(const char* name, State* state, int argc, Expr* argv[]) { if (make_parents(dst_name) != 0) { ErrorAbort(state, "Creating parent of %s failed, error %s", dst_name, strerror(errno)); + } else if (access(dst_name, F_OK) == 0 && access(src_name, F_OK) != 0) { + // File was already moved + result = dst_name; } else if (rename(src_name, dst_name) != 0) { ErrorAbort(state, "Rename of %s to %s failed, error %s", src_name, dst_name, strerror(errno)); From b8344b6f5908935ac2e36109c7433fde34646620 Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Wed, 22 Oct 2014 18:38:48 -0700 Subject: [PATCH 104/110] Make /cache/recovery/last_log available in recovery Create a new recovery UI option to allow the user to view /cache/recovery/last_log for their device. This gives enhanced debugging information which may be necessary when a failed OTA occurs. Bug: 18094012 Change-Id: Ic3228de96e9bfc2a0141c7aab4ce392a38140cf3 --- default_device.cpp | 2 ++ device.h | 2 +- recovery.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 76 insertions(+), 5 deletions(-) diff --git a/default_device.cpp b/default_device.cpp index a25f05f8..97806ac5 100644 --- a/default_device.cpp +++ b/default_device.cpp @@ -31,6 +31,7 @@ static const char* ITEMS[] = {"reboot system now", "wipe cache partition", "reboot to bootloader", "power down", + "view recovery logs", NULL }; class DefaultDevice : public Device { @@ -69,6 +70,7 @@ class DefaultDevice : public Device { case 3: return WIPE_CACHE; case 4: return REBOOT_BOOTLOADER; case 5: return SHUTDOWN; + case 6: return READ_RECOVERY_LASTLOG; default: return NO_ACTION; } } diff --git a/device.h b/device.h index 57ec3fc3..8ff4ec03 100644 --- a/device.h +++ b/device.h @@ -68,7 +68,7 @@ class Device { enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, APPLY_CACHE, // APPLY_CACHE is deprecated; has no effect APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE, - REBOOT_BOOTLOADER, SHUTDOWN }; + REBOOT_BOOTLOADER, SHUTDOWN, READ_RECOVERY_LASTLOG }; // Perform a recovery action selected from the menu. // 'menu_position' will be the item number of the selected menu diff --git a/recovery.cpp b/recovery.cpp index 7f17b16e..e1a2a967 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -77,6 +77,8 @@ static const char *SDCARD_ROOT = "/sdcard"; static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log"; static const char *TEMPORARY_INSTALL_FILE = "/tmp/last_install"; +#define KEEP_LOG_COUNT 10 + RecoveryUI* ui = NULL; char* locale = NULL; char recovery_version[PROPERTY_VALUE_MAX+1]; @@ -161,6 +163,12 @@ fopen_path(const char *path, const char *mode) { return fp; } +static void redirect_stdio(const char* filename) { + // If these fail, there's not really anywhere to complain... + freopen(filename, "a", stdout); setbuf(stdout, NULL); + freopen(filename, "a", stderr); setbuf(stderr, NULL); +} + // close a file, log an error if the error indicator is set static void check_and_fclose(FILE *fp, const char *name) { @@ -665,6 +673,65 @@ wipe_data(int confirm, Device* device) { ui->Print("Data wipe complete.\n"); } +static void file_to_ui(const char* fn) { + FILE *fp = fopen_path(fn, "re"); + if (fp == NULL) { + ui->Print(" Unable to open %s: %s\n", fn, strerror(errno)); + return; + } + char line[1024]; + int ct = 0; + redirect_stdio("/dev/null"); + while(fgets(line, sizeof(line), fp) != NULL) { + ui->Print("%s", line); + ct++; + if (ct % 30 == 0) { + // give the user time to glance at the entries + ui->WaitKey(); + } + } + redirect_stdio(TEMPORARY_LOG_FILE); + fclose(fp); +} + +static void choose_recovery_file(Device* device) { + int i; + static const char** title_headers = NULL; + char *filename; + const char* headers[] = { "Select file to view", + "", + NULL }; + char* entries[KEEP_LOG_COUNT + 2]; + memset(entries, 0, sizeof(entries)); + + for (i = 0; i < KEEP_LOG_COUNT; i++) { + char *filename; + if (asprintf(&filename, (i==0) ? LAST_LOG_FILE : (LAST_LOG_FILE ".%d"), i) == -1) { + // memory allocation failure - return early. Should never happen. + return; + } + if ((ensure_path_mounted(filename) != 0) || (access(filename, R_OK) == -1)) { + free(filename); + entries[i+1] = NULL; + break; + } + entries[i+1] = filename; + } + + entries[0] = strdup("Go back"); + title_headers = prepend_title((const char**)headers); + + while(1) { + int chosen_item = get_menu_selection(title_headers, entries, 1, 0, device); + if (chosen_item == 0) break; + file_to_ui(entries[chosen_item]); + } + + for (i = 0; i < KEEP_LOG_COUNT + 1; i++) { + free(entries[i]); + } +} + // Return REBOOT, SHUTDOWN, or REBOOT_BOOTLOADER. Returning NO_ACTION // means to take the default, which is to reboot or shutdown depending // on if the --shutdown_after flag was passed to recovery. @@ -760,6 +827,10 @@ prompt_and_wait(Device* device, int status) { ui->Print("\nAPPLY_CACHE is deprecated.\n"); break; + case Device::READ_RECOVERY_LASTLOG: + choose_recovery_file(device); + break; + case Device::APPLY_ADB_SIDELOAD: status = apply_from_adb(ui, &wipe_cache, TEMPORARY_INSTALL_FILE); if (status >= 0) { @@ -824,9 +895,7 @@ int main(int argc, char **argv) { time_t start = time(NULL); - // If these fail, there's not really anywhere to complain... - freopen(TEMPORARY_LOG_FILE, "a", stdout); setbuf(stdout, NULL); - freopen(TEMPORARY_LOG_FILE, "a", stderr); setbuf(stderr, NULL); + redirect_stdio(TEMPORARY_LOG_FILE); // If this binary is started with the single argument "--adbd", // instead of being the normal recovery binary, it turns into kind @@ -844,7 +913,7 @@ main(int argc, char **argv) { load_volume_table(); ensure_path_mounted(LAST_LOG_FILE); - rotate_last_logs(10); + rotate_last_logs(KEEP_LOG_COUNT); get_args(&argc, &argv); const char *send_intent = NULL; From 7548025bdd111421cff2fe73839c01e2dc0a0365 Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Wed, 22 Oct 2014 19:48:41 -0700 Subject: [PATCH 105/110] Log to UI any metadata setting errors Bug: 18079773 Change-Id: Ic6fddbcbcb6ddb9e1cbd1698df98387c0033ae15 --- updater/install.c | 84 ++++++++++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 34 deletions(-) diff --git a/updater/install.c b/updater/install.c index 42dbb58d..17ea4c2b 100644 --- a/updater/install.c +++ b/updater/install.c @@ -52,6 +52,26 @@ #include "wipe.h" #endif +void uiPrint(State* state, char* buffer) { + char* line = strtok(buffer, "\n"); + UpdaterInfo* ui = (UpdaterInfo*)(state->cookie); + while (line) { + fprintf(ui->cmd_pipe, "ui_print %s\n", line); + line = strtok(NULL, "\n"); + } + fprintf(ui->cmd_pipe, "ui_print\n"); +} + +__attribute__((__format__(printf, 2, 3))) __nonnull((2)) +void uiPrintf(State* state, const char* format, ...) { + char error_msg[1024]; + va_list ap; + va_start(ap, format); + vsnprintf(error_msg, sizeof(error_msg), format, ap); + va_end(ap); + uiPrint(state, error_msg); +} + // Take a sha-1 digest and return it as a newly-allocated hex string. char* PrintSha1(const uint8_t* digest) { char* buffer = malloc(SHA_DIGEST_SIZE*2 + 1); @@ -633,7 +653,7 @@ struct perm_parsed_args { uint64_t capabilities; }; -static struct perm_parsed_args ParsePermArgs(int argc, char** args) { +static struct perm_parsed_args ParsePermArgs(State * state, int argc, char** args) { int i; struct perm_parsed_args parsed; int bad = 0; @@ -648,7 +668,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.uid = uid; parsed.has_uid = true; } else { - printf("ParsePermArgs: invalid UID \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid UID \"%s\"\n", args[i + 1]); bad++; } continue; @@ -659,7 +679,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.gid = gid; parsed.has_gid = true; } else { - printf("ParsePermArgs: invalid GID \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid GID \"%s\"\n", args[i + 1]); bad++; } continue; @@ -670,7 +690,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.mode = mode; parsed.has_mode = true; } else { - printf("ParsePermArgs: invalid mode \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid mode \"%s\"\n", args[i + 1]); bad++; } continue; @@ -681,7 +701,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.dmode = mode; parsed.has_dmode = true; } else { - printf("ParsePermArgs: invalid dmode \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid dmode \"%s\"\n", args[i + 1]); bad++; } continue; @@ -692,7 +712,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.fmode = mode; parsed.has_fmode = true; } else { - printf("ParsePermArgs: invalid fmode \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid fmode \"%s\"\n", args[i + 1]); bad++; } continue; @@ -703,7 +723,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.capabilities = capabilities; parsed.has_capabilities = true; } else { - printf("ParsePermArgs: invalid capabilities \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid capabilities \"%s\"\n", args[i + 1]); bad++; } continue; @@ -713,7 +733,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { parsed.selabel = args[i+1]; parsed.has_selabel = true; } else { - printf("ParsePermArgs: invalid selabel \"%s\"\n", args[i + 1]); + uiPrintf(state, "ParsePermArgs: invalid selabel \"%s\"\n", args[i + 1]); bad++; } continue; @@ -730,6 +750,7 @@ static struct perm_parsed_args ParsePermArgs(int argc, char** args) { } static int ApplyParsedPerms( + State * state, const char* filename, const struct stat *statptr, struct perm_parsed_args parsed) @@ -743,39 +764,39 @@ static int ApplyParsedPerms( if (parsed.has_uid) { if (chown(filename, parsed.uid, -1) < 0) { - printf("ApplyParsedPerms: chown of %s to %d failed: %s\n", - filename, parsed.uid, strerror(errno)); + uiPrintf(state, "ApplyParsedPerms: chown of %s to %d failed: %s\n", + filename, parsed.uid, strerror(errno)); bad++; } } if (parsed.has_gid) { if (chown(filename, -1, parsed.gid) < 0) { - printf("ApplyParsedPerms: chgrp of %s to %d failed: %s\n", - filename, parsed.gid, strerror(errno)); + uiPrintf(state, "ApplyParsedPerms: chgrp of %s to %d failed: %s\n", + filename, parsed.gid, strerror(errno)); bad++; } } if (parsed.has_mode) { if (chmod(filename, parsed.mode) < 0) { - printf("ApplyParsedPerms: chmod of %s to %d failed: %s\n", - filename, parsed.mode, strerror(errno)); + uiPrintf(state, "ApplyParsedPerms: chmod of %s to %d failed: %s\n", + filename, parsed.mode, strerror(errno)); bad++; } } if (parsed.has_dmode && S_ISDIR(statptr->st_mode)) { if (chmod(filename, parsed.dmode) < 0) { - printf("ApplyParsedPerms: chmod of %s to %d failed: %s\n", - filename, parsed.dmode, strerror(errno)); + uiPrintf(state, "ApplyParsedPerms: chmod of %s to %d failed: %s\n", + filename, parsed.dmode, strerror(errno)); bad++; } } if (parsed.has_fmode && S_ISREG(statptr->st_mode)) { if (chmod(filename, parsed.fmode) < 0) { - printf("ApplyParsedPerms: chmod of %s to %d failed: %s\n", + uiPrintf(state, "ApplyParsedPerms: chmod of %s to %d failed: %s\n", filename, parsed.fmode, strerror(errno)); bad++; } @@ -784,8 +805,8 @@ static int ApplyParsedPerms( if (parsed.has_selabel) { // TODO: Don't silently ignore ENOTSUP if (lsetfilecon(filename, parsed.selabel) && (errno != ENOTSUP)) { - printf("ApplyParsedPerms: lsetfilecon of %s to %s failed: %s\n", - filename, parsed.selabel, strerror(errno)); + uiPrintf(state, "ApplyParsedPerms: lsetfilecon of %s to %s failed: %s\n", + filename, parsed.selabel, strerror(errno)); bad++; } } @@ -794,7 +815,7 @@ static int ApplyParsedPerms( if (parsed.capabilities == 0) { if ((removexattr(filename, XATTR_NAME_CAPS) == -1) && (errno != ENODATA)) { // Report failure unless it's ENODATA (attribute not set) - printf("ApplyParsedPerms: removexattr of %s to %" PRIx64 " failed: %s\n", + uiPrintf(state, "ApplyParsedPerms: removexattr of %s to %" PRIx64 " failed: %s\n", filename, parsed.capabilities, strerror(errno)); bad++; } @@ -807,8 +828,8 @@ static int ApplyParsedPerms( cap_data.data[1].permitted = (uint32_t) (parsed.capabilities >> 32); cap_data.data[1].inheritable = 0; if (setxattr(filename, XATTR_NAME_CAPS, &cap_data, sizeof(cap_data), 0) < 0) { - printf("ApplyParsedPerms: setcap of %s to %" PRIx64 " failed: %s\n", - filename, parsed.capabilities, strerror(errno)); + uiPrintf(state, "ApplyParsedPerms: setcap of %s to %" PRIx64 " failed: %s\n", + filename, parsed.capabilities, strerror(errno)); bad++; } } @@ -820,10 +841,11 @@ static int ApplyParsedPerms( // nftw doesn't allow us to pass along context, so we need to use // global variables. *sigh* static struct perm_parsed_args recursive_parsed_args; +static State* recursive_state; static int do_SetMetadataRecursive(const char* filename, const struct stat *statptr, int fileflags, struct FTW *pfwt) { - return ApplyParsedPerms(filename, statptr, recursive_parsed_args); + return ApplyParsedPerms(recursive_state, filename, statptr, recursive_parsed_args); } static Value* SetMetadataFn(const char* name, State* state, int argc, Expr* argv[]) { @@ -848,14 +870,16 @@ static Value* SetMetadataFn(const char* name, State* state, int argc, Expr* argv goto done; } - struct perm_parsed_args parsed = ParsePermArgs(argc, args); + struct perm_parsed_args parsed = ParsePermArgs(state, argc, args); if (recursive) { recursive_parsed_args = parsed; + recursive_state = state; bad += nftw(args[0], do_SetMetadataRecursive, 30, FTW_CHDIR | FTW_DEPTH | FTW_PHYS); memset(&recursive_parsed_args, 0, sizeof(recursive_parsed_args)); + recursive_state = NULL; } else { - bad += ApplyParsedPerms(args[0], &sb, parsed); + bad += ApplyParsedPerms(state, args[0], &sb, parsed); } done: @@ -1227,15 +1251,7 @@ Value* UIPrintFn(const char* name, State* state, int argc, Expr* argv[]) { } free(args); buffer[size] = '\0'; - - char* line = strtok(buffer, "\n"); - while (line) { - fprintf(((UpdaterInfo*)(state->cookie))->cmd_pipe, - "ui_print %s\n", line); - line = strtok(NULL, "\n"); - } - fprintf(((UpdaterInfo*)(state->cookie))->cmd_pipe, "ui_print\n"); - + uiPrint(state, buffer); return StringValue(buffer); } From bd6138cffeedf1d60346ec9d34711fe38d0f8323 Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Wed, 22 Oct 2014 17:05:08 -0700 Subject: [PATCH 106/110] Allow passing of mount args to mountFn Bug: 18079773 Bug: 18092222 Change-Id: Ifc3f3e123de729dfbb2f49414b3207afa96268d5 --- updater/install.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/updater/install.c b/updater/install.c index 17ea4c2b..282a6188 100644 --- a/updater/install.c +++ b/updater/install.c @@ -91,16 +91,27 @@ char* PrintSha1(const uint8_t* digest) { // fs_type="ext4" partition_type="EMMC" location=device Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) { char* result = NULL; - if (argc != 4) { - return ErrorAbort(state, "%s() expects 4 args, got %d", name, argc); + if (argc != 4 && argc != 5) { + return ErrorAbort(state, "%s() expects 4-5 args, got %d", name, argc); } char* fs_type; char* partition_type; char* location; char* mount_point; - if (ReadArgs(state, argv, 4, &fs_type, &partition_type, + char* mount_options; + bool has_mount_options; + if (argc == 5) { + has_mount_options = true; + if (ReadArgs(state, argv, 5, &fs_type, &partition_type, + &location, &mount_point, &mount_options) < 0) { + return NULL; + } + } else { + has_mount_options = false; + if (ReadArgs(state, argv, 4, &fs_type, &partition_type, &location, &mount_point) < 0) { - return NULL; + return NULL; + } } if (strlen(fs_type) == 0) { @@ -154,7 +165,8 @@ Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) { result = mount_point; } else { if (mount(location, mount_point, fs_type, - MS_NOATIME | MS_NODEV | MS_NODIRATIME, "") < 0) { + MS_NOATIME | MS_NODEV | MS_NODIRATIME, + has_mount_options ? mount_options : "") < 0) { printf("%s: failed to mount %s at %s: %s\n", name, location, mount_point, strerror(errno)); result = strdup(""); @@ -168,6 +180,7 @@ done: free(partition_type); free(location); if (result != mount_point) free(mount_point); + if (has_mount_options) free(mount_options); return StringValue(result); } From 6a821fe5f054df674151d54e7b03be63afd35d58 Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Thu, 23 Oct 2014 20:36:42 -0700 Subject: [PATCH 107/110] unconditionally apply SELinux labels to symlinks At the end of the OTA script, we walk through /system, updating all the permissions on the filesystem, including the UID, GID, standard UNIX permissions, capabilities, and SELinux labels. In the case of a symbolic link, however, we want to skip most of those operations. The UID, GID, UNIX permissions, and capabilities don't meaningfully apply to symbolic links. However, that's not true with SELinux labels. The SELinux label on a symbolic link is important. We need to make sure the label on the symbolic link is always updated, even if none of the other attributes are updated. This change unconditionally updates the SELinux label on the symbolic link itself. lsetfilecon() is used, so that the link itself is updated, not what it's pointing to. In addition, drop the ENOTSUP special case. SELinux has been a requirement since Android 4.4. Running without filesystem extended attributes is no longer supported, and we shouldn't even try to handle non-SELinux updates anymore. (Note: this could be problematic if these scripts are ever used to produce OTA images for 4.2 devices) Bug: 18079773 Change-Id: I87f99a1c88fe02bb2914f1884cac23ce1b385f91 --- updater/install.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/updater/install.c b/updater/install.c index 282a6188..db2bd329 100644 --- a/updater/install.c +++ b/updater/install.c @@ -770,9 +770,17 @@ static int ApplyParsedPerms( { int bad = 0; + if (parsed.has_selabel) { + if (lsetfilecon(filename, parsed.selabel) != 0) { + uiPrintf(state, "ApplyParsedPerms: lsetfilecon of %s to %s failed: %s\n", + filename, parsed.selabel, strerror(errno)); + bad++; + } + } + /* ignore symlinks */ if (S_ISLNK(statptr->st_mode)) { - return 0; + return bad; } if (parsed.has_uid) { @@ -815,15 +823,6 @@ static int ApplyParsedPerms( } } - if (parsed.has_selabel) { - // TODO: Don't silently ignore ENOTSUP - if (lsetfilecon(filename, parsed.selabel) && (errno != ENOTSUP)) { - uiPrintf(state, "ApplyParsedPerms: lsetfilecon of %s to %s failed: %s\n", - filename, parsed.selabel, strerror(errno)); - bad++; - } - } - if (parsed.has_capabilities && S_ISREG(statptr->st_mode)) { if (parsed.capabilities == 0) { if ((removexattr(filename, XATTR_NAME_CAPS) == -1) && (errno != ENODATA)) { From f15e31edf948d9dac11858fba6dfdff8a5cd91c9 Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Fri, 24 Oct 2014 14:14:41 -0700 Subject: [PATCH 108/110] Log mount/unmount errors to UI Bug: 18092022 Change-Id: I6c42038ebeb1cfc1e7ca0d3e12310fdce1b990b0 --- updater/install.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/updater/install.c b/updater/install.c index db2bd329..ff7de479 100644 --- a/updater/install.c +++ b/updater/install.c @@ -151,13 +151,13 @@ Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) { const MtdPartition* mtd; mtd = mtd_find_partition_by_name(location); if (mtd == NULL) { - printf("%s: no mtd partition named \"%s\"", + uiPrintf(state, "%s: no mtd partition named \"%s\"", name, location); result = strdup(""); goto done; } if (mtd_mount_partition(mtd, mount_point, fs_type, 0 /* rw */) != 0) { - printf("mtd mount of %s failed: %s\n", + uiPrintf(state, "mtd mount of %s failed: %s\n", location, strerror(errno)); result = strdup(""); goto done; @@ -167,7 +167,7 @@ Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) { if (mount(location, mount_point, fs_type, MS_NOATIME | MS_NODEV | MS_NODIRATIME, has_mount_options ? mount_options : "") < 0) { - printf("%s: failed to mount %s at %s: %s\n", + uiPrintf(state, "%s: failed to mount %s at %s: %s\n", name, location, mount_point, strerror(errno)); result = strdup(""); } else { @@ -231,10 +231,14 @@ Value* UnmountFn(const char* name, State* state, int argc, Expr* argv[]) { scan_mounted_volumes(); const MountedVolume* vol = find_mounted_volume_by_mount_point(mount_point); if (vol == NULL) { - printf("unmount of %s failed; no such volume\n", mount_point); + uiPrintf(state, "unmount of %s failed; no such volume\n", mount_point); result = strdup(""); } else { - unmount_mounted_volume(vol); + int ret = unmount_mounted_volume(vol); + if (ret != 0) { + uiPrintf(state, "unmount of %s failed (%d): %s\n", + mount_point, ret, strerror(errno)); + } result = mount_point; } From a6c142f2a579ea5e7cdfbc88e6a061c55029265a Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Tue, 28 Oct 2014 19:49:57 -0700 Subject: [PATCH 109/110] Force sync files written by minzip. Some files appear to be missing their sync to disk. Bug: 18145574 Change-Id: Ic858624a4dd65bbfc54d30f3a13c607078270345 --- minzip/Zip.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/minzip/Zip.c b/minzip/Zip.c index 5070104d..70aff00c 100644 --- a/minzip/Zip.c +++ b/minzip/Zip.c @@ -1067,7 +1067,8 @@ bool mzExtractRecursive(const ZipArchive *pArchive, setfscreatecon(secontext); } - int fd = creat(targetFile, UNZIP_FILEMODE); + int fd = open(targetFile, O_CREAT|O_WRONLY|O_TRUNC|O_SYNC + , UNZIP_FILEMODE); if (secontext) { freecon(secontext); @@ -1082,7 +1083,12 @@ bool mzExtractRecursive(const ZipArchive *pArchive, } bool ok = mzExtractZipEntryToFile(pArchive, pEntry, fd); - close(fd); + if (ok) { + ok = (fsync(fd) == 0); + } + if (close(fd) != 0) { + ok = false; + } if (!ok) { LOGE("Error extracting \"%s\"\n", targetFile); ok = false; From cddb68b5eafbeba696d5276bda1f1a9f70bbde42 Mon Sep 17 00:00:00 2001 From: Michael Runge Date: Wed, 29 Oct 2014 12:42:15 -0700 Subject: [PATCH 110/110] Use more aggressive sync writing to applypatch. We have seen cases where the boot partition is patched, but upon recovery the partition appears to be corrupted. Open up all patched files/partitions with O_SYNC, and do not ignore the errors from fsync/close operations. Bug: 18170529 Change-Id: I392ad0a321d937c4ad02eaeea9170be384a4744b --- applypatch/applypatch.c | 44 +++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/applypatch/applypatch.c b/applypatch/applypatch.c index bfb9440e..2c86e098 100644 --- a/applypatch/applypatch.c +++ b/applypatch/applypatch.c @@ -309,7 +309,7 @@ static int LoadPartitionContents(const char* filename, FileContents* file) { // Save the contents of the given FileContents object under the given // filename. Return 0 on success. int SaveFileContents(const char* filename, const FileContents* file) { - int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_SYNC, S_IRUSR | S_IWUSR); if (fd < 0) { printf("failed to open \"%s\" for write: %s\n", filename, strerror(errno)); @@ -324,8 +324,14 @@ int SaveFileContents(const char* filename, const FileContents* file) { close(fd); return -1; } - fsync(fd); - close(fd); + if (fsync(fd) != 0) { + printf("fsync of \"%s\" failed: %s\n", filename, strerror(errno)); + return -1; + } + if (close(fd) != 0) { + printf("close of \"%s\" failed: %s\n", filename, strerror(errno)); + return -1; + } if (chmod(filename, file->st.st_mode) != 0) { printf("chmod of \"%s\" failed: %s\n", filename, strerror(errno)); @@ -408,7 +414,7 @@ int WriteToPartition(unsigned char* data, size_t len, { size_t start = 0; int success = 0; - int fd = open(partition, O_RDWR); + int fd = open(partition, O_RDWR | O_SYNC); if (fd < 0) { printf("failed to open %s: %s\n", partition, strerror(errno)); return -1; @@ -433,7 +439,22 @@ int WriteToPartition(unsigned char* data, size_t len, } start += written; } - fsync(fd); + if (fsync(fd) != 0) { + printf("failed to sync to %s (%s)\n", + partition, strerror(errno)); + return -1; + } + if (close(fd) != 0) { + printf("failed to close %s (%s)\n", + partition, strerror(errno)); + return -1; + } + fd = open(partition, O_RDONLY); + if (fd < 0) { + printf("failed to reopen %s for verify (%s)\n", + partition, strerror(errno)); + return -1; + } // drop caches so our subsequent verification read // won't just be reading the cache. @@ -919,7 +940,8 @@ static int GenerateTarget(FileContents* source_file, strcpy(outname, target_filename); strcat(outname, ".patch"); - output = open(outname, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + output = open(outname, O_WRONLY | O_CREAT | O_TRUNC | O_SYNC, + S_IRUSR | S_IWUSR); if (output < 0) { printf("failed to open output file %s: %s\n", outname, strerror(errno)); @@ -950,8 +972,14 @@ static int GenerateTarget(FileContents* source_file, } if (output >= 0) { - fsync(output); - close(output); + if (fsync(output) != 0) { + printf("failed to fsync file \"%s\" (%s)\n", outname, strerror(errno)); + result = 1; + } + if (close(output) != 0) { + printf("failed to close file \"%s\" (%s)\n", outname, strerror(errno)); + result = 1; + } } if (result != 0) {

    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 z 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 literal 0 HcmV?d00001 diff --git a/res-mdpi/images/installing_text.png b/res-mdpi/images/installing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..064b2a31756dbd24d6bcae8905e89d471642ece0 GIT binary patch literal 24575 zcmafaWmp{DvhHAmyE}vg*Wm7w1P#F*f``G~2A5z71PCs{J?Nl=yK7)@cL?qmzP-;m z``jP*_K$gc%iw~a0IswIONx_UxV=K{86}imK!j;NTU5_ zW{mE~R5o3s%xtlh?G~aJ-6j_WRLa&Q7A8g_Bi9fy73kuJ%($f0Fls$B8b1zdU{9;i zz9(!fpSuv*&zLE`lg*v=Uf!1@dPI0y7f+&zQ++-v1#69tX(Ju&YMhKeu^yoATqWW9 z55MNG;eu1@Nh3Eqp&7tL5_2}oj`oCAZTA$`Bi>#q$!li%BF9-ASLl#)tvHo;9rZjm zx*CHl5(EY;o5bxFRlHc^zAU+g0&zpdlvP<~)Q!$vU?>4)hdTb&6mhV*vpzU?nbo4> zI>j`5>ma%k`y6L(pB^U&**L;}Y5g7#T*qCk9{VgOKjRRp|Mk#=wKFAv=8wV%birh2 z{g-0t>05F7Dn0~0Et^mM23c#$JDFHjEHrNT+tPnp##rS6kIhO)lAoX2D^CP(2k`9M zzl-g4gyL1sA3aVbfIrg-BG`wWUaM~DgkcQBwHD1rU-Hp@@u2^LC6^%DeS;$;LS84a zA-CY7uBO$hWVG6J+vyf8k>A_~Ga zS8){6MWW|7DZ%lA7#hi9-CNZPiiq=n1Bm}5H(B4r2ln8fB1* zr+lr1w8r-NqfHr9SqMVIJJd%o_uiIi!6%R(SRdKX!!CR$3;PjDjEAR&}2 zx*vRPmwc?!-w`rr`LOt}T&G%M1Py_vhUWg8KG563KhsmoOAVw@OG0I>vX(X%qPQ(9 zrGiyBVV=@5TjubdUlP~Q(%@_+=&mk6d!mhedlY0{TfPr)sA=cLCu1)#@{W2f|K*rS zApX6-r1foUxgf@gmRnZ~JPqCQTYbo!Sd0YyN z&56gF$#g+d!2I0T$bBtv2R1-3;jcZ5BuoqILH5^kSEf!`b-AYi)t?a`2qpf!zPaZ=95{ z0jxHZDaZh%t4VUe0o9ix@t}8sHSN0qiowb*I36DafZpLu?IN`3EW7+CY40Lrx5D0y zrm5`Fi}B?C4Y(~+s`o?z6#8wdA9l`K-vq26@(rTjipEx z>_&a*BVBV87z#_wx0sbX^^O$h_lb2lfZxLQzi|V7Z(4+)l1E{>^77gZAJ#1^?oO|} zA0dE`$pR)YXlyu1=0!(lv!2#)zgtxjj^sYngGR(6K$PWa*^`P=lhSX93-77kgy zS=0k0EW{k@@FZ460YBP|KdxxT^eIX5Ioz@WcqlJ^rfT`aXB&j6xsY~L)AF|C8qJt2 zV|`0CY;KGi7^I2g6nKC|Y%JMVWpSX!!}B|J^Xq^7^J&>11)9`?+v>#aYE0|UH$A4! zOWbi*otSS=LuX!CW${=XU@i60S7caidEdrbsNC7z0KJJ5;;_l@Baqe>u0n{0h9>;{ z3iFC#5D*X~hQaA=Nz)+BQJ60%6GUSQ>mQr&TS|wg8$LG#5BtTgfj+5g{DE%JeER zS}U7HbVwXB--WGxrdh{k)viH9DQZEk3C{Y0{sUEqWq?S!7Xu)`g^g&wG8i3Vj*0_~ z2{n%?>j2*=Qo(iwQCDu5jkT0NA3;yfP$+aTKlNl=v3%fj|1sPb5fX|?2vBtZLND?= zc*iPph-wzpASY^wh@9LA-XcJ4k9Q05XG573q(Ub<1+5(5ru~4Q6@wMQqh%xTTOq3z z5Dy3(z%Nr}5Czb$j1E3`f_`*3IFh(z1)u{vG2OIDa%3Ib#sGKTQZ>GEBF?wmxj6U9 zAW1Kyx9s*vrJ{EMaf6n)Iv~l*k0OSc0QYz2WxjBLXjH(fCaoq}gHF3l1l|vrZdIFO zISocu;FC+=c`>p&cVT96>B{w_ocx$}QiY~(-(9Y5iNmPfTn=xU+b+jOWl#H*f#4v! zu-Q_WkE8lI*xtEi&sVz{~*z2fRzRA`yY0lh(pnk;74 z<)Y@%*YWb0^1*eqZe_o&d@oAx&^P_ZtVMg`tgvtMV``F6nl8a%UM3K_rs$hl zUR=VB(?# zTmV^Lc^kvMqHLcG%<$!v8TU~p2*JI8129e;h3saa<%`_#5a~3hKLUr`fYfU1R(IgN z&`a;qE5!2w>KkW%zy-XhNmLe`Cpw@8x*kXVk=Cqy^QOEPF2N9cm^sPIZhZ2VVe_I zT)dulxgPS{mAF3nq$tdGG0*1{Jvl9sI2ARhC4o}ldf*loMWy}Lo+iCve0^Lu4KLTO{n2D^sdrTA;~g{d7N)}+FFO_D?4xi5K07Af^}iYj zA?%iv>1rOkiV?l05z@i}^?)P6u(m*y^SYxc)i&W@emEJD6tQ7A1r)yMm)Po8M>~4R z+Ve^CY2Cf&PqL<5=JivyAWTi_ra7JeGj2_E zJWcf#9&lgEInE7;KM52kS~W$M!#;0+a%2s^G;D>pM;~=noOSKvxag~>FP+ebAo*Fj z^7*cwItr#El(X;Eoy&0Zi-h|D!L1^}0(r47s0JrLh_*6Amn#L~XOPJN+FCBXC9tTN z%-h&bf9-t5-!Mi2o~6;t%w(FES8wiCGV0>HXli_>SPgx)br=KJEE+C3k}VNTI}+%1T4L=z$YAavCaKa^(= zr+5No&S7*rmphI^$YF2p%-6&u04oOIwPJ}AMO}jR#lZC0yT(fkVcnS)d{pg$6yd)< z_C}*xiTGZSo_jnAT?ZxUQ)dKK*+yl2&-n2BymnpJ1*_3J0Ne??grf#c*UxMEszh-; zkkF`J^}tdDVpQK3kdQr6-&w@|4bHl*>Ip;5)xt~_F6P-j-EdgP>{(;ATL&!jex1LZ(5|A<&9@t z!NISv`HQgTe&vqfCv%{#n$^b9AVDiV1bB+Av-xi&0VV=%%|H@_yFyAl&I)niA3?8D z*vSsMeZc_x8+>BGdwC*z9vp}#1778&+~=;Aw_uUX)kN{L4*+Xge9sgl53gr~yD3L4 zwEUC_+|BHx?DZZCU;pK_CLc%lxE`m8=ovlvw8zphKz8#ht)_dgBc`(V$*H5}*! zW}a|O*$OMqz(8iS^iUEL*>Mr#SGar``(||2xbJ|`Um=`JY>ZBw$?YDZS%HCpQlTSv zc@mP6lC;Sc5qV2#y{W%Af9{)X?WgvV3zO`8GU?h#-Z$BMKJ}i>J*cKpFqYaq9WJ?5 z-eH@@_C4|7bnZ!4e`cRb5X(W>ItrH)&fpif5DWDwP z3iNWbf7)G2yv3W_=hQ&;jQ>Q9C^y>xLxU&QQ?;J&`Y+Xw5yx6?oX8-8dVWLwbM{FD zX*i!@w={f_v)k0oFS^%B1w?QIQmg(&_wn_vP$ClZwGmMv^tVJvf7mkb((#k}h2Qf6 zq&@U>bS1AHnf%o~+}?xY{-)RghT$!;4oLgha$v!?lC+s#I+zWG;`#JFG};!(p^y&+So^Gt@@gfziW1uf+NGOum+2hf%bdqSF9ZqpulG|?tjoWjUTabi4J>eQjIH@Mx(&w zvlxbg$xqV3vQ1ovbHB-15z|uIKfo&wulQQN{A$oB?=>%*zI+%IrRGQbj>f0bj_`@% z)2_}kFLR5YT&Qc~qprBKAEGM9TrgayDIr*HODY6QKgaw48Ty@3t2cdpvr0oNDT>SJk)ZpEixMsbI zG2YnaANlz%nE|KVTlCtV;;kvqs;X^yzBZO0S=v~XhIhpf)-8vWD*yViHa`>Lfq5H7 zY6%M7m-Fxz++jpza`8VyR-KFlUm}1j(n$pl1-g#k|I6I2+COYMgz@LG0Xe{UPIrNf zXKQ}r&r}Pn-<>PPbO@)a6D~b(jlNx(fd~i=$d2m;Nb#RHMjw^N4mVb_Z_amjeG8VVm=@~H=Q`nlRSKn^ZCHdXx$%6 z?|mJ5q{?xUX7|b5GRO>U_8Yb;{ehU`^#ThVE8~?gpsTsF+i=;F(Kd&lfoe9$*Ugvh<>f>47tAfn732uWc@k3vr zV55so$|dK_wNp?`XCB>GPf=?!bz=0>Hh>mw&>7gC+*d&slrO*!H%V8OS9jt)x*JwD zAH=NGFdQ?s`g4wxBG4duNv$J{xE+(3)3z@#)23yVMm|Yp_^(V4nI(v-CUb(wNKg}@ z)*U|sV|XIDehz1JPu5RS>hMhzJ0T>3>>iIPCLP>D*Wv6n8=J_AT=*N)pE~0TgRu!W zap6)=rk&D5-cu(YgTGMXs-ByST}mv7V)5=@59|J6%iVbUMA5f;@X}g);hH>&k_5>x~pGiEziUS6APh#*K z>kFJvc~k?A=hHblXfoS{8+~jN8Qv1zbb=pb!ysIdqze`4ByVa?ez&EjbaD5j96+k3 z*uCu`CZ)0T{K;Wg-^qKtmR09spP+3VhE+6v%=ARhpDr|f)gVh}AB?LzH9IUJWn+Jb zmE)`RfhPqs4gw6rYmFcV_rsV?FEQwoRC`vCCuT;Ktvkl-8Qdc=8jw=a_9V)n$qbT# zebT1NxwE2znGv9K_Vi!U*8fPe{+IO7e@p+P{6D9D&qPc?e@&&Es@|&-`j9rc>AWd) zGCPiUGBXUxwJ6vc@c-~`h}J7@q}`<7 z?I*nj2@n~2{TVww&}1t2I-i)-%k=rfHXi&dy+L@?EMj6mTW2$c#hH#P3{a|3A6^M|Ba7RDVEd=^Miz`j-h0cdC^t4C;(X>jGI2BQXRrk7H43PQobw=pjC!rBS}X zK7S>x!g|cGq;UT(*LSrljUTFAlkij8_+>egXd=SS8S@k(FfBg*6+^VDnR@y4no87V zNbg%80U~ubTg}fmjF#u&`CmEb-$wOCJKl426+K26e%?XddbpOu|L&I2bOzW{OCfZs zm2!SFC@+|6nWWcj$II0j4&!V!#%@=)=6jOhczcd`=I4`(`c8Os(Gzf?t-4yMn*;g2 znVU8qhMcav4eZy%=Z@;bTt~me5&2tBi#lqH%x}$HuA_lv#Lh?kaSJ@ z)vIdAZu5@Bp4zQJ7i^k804$A9t;%c;@=RlsPO~ti|b#1A}e*qVLk;hP+0I9)CFI z=GzLT6??t4adk<^F}Bml8um@k+23n>OF1L;bZ{(LG$OT0-8}EvtM3@+F`y3Nl#Ni@ z%F3{|m#0I|!fxHX{QW8Tc|{m!>`Ai3-GR-y_bZf8Vxi`WDDt{4UX6hpkK7$F?7SNN z;lmOeLDeW#N1-GNi$yzimq;f1r#~wpMTZQl(GQQouM*wf+TfT=I!?5cc67fNOj;wp_f zDcolfq?+0ox*l*Z>2n`wV8>b<@;r^vaQ9-FBe-Lg1&?8Qv5mP!uItl8Y{hvi+RFYG z1U#IaZ})H*n@js8M>J^aD752ZWRb3gPYK`WQ&>?7kvlPZ+b(tp0V z%%4NT*q8}@xX`MCthmXuC|A6qwxBVOF4sD|H-+yMav6m zw422vXn<@a)RT@#YCk5Xaq-FvhrP1PpGWTeYqqWM;USnMoXn*f0EgQZs{mZ>W*sED zw`+Xz9|9-ZCR+u+FQ#GH4|#oZ7uS7)PLbD!48q`<3pNAEC?NMN%i9RDDo6Bmee@ z*9C3*(`O7tk9RlZfxh0 z3=99;_Kna0MVJGssxI{~4%O_J3JKV$=Zp{pc?mbK}h%6gH_U!a-zzYo15HnS}6i>9z>GAPwnQPBH`24dZn9KaEQ zMaPao<6k_mZ>2|~UpxN~@c;5Mp!W~p}5Yz#C(aP#Ljy5x$lf%b`qo~u-xZ?NPlnLGyTXHCQOT}!i9EM#>D zCxoW+>BgSUSv0ZK@I?HH`ej3d=(Uvkl=OFeFpc8esDGzjbTsL2)kY5mYVC52Ki}I? zzS_S{fT6R^HG~b|c+(K6j2!<1o|=)Ver1$z21nP9!P$qK*LXN_!Y+^y&Tg2~d_*4= zo`fw;D2z#@POSqbyY&{%kW*mZO(f&#%%>ZEE9oyB4m%i@J;)Z!G~gt~D=hdHdtZnq zM_u55#I0a4*}ZQ^wOEb)n5Y4(@O_kxFsbC82F)?$7)3nrID~AS(FBc#M}(7uga_0+ zW|q9oLiDIV!0-(m%B~%ukN8@c>FqFSdP!9@9#K;t*-4<}x?2=qqGziq+%sRms%c-e zB0KzVN;>JGC&FQ znj75B{u|hAJk~&&8*QG!L7W1+|0o9N=#C?Qw)E{XWeZ_8deA{C};ZuVF5V zJO`EqJ-(;EZMb}l_nLbMpJ-rlOAQ5>ILV8=+_-*O7hgk^7P7JrWzI|Kl(rR1u?)&% zdk}LO-~p{Rr#~qu{7zy!S~%XwnzGzW^Q^6lWbSa^okIt&e%7RXxsDAz6;$l71I6~)S zmGih%ew1Bzk%8}WUMpx-8GE#7mog1rD9*Lp*kq!n6MF z3n%o2Zf@DC+A9A!<v zo%-fDpPlXhri0QYG_?J!H~_8|QfRuBXx{@w#SyB5J~ zh|Bsdk{22Fs-(YOSO)o?3?uMlWH{>Y$lnDv=~J*?8x(|O)qNE)GR&@J-qK=+BHpkx zwUB!F0q!2QurM!_fU=^G6}K3d{D2HzcB<1TpLUMlxW|k;aKp5;5-0z!i%_QUWrTtHt`JoTbxIx&g2FF{*3% zSUs6)U=0@^gf!*T*xd9^MFIXqPrOJ$654;vf6Z;1Zdm|U+#k!bcczg(`Je)il>>yP4tjLRQD z`@S*Hw&|D66AF!h;%wVmGwFr*KED(c#(iz_@pxODNYgLmG++VQ9>f@D#74r+>JxP* z0vGJrl4*#_u()IC9BC?)lGD5U{O4%$0R7}p5dxD>^ft7J@CyJ=EHj=nxkxnx#Mf|B z4aY)lm}(;1lj;Hv(zhga+oJyZi11q%eo_)290RCD$N*a89W-cNK3-_ZAO-5q%jWIa zuM*JaB^9ER67mn1GlH5O$>c!=4lALp^+{VmWcd6Gzu(~HG40>P<1V;h#*DMwcW_Y5 zT{Dtz$Rk)sO8V>Bk`gdjv0^w<`Hf$W<@WGanCm1f5r+&G37P)os+`4 zlBrh@0bkPOAFamEUmy`wx}oEaWjlI)K-M4mA4N$`d0N;UbT|A9Fsjfzbl8K%5(X+@_kJnqZ_3mK9obxP@F#L`EU2I*t;~` zv{$@WAFw)hBz8=^h}we6#%%yuyf!Vg`DVXI(iO;~3-UjcGy0LAFut_TzV@X)_F1NK z!$PtR_TPTcZin*uSiz4we;}o~Sbd9C;2E_h5oFx2^tnw56l(6wRwUr$RTJkdO)e%7 zB~7&tH?T88?3>bSg~fvtBrL|p*@DK*&&;1mMCP(&kMOdm2n5U+XrA$f$Ks=6=d6b8 z`xemR>_&Epck<$I8EdO|&$DZZG~-?hVVEHy#3EOD*2duqHj_}(@MGAP8-seBfbr1d zr~(e$TTTLXD)`A`s8^qjT^laT>sv@Ec4r8pLb{iTC?51kox2qaLI3OG2O8eJr1&$q z+%hg!JR{yr=5TK2b66S*GL9i-Ohd<{l0DyBegR<)7H42E7vm~l#^#&R7!qv1s$Pi& zuYB}ML0Cl#li_z&t*AIar+Gc|`+#LV`yUs*2<2#YMJ5e@AJb!oIp@hbbFTeh2D6H} zQiIWt)Sa+QuUfu|Y2HAqhWDe78VDvB?;D~mcT-S-Jpz@#ED@TWgV^I?4VPv;4kTXu zX4RK(8W2}*slE|Eg^tgV%n0#Nqn7^!hS2h(YHzKKV(J^w%n;H>NuoAjCJjXsksQZV zHexhOgSM;+GPfcnf?25a;lZ{?KbPjSbDkEAZBc~(qJ(s3!nBQ@ZR}}l)g0agwp%H_ zXdg51*E7S>zzCz?u(Qkv%NgbZEF)h>$OW>j-#}Tt}VYc zYJbBcYv_E34SpUqH(BY~;q0HB%oB2k!sia+?ymYExUKpX8TajIb`?-_r+fO}5v3~~ zAeDW#@v9-6y~xu?^kE-#@Xs@Y64QoXrmpa>QSxxrLp!-F8rGums)mC*lgT?F7--9{ z)>sx2Qh7ZxA*dKqjXBHSpqQD3uSuo{JA1c1dT(6=opT-3)*rrWKIcqU*F$c_vjW?Y z=eBMU0Dmdr`jjfKZs$W&0gAg%Cy=VBKfEX6x6`&@I&&-%WV6c7L=BIRo$QHx0>5to z;1F-1ed?K{y=QZ8^mG7U7)4*n^6XV|40L1bfO6$REzFSifA z*9t1(fQF(e6ppS4?L$2R`Y|KjGuq6Z|BI5orv@VYKazh9`=j48#lepEy%pubPVtuw zUXWoEil}xhJO>^vK$rVq0ac@Y6W&6l7Gv|ioVo2 zQ2?MFqCxe;7a!)nTH=7d>|9_Ws&-<%jMz9mO4SkD*T}8j0&jfljiIuef0=mL$6@Mi=t$f|idN7FR4Oc5NH>ViRbn4KM#KGaqF5SJBA-1*!e`DjsygjkUz9 z{}0liCFCoHs+b}87C^YFU-f^Y?E6krGf9eJTq=`5#BpUede)KtLuC1d&c6-)7WHjz z5J%WAOb;+L&9AUH9yHNUyGUeN4a7Lw>0gdyba&M^GdUZk8H`HL+Vx1E(5+dweEl{sgL?d*Qy`lVI;~ zw`LZXjiiPA`Mm6KIjYS7Toe14kW-p81}>1O%+R3_pz3G(H)ujCro_5Q))8?6ruk4G z8xaJ~4lF%QMVF13c$- zrA{E&3lxo0bz`A*=!={W4R>f#bi}PYWZy~CK3JIl2j!byY4C?Ufjy^|ALR9z&eC+@ zuwSAXKoybI`>G(LWt5w%DF)OZmh?&o^L3YztPyZ}Ic^dX$T6LUnA<55!_;X3MV0- zEsH<5!qaE#(r{}9tuP0x@CNZ3Txj*(gs0E8MN4Apq`pABw^6J$Mmc2m@>6+-8zr<%c3!!su0X|u{Qcfs# zgQZ(v9Pv|TPXCw)%4_#GQu3}sE<6u_FKsTn@0F$xks*znkc@%svy+h8D%I%;pgiXZL?Gj;HTj20HpuS=O0kMJg0fQg;({-*boEJa{wd(=T_ z`z$%YR%chr*3s2bON{d(|E$|^E3}U#*oCTJD-u#fT_}c1v5cT?FbOao@Uil^M5eTD z-BwwlhQ@MaZu3no-L9{>0Co%lgu73o$1Wr^mp_&tHGu$KEm}TRZj|te7@(Djs?{hY zp}n?uQIgXdV1XI({mmxE^yKXu->Q`f)0Mr{@Jw=Ky^(TsII6Zkp%))PF_&ySY4X?a zxzrZ|_SUukWTMG5cEGL7I$0T8imCn}vOoYYD4vyh)6BPFGL?6V)80!yDbuf-JXKKs zAsS!-ote8E34rDOrR4{VOMBJTvFHQlru@-ZS#_m3v#7S50|kB|cQVca7dGkt^ic;`MckpVS5OW|9lDaiu*Yfwab5x=QM~(b00^nX*nmr-y z%-#PQ^}`|CvHec|Dbb+C;bs(>dlU9+2BXd(nm4Ui3zR>rp#v7uiXkLZ7RV4Uwl_eg zRP&7a9@YjwComR|a`+QYzev!n@eFzo3*cGYaIg)yu)9^4>Wi;&z_IiXjNzz2m~-=I z55E|+41{vxnob;q1iY+KYX?iVZ}?ocYlAw9VBaPWGA`PqvhF#WG8kqxxPOq+UCOU2pY z@@eQr+uHB1U|v_sn{uY#-$F-$#D4b3suv76>y4D|;;~;9X48w@4dHkTlrKbL+h*^K z=LeCEE7P`5QyXWntMrI# z&u{7gFP~wwTSQ+oG)i$<_EC1s`=az3oSvJy2!<};P-7re$8l1SiG2>TV@xa2))M$$ zx??cBu$F7Ul{{|$EgG<*wsbCAON#ITcQ-P`84C}{sxLrfdg<`mt1e(}yx%x6z!Uo5 z9cql*S#3g@5;ARoacbagnaz@67{%V3wTdj=jik?pTs(1VOW0uQYq(6NSi6T@A{@$s z^gK}K)Q8mjEdKIdEGK*J_lDu`*&n;6@mA!DkU%1R$U!a5mhTScY*0cYt0iubV1wo; z^xcQuJ5Cs6ew?foyI$3ZbN+;F$5*AdN$|;QDOCHB(hV$lEVe={Tb|@_le|Y>w%fmp z%WsvSIeX<3hz?aNO77i0G^I5%^)enyUO;IdKg)eoGtSbz>;B(0`6V8W!ZO#@R!~BD z4!I;#hYD2C7TYMILk*m|fqL8&x>2P7F@m_}I(21^cSG&{9tOaoy^?Wu+S8t1CPJSe zA5+(yqZ~dW-FI33;NX#{u#Mnhhso!auzyd-y!th=z6c+S&GbdN3zTQ>)(9`&-jy9O zyk}4y^rO$vlu*J)V@A^x0R3+2?MLDB>cB#M5eZ%KTLMjh2+AL8s=ZWhi>o3#$^koK`&72;|deY0WCocX=2FO9#%VCpR%d%uqu zNT!B)BTrlDRU9Y&9)N40W?-N$ap)~&A#1LQ5=grG%_t+BKwjnyP8)7zKiK>Z{cS+F zDwGX10!LS=*fT^XhNi2!PR2%;1tE6jDH6k6-)meIJR=!#KaWcRjJepDncKEm_Ir?E z0&iLV{CR1nVAmLY7=6JetEOIDB2mUJy5K;PVG%ZMHXFWcLn}5 zlJ%HT$qccXF~KYVd=X0IBM19p{}-NsW7+D&aK`5ccXYJ3T;31a>w5dK2;IT~cMO0# z{=Pv>X+@M7EU>OY!Mmab4l4v4PV({8WBGK+zAQn_sS~QWSL_RM;&7ihi%? z@X__rYhbF(oA9!K8;{6Ytse;)n~!iK=0XpxC^sPePm2%DOPZIuBD@dBvSgmSBba$V zEKQ08fuA0G7-r||?d=uVMPsGi|F#E*&mjlX%GO{V!3f-sU8w8qc6UuqW!}xE{3IN{ z#AtAq-c4)_O>9OnHnWpH8+33O&Wy@jAj5YAt*|EJ;NAf+yWMKA97{j0rFK6BH6GK6GOID7h zQlMwEUPjJ_?69NML(L{w1;*uV3xP2P2SW(+3^eL-?&tInj66QJt>jTIReqXj^E+W# zysTMn{_{w9FEws?ugXEA+9Eg%%f6 z;#_x%o1ew@ctf)%0HWi+7Hpu-69PXTeFRI8q-ix_IGJXl@A|uEdE%;0_AN28KS12y zJ7rJo!QM8T_OBMYVT+%E3rhk7?v>brFxT?x9k?%SQ=+-H11>)MbrveHSwLwl z8G8Wa=I=R*kRSPtLhmnVacE^xZNEqhG12-Uj+J&wng0^*sz?oHt+AQi!xU-{CAbU}+m#U5B164D!^3NlU-)%)^DT0Y+dgo~Op8 z8RW2X4`0$f`(&ckC@K#W}ure86;r>3^I-S^MEjRa&h_8ySZs6OPGZE0!OX1%*D zD9Q*C*kK!}`E^{q6PCY*n?QktvPC~bmFr1Jnfz(e)6*-!wIZH}M=2z9+I)U3EA1u3 z{b+l>Gt*;MjnmZTC`eDZWf&Zsd_aLY+kdw>tA#AVDy{jeU7eXY0g8) z-X1)gM4@46G?jI2YCbw2w}d}lHA_}2dnM;`(CTexM6T*C>b7@i<8Y|?9+Y>N4)q~^ zl_oCVyBskl?Dt6-sbfdgla}HX@P;)y-voZUy+M0{a(E6W`B7Uj zXGn&~TwTGdx&^{tN!?k@OZk0#$6q1)5#%~-#J+N>GiJtPe~PFS@Jb@(K-gQ4&#NRc4seL+Ce*YZMaTYqh;&@4xE3SOuU-x1i zS(hJs$Q#{q!s01d^`(6z6Qi0-L%GSZ?e)gEQriRyT^9)SuUhW+?NuKei!3f~ zjZyJ26neS7G_goRN9s; z8pvS#lqwH1idA6qQ0%+XVem;cW@eRsxrK-z|EGru3?8a{d4O|gPzdH5<62P{55Cz% z5A?+IT_P6bQtff1_pk1-LqkU4p!~x!&0H}KL2f^&TZ@SO8g-no*ZU#a%wER*%>mk8 zh>zPA8H1}k#~H#XR0PY@R~Nz_P7mVmD~k$QmVwV4B3?Lz3I>g}Rh;C0Kiz<-YCN~8 zpo+q$q*hlfzI2N|_l1gBZ9ro+QxnMFcWBa{JBb2Xt?AdI9fMQvwk`Y-tmqP=_?@4# zMfac7eA1}khLm=Wjwt8xyZNPveFGX5_X!`es-(~8?B7AMU)R_X#_%Dmq*`>;>qv96 z9tm_{_6>f0R|r8_m4CCI?QP$ubPSWZyzHK&i}P=@z909U5B~lbLtXXK4Ju5h<4eg9 zM%R^u_-1Yrwp@b%xX%BndN}}@qTIHtZ%7g~sF$L-FGO5_7@Lk?O()+-3Z#277pjnN7+@$h5gWADcf+gE71^wRBAE*~)}b#<*jZ|ZQai=G4s0*N1<*Ngv@ zm%?oV?39B{o4J%W2%;^)H3F zqea+96ATlKt3hs-r|Oc-ostF4AJ<42Ds(g@rYxF17se z_ZyW!{|HTfJ1Fm`!s#oe^lS~#VVD+d;|NkhqD@?jW#e}inn4A{EC<2T2X!!?ZbT8- z7(GN0Vi~D`c&ddM-{7)|7_xQK$Wsknw-*=_*JHW(8`O4Ix2{D+V2e|io&Q113>3`8 z7WFL;79Ow4HbU77T>W`L@Zq#KEj1a`K5X5UPEY3^HhM>NJ9tcLC5c9&ZgCR@!R4X* zN2l2puUK>&%kG1m7kA6Xwb}MpB>ns(4PfVR<5O;<2-Rv>5%gXr+7O{L7b9oQL^jia_s+>QMk%Xz&EH=4H^91ew^~P zl7K(XSB{c}AXgJD9~=x}<;sbnh8%;R``b=fdM*UO{}k8amCb_M6a0`dyE@~@b<7Um zMKccqv}*9A2BOq>PY8~_i(fG`M5|Xue7g*y8!Ryg7?XOD3fJF~@&0|s=p)aZGJ23i z7Z6%tI&U2@V|z_jP(sOrgDnmEtkmTWoz+Md{A@xMtU3@)%M8fqcp(qc`J_E?&pw(^y1|uJ>v?XRfPLe1~ow-Xa3qdDZr?yzdEGGRx zFa2#Y`?6OD_GIH@VC>^e@*w&>*2)63>*n_H)v@CA;AhAQ5)A~ERrZ_pf-PwTJdeIY zy@ROzKj?sLX>{NR_Vp(sCV2^ODLi|kj`e~Nw4Sqj^po80WM$WBc9q9x4^ zAH;sYeh$;7iAqbHlE+mH%m{qr ze_L?$Lbl?pCNGbj9I$rgC2X%<^i4%7Tc2Ct=9_;?W^mxAzr89_k_q>x+&ftghT9Jx zan4_I_?3bWwebTNUF5`)D5?9{fIfFc2@t(rZlzrVDm3A7r4Mr$9y=q?3)A7(5M2CU zQHV#(A{3yFZ?%Ro|0gYHZ1hQP6}~@mCH_Pnf{>VM z?KY@*XBzh30$xg45!IFWn_lys%TgWSO<=e1=<;vDp@FN09KRzPM0qt#b<6qwX`e^p z=eP#Hb!){twr|0358ScGOW6M$@*mm_6SIA1dD zc~>TSY?SmZ&60A~-#y5^K|8{iuraRdT|-*VtsYY!?&}y)emQycKty`q>YUB`yLYj& z%>i4@VWXM(uB4czZAgLlPH4#u4$fRS0A}ApO(kUS*B@&a^ zMt2BE&Cw+d!WbidL;ZXo@4tQz{=4^i&pCJ7i`Tj5KA&g$)XjbHSbqUY@s2By7lhd& zWy4EA1BTz2-j#QdS<7IRM3j?wApQ?rKKk)p!z>A_ujcu4^^L3fPsO8c3toSTj?kO= z?1D=^QV9KLR&E$0yu&1~e4k~ZI}U9=bYbw>UxSzUD26hZ{Lau@#nJEmd9TvL6Bk7X zw8cToZKwhdv#%$2g1FV8?-y{;h8*E3$Vx<;fbTn=_B0ov&P;{W-~G)$_wa{YE(2c5 zFbKB#ZaPaYt*n-Y>-71SaO#nkp3Rhjdd0TqIBv+~CD6 zQfZdox?Xjk(z*MFyHU2u(kz+ zt3g+T?>w_BuYqX4F?rCiFZrc-_;rD8Otf)fII8@H=_Qao$S&5~cIecZ9aNipZ5D7$SD1uEG9#yk24TK(zr zU+%|`fD{Zkw%3_8I!q+HW{FV`2nw;c!_0RMH@|oEQdOG$EQ-M%MDw4S(~!#omrpX4 zH!m~(o2;K=y!~hCNd+6N3#1PRT8@n2{m2sB@O9U#MX~eF)ZPzurbiNE;Y7W$AT<%c zW>47w&Ft`1( zv=~3IRZ#QniFM#<=SxaQTBRZ!is;`&SXKk$`;ZaXcyB$UMvOzJoSK3?LF(bsa;)mJ zMcne;Q?0kK<{W+Sq*z_9I9-@Ejfo%vlYgmA^C2 z-kgR1XM!Mh`Mgb{RQ|f}J;6K_ zIT@dV4=?oxa9J>wD!Hig`10(J znfSQ6vG5}=ppz8babd@Q=YR)wO+ex(E(?$_HRJ5Bg`zWFXA)%fG&mnXp(tE;WtXKKliMWq@ z@uw$EDe*pAH+9!G%U#@t&1B)u1i&(nY4$SHU;F=C{l;@^WP{GVsYsjO$yP(aaG!E@ z$PTl;veFa;Q7YG4GvvwU^ByGHuC;|;c`GaSk)KG6e(`^Zuh0sOJKNtPSaSbGKyeYl z+1=25R=>RqD*Oc}z6|w<@C}ByY|P&{O5M?Nru58}re5g4^n9CUI!d*#;UlKzwMQRa z@gP@~w-MDjL3#nrecM5^UW(3??+1nN?6^re!$xc$9_OO3DJYiS4XUob5xDSCbqb2q z;Ei{v=>$=De%3M%OAcj01asDTF96s+a ziY70W)RG3Tn4RA&jX(Sf>Kctkw;d=js?^^#52NsW1Alwe>R+t?H0xvjA|$Zt-8 z+Pe;qXeE6GJ9Y+D3uE}dL1|^%@f6A^MTO&Ak^_0XS{jqxWYq~ z`4z9<4=PeWqWiWt=}F*<(MwPecfP2xH9hS%ufM{&vT&$QlRE4${#S$$J!;|l=l-Eb!iQq#5-+JT{Eb=} z&^|BMB0dRvfQ2fqn+4g(q?Scul?p1DV8B%eD!^MT7_R-C5o4mZ``1NiDM(q#j0k4;PSf2-em6nK|6dG}M zqac4&K4h}rd2p4RvSq>V!I0!SYfbRI?rdMBolg+HP2{7kwtzi4(gZI-KX{ps>ufpN zMBIz{;)vGaV-F|TeMV18m2nite-F}C2@jzP+%@2=7r!}rhc&EQ7duREz-j!s6U12H z*Fq7l3m0g84EtesQ-`-+obyT3HR6oppc<0I4(9b|bfj~Z7*~EuSnwV81$D-oFbjbl z5)GEE^+r3{a6ZC)OexvKd95i)3Hu@#=3dUD+ytuW=sbdgd86gS1`O$px3OxH9XVY4 zx?ic}yw4Oj-S-R`oeQQ&YaT+V8sm2Lw`?GZi+vb=)?#cNAqpMe>c~~7hDm9gX{k|09~AyL5oDZ z9(9xNF7V3uU&G4e$S=JAMXz0Fmv)Kt?}DRZHD8%0@b&JK4hnl|foezDLKw&=AlN^F zRQwA>#@3T|UuIFbXnO9!qDap^CjZCn=iv?{8$3(_fN?An&R9h#zFq7 zn9D4!%CvBlrABkK*4rn{qf=2vGHwJtu5V~qaa^hPU93)^RMXa`U`dy5%=IE4Ta+NV zN@3^XwU6jjt)<%n<}0UWg7z0lkqIMAnwRw&uu7%b>w_1xLHk5-WN52b_@VslyQK&; zHSOJao&NqOh8$yQTT*==GV~a!&+^u=H%eA~iI;H$+nB3fU>EEd=9Zn5rD}zleN=$* zlPjAPI!Wfe7O6VGM1Gbd$Z>LDh=^mhhiwr*BxbX@kB-Z;d+)ADGh4UP+=2K0rIp`X zLK1&%2LVreR1nNEgT7$v7yTn+PhGH1iBcDMy)vYfj$Nyf24=W-YVJ8mAJwA#EsZn} z={r(^-d7^p4-y}_wU%4;GsW=RMz2usO8+HZh_Js%qwFs>rGz;bIxeo_8@c!%zH<@i%GvC5Fg)*dN zWQBIc{xR={6zUbR&^)cv?oHv{i%TE(x1!a5SZhnzZ#7}RZWsHd(^3%@uugUB)szon0KCyg_s&B8))+zcAEdh@<(^+MB~6f{J1BPxsNp=*pX zSqlPnc_qiKiZzV~iusOjJyq3CrXMDrg?ml8 z)hS5sU54k&%lt}SPG6lnrR&%*;UY;;!M5L-J7`MkINIzvS=DD|oPPcqK8rmrgK>7P zOR(?}nZ-!Q0P-uqg4wQF4ygrZ=fbcJvaUEAj?Ky4-ZEFWKDutr*FuAU#Yh%z4rQFI zsu)o2Z4+QJLHvV?QV9HJY%E;BQnzY@BNY8MTrh&Lue!ZW^boR_CaKpU=5XU^>4zLa z68k9cYSBt3a7gPSx3P}J;>YjB@KFy|yj;<8FtrKt`3#``;Ap-Z0Y7@dSSM~O!B+gT zB7@p-1mnVZTXIfIEh?V)WwF$o_KZ(ybO}KS@8uyV7iGlzojkq{oiG~KhPHVFt#0Aw z+iYx$YW)-fUsW|ubrLgf6xPHSfuXjWy|~J=R6FZz4to2+nG$4XHkdDRjkUJ@)rR|12r3>c0md)RRjBU`*74M986xvg`kpVuvg6c8eZ zj-V@EJ{<$nJwzs7YKcEK?`-&OG3U-gP8!GSkT+}If!kjui<|Xjro*ou8ePBUlLUv} zaM?dBoEuz16NKtS604?jF0xjQ3md^xSSkZc2AJoC`(MoA|<>DJ4PbsFppY81x&V3quZLGrV z6GYAzaKtx6)>w|?)wd2SE8}?;##Kg>7o5|Z99`Komu@AkV^h{ZuUrkRZEkC(cLqbJ z8PpvPgrw~_A)?}nPI*5yc5rK#0tinWHEfmevc4$32>ZEFsLfcCcFa5CIBbj7I+dN1u|MdT?gPEY3#yfM%W; zR8(=8FW!z_yD7gQ3*^J5+P)Mgl>IqTv=>R=r}0cyxtU1ScOrBo@kx8l<(Xn<)$S+O zYxNxWZ(o8_ss8I7mC!u@0&`^z29Zd$H{hZsa*OYeTn*pgJ+Hde6Tc61Is4%rs@g$( zgDmp^rMq#pDDTya0@j8=|B_kK4{~Z8GFHx)~paO7NDb_|sDM zFA-eFk&#cT+;$YH+9^mfbG#%Y%v%GzBDj^DMmtQ_wY4^ik=(w{FL$|)=$Mm+ARzaN zCqyZsoW^BU)c}-%rzOrzn>YS(PQco}$Feh~zadzSAzKDs{S#$TUKd^2#LrJu;pzL+ zL#lVpiN8PDs|sZH6yh%v=4${F5eBYVqP_=f*N?|`%NlY(&I`7dU5&=CIYt#rINlZVlh;P@1mH|HWM&icu?*lhWNn<7^olZ1==TC_$f3Ldpo{81YkbN6Cbi&;C)&wuf z@7Xl76m?M%@cTv5KF2lQ66NnCZrit$%vIW?Wf<7pD06A3?aB!%eQMCykh{+5H2*0@ zA7fLm@3|Bon4&4@)x1?#QBL|hPg%z+{)qb(!L?go@;x8~IVj!6%+K+~wVAPbamuN9L-%Q53hy{QY~Zf5haNroDYV44U`6zV z=y02uQTDW|SdXw!a@WkTkK7(0H>>sWWgH9N_?{^vE|u?SrRb;gx|A3&@1+jBA-}3! z5}fJO)G}0j{)LxaR5Gu~XeZpJ_rAs=IAj8yDY-lLO~1#`g~)_s4o%U+?)-_TWhmv` zr{OwK(=cn63@$GlrMyfrK)CfR-)y$>)q_(>0uHy0E@~6;rwyThbs_iIBh7feeVPM&#BO@6j^Adp1>o*}FN{d5X8`vY%4 z6#BUocOnPb!NEa4$$=nc^i0iD^Zl`hob$z(V{>aB;4|aaz4iKgzYjhyDDIq3*+VF0 ze5uGj5vHef&3WT-k7n=w{e{mAIws~N!B)HDpYqIam24W`GIs`l5iH^5G+SO7uUlES z0L^5-`*K6YiS!VMoFwUAzfs}q^w@}^vO2ejUJ1Fo>RFM_TC}F$gyS3l z^NJ%gK@pumw)uouYT;;QeXV=opr8{LfKVawDb0wgv$8{NR*so0eL5bcUHmxTo zF;40Sr9ZR*0#BtnlY;n|nZabW8_x;`)B?`IJ#;%h5XJ<|{O4?9dqX4NPPZ4y-ZRz2 z3e#-Q<|ccxBLI&JAD_cN@{~nmn~5A}lAaqsbN&+Y0jx85TAio@92rOS*uW~CPAQ8> z9%hVuAMhzEENmx^UW55&4X)#E@X`#reU3+`@Sc`JxCk=GfzEd4iHQaxYrI`fj-3}r z8T1W|^zlQV!)C>*E3^|Kbo6d6)voZgzCu5|U0@~O>hW$KSM}XV{4ZV7%HI!&LfbIk zL`snGtq0Mt7kQ;>%({49N}^f>y%r=Rct9}_Pcof!{}zu{Q+MjPTW4tsvZ-Qcm!Fu| zfQYGwfzDxw3Eb%4u9&#KLrTNQ@!FW3`ZX5M$CYwL^y2vDhsa5k!+78xkZk(~qeKSr zOW8kvG=_}hN*^{n!gx3gCK+dAl`=D?gFx5^){rgDXl#S;Db_kiVH>#KpHceQK9Grj zH>5Yf=(*H!o4?xnlE{9#`J*Ly=ZEk85Xqo^>}LY>^7J>=f}`0ctylEH;`<>vKxO^Y zHh;vymaIK!{n(A9^VK!tQHDPzF}% z`9A)`YpfO}Wi+;06l1J`;?f~BFQyYFy~q>Of(b-d5(A`&^=G?B^$VU&P7e3C47tG{geCV`uP9km_! zIr}m&Jp<1(xy1GtD|UI0p9us+^XqyE9^fz~U%p*74ZQ7DnUZop5ag@1-BFlv7B{C+ zJOU?j>n39lE3)Z|&@MoGM(7!Gcx^?7!=ONxQ8e94SSy0i*d^xZoakX!C5xla6S0fV O{(85Jw97T^!~Y-VWcK#} literal 0 HcmV?d00001 diff --git a/res-mdpi/images/no_command_text.png b/res-mdpi/images/no_command_text.png new file mode 100644 index 0000000000000000000000000000000000000000..1f29b89516683d7c2ffa2539fcf0f99cb459c0fc GIT binary patch literal 14168 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ⅅ+FQ#XChf}os}weqN@!>i{_mExx@s$Kf|i~ z@tO$6F)l4b>-J-Ec%79f;nwiSN9RyQ&k%K{fi2Ci-mRZBX{%Td6;wn^B!@qe-%~+^ zj)Pvp=S^u_R3mSZ>$Ktlf;9_GCJEpi6d4sYRi*e(4jIvZ^Mr!f7J673QtcqtuB6f zzW;D8YjN}eux?1G^`G_=8OiHi-)L7WLB+nzq5Ex`51A4|tL3gu%pahBglyo=9Js<$ z+5G@m2&-D*zR7b6ZGil0i2z>^@msSmLxnk+MmRen#h~J1@vjPnt!;O?5;vpiaY+ic z-;+q6sQ<;`e(FHm59T^w2t_{HZIX3}IAAMiv)%xJN|3bylYxzY_#$li?a**9;$L_n zb2Kb@0Y^x`&~v||Hb_<0&B)!j_P~Xde(a?1OL`b~AoV#|z`{F7$(Bp^yH2vOol^`( z#7u=TVwYyHLcufYN!l=wx*$rX`)FvP8t^oN+rDHum)2LgaHkKGhO3}Ay~j*&x7G&Bl@mn)$HxBfa3uYlf0daP*V6Uh z&KkX=oli?usC6}g<0~=T)Y^}R%(5iT;FuPD6FW7%L!G_tuQ8T%OUK^UCGBv<9rr{N zPs2nZ{l*M!Dt=$|7-M6AP0L9?+_ks`hZ;;h1ZxMdd5Mop%g}BP0KAJVE{Y-9)X<*b zhQI22_0g<$HrQdY%Neru&18$4X|Q+9ysc*Xm4%6X;8>N`&^X@dTxDFo6Ms|9H0OVm z6ZP7p{CESpH>5F^u7WT8FQZ*fMje}7&*ZMCC@2{7uP~-JHW4Mh=h6wZJZ%nO1U&Yq zjlrQYb}dL6C1my8oKQw`2)4oY-F08E)A>+N84(J{8nL~xvzfK+HDs;YIHe!Qk))+5 z*7{mog${F^V_?HQG|^N7HJ*#C8!zQwy=O-uIJq*V(BzMC2po%jC6QzhRBWpDwWVZH zw;0>gcyi&L5Q+0`b~?O7YU$^Rg`q_1Tw(>5cY!5L$noUZGvf2RDLDc92x#{&`E4IR zTc>f}(zMoDcN2gNrMlCf`aVYPVM!CiYYPSXmA;smn|K*e z&<>nDUup&o6RfvHkqh2K@xiBplt?^5i$`L}XUm^v($E-FZ>doDS|8eCIgi#=Q&^cX z;AcLD`ED4xELzB-WB5mdeUvEFkVj@v9dtdU`2dWRtI6yd(Ypr$ikEreRQ zS-xsb$Kw22*G0n0&Ha)gn#N_q=GyX|m-ua>rvIaWwlf#y= z@eT%cM7^(_nVD&uNl%k@tZuYL2ta={GP(DlHeRjS@|1^Jw9d>@ZbH{yh4z?;GXYgC zCcXDadLS0$%j5O{zlLY~DwX6G;6?M{5zRL+-fwGc zgd^1n%l-&FMT=-{NcktN;PIdzWO$@V_ETL?&Jb(=#v>(%NayD-`8>HoKv~3-yQf)> zuNDZZ2<8_Hw#G$EsNOW1s^-N1znBbhZ)8LpkiADhiEmR`l1Tq#>VIB3B_d?k1f z3-QmY6+(+fnO|xi_wL2^t4^sX%+K~IK+)DJ_4eX{VEO?nG&g$kyV;Bp(IGd{G;YPS zYf@ literal 0 HcmV?d00001 diff --git a/res-mdpi/images/progress_empty.png b/res-mdpi/images/progress_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..0883e0070f30e4404897ca584482856874e0f405 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^3xJq~14uCFXl8Q)DM3#c$B+ufISi#KL WeZ)ZCPoD1xNRg+jpUXO@geCwAP7xIV literal 0 HcmV?d00001 diff --git a/res-mdpi/images/progress_fill.png b/res-mdpi/images/progress_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..c223871b9bb3b7c0f73c44a168d61941a9cf4d54 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^3xJq~kr_xD_bi(Rq?iMILR@9n$Mzp=0CBlJT^vIy c7?T$;0y!ZJjGJ;8Gl47yPgg&ebxsLQ0G&1w!2kdN literal 0 HcmV?d00001 diff --git a/res-mdpi/images/stage_empty.png b/res-mdpi/images/stage_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..251ec19699ff537238e73c77d2c74164d210eba9 GIT binary patch literal 322 zcmV-I0lof-P) z33IU0c82o6b`c}S2y};gR$LmEq>gp(LjgmqF9s-f)CJm@q=n0lx<*4WM&P=m8mMEE z8k+Yd3da=TE0U}zrJ`XpZK-H}#S_y!WX-rx3?ze9i~s-t07*qoM6N<$f_lY@HUIzs literal 0 HcmV?d00001 diff --git a/res-mdpi/images/stage_fill.png b/res-mdpi/images/stage_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab79e862825cc24bfb41a9915afcc3f8dcabe92 GIT binary patch literal 258 zcmV+d0sa1oP)3dQn@EfmKq?t29|7;t^y zk%3YIfk9#kgdg}~$VUd+1=5s|)`v7$q>UrP0vSor;CuKv7kJ0j6DG}uV*mgE07*qo IM6N<$f=|0=$N&HU literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/erasing_text.png b/res-xhdpi/images/erasing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..f88e0e6a84656bf29cfdf1b28a90237c1904dc34 GIT binary patch literal 29674 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 literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/error_text.png b/res-xhdpi/images/error_text.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a4cc6f87796c7b567b74f76e863508dfc88ac2 GIT binary patch literal 16599 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 Bw!HuV literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/icon_error.png b/res-xhdpi/images/icon_error.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3d1ab228d4b037532434bd485841cc04e9365c GIT binary patch literal 19306 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 z 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 literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/installing_text.png b/res-xhdpi/images/installing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..a4dacd0f6e80564631da9305ac6a408a7b08890c GIT binary patch literal 63220 zcmafb1yodB8}1-d(hbr>OE*Zv&?zY04qXaLcMmxONDI;`NJ@7PB_&Ab0Mey2cn3ef z@2|V=T`ZV2hqLz^`<%Vs{XEY(5N%B*+y@UI000176=jeP0B{co0AOfiA`bw%aRV~} zfYT-wknB@0l)W26r>Ea;Pw}M=w0wAW@_1&+x$2Ap&CffzF763&sbNBj!tKKBK#bo7 zJ88`9#@p%a+Ii%)g9zm0?uE$&;Xuy;E6}tx0?c6EX@bsW8Gw9R2l~j#ZboFWvlDz6r})oD0baVTKMj#P zQ`@6{MqO9&SY`hvBOod1Ne!s`qL7KukQMD1E}I(FEOLL8XbkzIGWgKt?oTd}Wp_;p zKf(KXtR$|H=9MqTCxFrW?b8B3gJ1N0>Nz4ZbQ>XdXpz8zmQ(h#Z%6G0K^iqzYgx8s zLHHXGw)O4R@h{M;6&8xoq}%7uNA+8AS&Rq$I(pYiRHFJpB0cfRwx_TsC8Lx5D~|}X zEsWph%*U`{z~g5DErUVPkE`1TZG`4 zL%eEH*J!J0Wl~a$gV`tjY}(dRD*e!TS5PtwLA(pk?~i=k6uNi_p5UB*zr*B&&4vNl zfwAV1ln698C!^>ybh&2MJ)T0zcNIv(Mxc9hVV_rICMQ8$+>{_+oIHX=s)C0Xs9T9< z64*HUkJ^E5oI&^t&ZmYq0q$6Nh(v)xP;@ElB}xnT(L;pZG}Fg?7sotW(5Xdslul{3 zEh7%?A&O7rz;}cwB-zwZGo{`*M4)7Y($LXB zwY&8)4t7lJ4fS30+ZsEGe!#EAf;Qddc4VXqGF4ibQWT2XWjJ|S65tZq!O8#4r9PFm zeQ?3UTFh|OWm_PrMllHVq5=kk-x7XU%I?V&tcV6MJjxEUL7RXhvz#&dwXAo0j5YB9`47* z4BQc|6MBLN^o2`II?x0Lb?Bjw??ot0qklenCz+9^J~k{1be0fIWLjOfjjDpk0tWj9 z0SqpJTJ)O0R0DkMyTG6H<$i)V5X{JLe9()T0fhSc*)7iA3pGl)SI8OJ;i98iw7o$O z(~*ko*kqIk)*0qtBj%si{6ufLCxcqvusl1dP?oIXdg;waV{iy=LOPXLAK&;1;`UdM zwwFWVOMF#dnkQ=?!0Tn?@u~XP?Ax#Y?iLr(FSv|)28Y6bkVQ~A-rzXNB&NUw?JhNDhV5@@t88lv(`HWHq!C`e^H3lgg=>Y&CAW zFu=-0&!YRv9g6wIux7h|IsrSXyh{T}q5qWvN6>UQykqv#VnLL?O_<{S^#hIT+XEGE z&!(>IW4}}{E~Zs&r5Q49{JUiSysxI#)S2Cv`8;kaD;8aUvkM$pC_U{3T+otHzsm=q zpWzC=&|4F=k5W}F+;-@{UivHYT*~A#>vV38+CkoXogGpDlsf0}<5Hrcbs`=*v>*8dW!OF+PZ@gUrHB(7 zCdimvQPVuDg{Gg?(vY2b69#VLp?*s3qaPsO1wenw*F;K!Bt|>{c9v4NUwjiJR`xNd z2)dqWuN@3Kvc>t@!d*dtriM+3)APna#DIn3!ELdZa(Y4|h6Fs^J3On8e z6LOM8Hqf+?Bz^K6ytwBzF}U%aKVq#f?4F zG3Dq`AWGsjCM7*%Wq7IW59#-ozABJ}ky|@k4Po_DFBSf7%q>kSC(Iefh*E@n=rgs(CCmnwz|HyO@*~>Vs*Vq;iTy5wgV7 zWh#L#lUYXC1F0;4S3QlAA^I|B4&d1}W#U%A;$RO#nj#G)bjeT%&GwwcZcQrIc@@jC z0yFbgfHgmi=2u44Soq5HUId(o-_yUUMnMUuhUAMdvA7)-e zIYbvDMU_jUL7>FmPPnazc08u|YTT9|Xvy`JsM3X<={Sq^IZ;FB&Ub%uZ_8F@e|(F} zk+YChDtRGnix6Zg;(XW$yb~a9cVkAKWJ{_X>XV90j^`@?rBwG?^57~Qu{FYEN15Zysg~> z92+H&Dk^^0GA|WC9oVM^`FuhQkd^XTUZY8__^F92@2v}Oh^qWpka5fReWe96P}vnh zYLHxAnD^Ex4Q&`;s8F?a%rtrMee;@9GV8g*Lv6SbMV5`4ii!Z0nyS%7OmdV0MlJ8> zp=;honrU4sdT)G|HeOzqT#)c6HakpjAJ7YJIEPB@P-%z-W+;D==Xu5{%cFJCG*+-F zJ}l2aeR^ntE{Ix`ywAD5CMVe@kMHj1)N&SrUfBMcHrhX5Y=}w+_>7sES!)I*dF)q# zMEj<$1ux^!Ctmw?Q>J7%>n@Z?7Gnv+1}adQ;Gzqpe0?pe3>LCC{=S}w9aQJjHes@f zYp1jJ3A62qT0uI-*kGrzGs8hrq7p)>eNEh+4^pt;|M6BabS(98XSVH?39nd>UYeis zzB(sN(&-J6EYuZ6pucHEP9lM*cHX|wwg?KR^9we6P&(u2jmE-ifTj^GvFcv~dKyUT z1EVPm@Hcr=Z*-x1kg2C=1=+QTOolt53#dazjZZ#dGlSpXOc|e-fLPEQ=vwAigw!bC zPGxaWQe$g4Q0K9BG$}WO#vdDop(rEPvhhpS?lDPv7BNHN;y9`hY8x>Ub*BFP%p^{s zS95vtN!I8|b60PRVt$46dzMDp$du9-KVsGy43rPqLv#i!BeWLxyfvH8+PjLenD~RU zuJj@5cGdy+AQC>`*X4I`KVr5NM4k)deDp$N*_=*8SMwwt#fhp!=oErzD=E;GBb*HZBWwgZn+pE%(k{9_Uu)F82*P3~|Y)ft`WCL$WAvv(RTl73K9ZD}b9>wO_fbk$8Eg0nxI)5hM zP1r9`R}Ffq?fTt1uVDb6U|n7cke#T1==oTjQ!Ub!U_?du3+UJh`>FNH>dh;r5iYlw z_wVMB?zzVs6RzXxp<;ApqkXs5#lvy%OIez1BOKwYZ4E}L@Vf^5qIfI0z2TW8O+xzg z&gBOU#OSS>fH}R~RQwRq=LG8k-Dt~93BY*Mt+}E=e>8|FFJXVBv*3$u3L=60bwKar zed*VCnMfLuPQ5u=z*iIUcq1{e*=y^MQMcLGqOozE>7(tQaMn_b= zOLP5pVP#V+96`tgtcJlRmEh7~w4V`zAD{tcCDs_6wI_pVsPf#r+p1}Zh5ij;sxruUB5W*7SSfEYSxOq{(8EmdrQC0Lb=#d(>2_rpC z${Fn0%yD%0IHbu712?(4r)3hJt+3$kL$tUQ{D|~j_4cGJc36IN_~hrQ=|#PS<;+n< z3&ojGp$-G42mAWAxBBB6bZXDmjI&WblMbcTcz5x2Qut8!> z&^6ib%-iy?>kYn<@1%D`rvup}30&s(_m8IH<&trXv|RXk zeCH3k=tl+>qWDiYDT`*hlmNojfEKXglpO!-hn!@5iO+wvwxWh&p8)(8HKx`Rkn&v%@HD4*EdiK#;z+}^0O2jnp zYW#Z(RhD+f3K1}0TSn|tQ^^ZgyTna%gb>J{Gpr-+%TzjV`ilYgkF zkz<2Qi^0qIbMq^#E{gbP=i*KqH!8D>X-gT_G&`SG6QXb#527Bhke}bL#GQ$4Pz#M2 zW$Jo=rnTsIp2yI+5OutJALn*AJBCecPVKrh6NkQqb3wS zDV!oFj1@)AqDqi@W_-duP|R>Mpz%tXMSbdpne?``UigxX6NR_ZQ{MFDqmD(W?3dKD zkXK7>$HrS=yF?4~G_n-N8PcVn0zKlT*Qp`QE|07t(bdp`WcGXM=ihB9rNOxFpBfFvxSSkvSbW+ zk>t4u9eF^*NfRBu>HBC2&ySuqBP**m7dX!9= zCjz-DDGzx(5hCvYR?>vc`G zyj|2Ia22rd%^ncV82hB9%KT^cQcWbG=g@=1trfurhN)e(P!{{%LsV~<7}dw}d!KOM zB)DWT4y&nL;k<{KJQXrv+Pds>I*TQVCtEev)*TvbU9y z!+?4}tR**PI}=SU_a(@3HmU0kMGCksMJ|a`bs~GYjaM`lop&%`&7aIePPl$islEC%F)u<#Z+ z%xLolk_h&@$L#P?rzfHe53YEQJi-y@_mn;a%bvJR^I~gF1818uo$mY% z=s*<^(U5xUZ|p^ZFt~)4=i|JB*C(aQgj@u5Z$E5qx8#1gI_Ot)TRtxpas3>ra@sAE z9V3BF4C9Gml^SQNmDRdTh?6zH5cakTRiJ8%=;<~8H6gC98ToT3p1wtB4^hqe4*0;( z_WGV5wS~Ssl#6(n;rsY?l;)IHjul;)7-*w!L z4x#_n0ovUM4x8J0878ARog8JgIPflXO|+N#m zY=a2%NV%3gL31@AOMk}SgEzpqR;xQq?n)ti=tOAfwp?GzTAI$15#vs1n=1-3lsJO1 zRN_Kuc7n$0D2Lv7^H7Q9)|)-t7Y^jIaUPkx^I0FuRwUBwq*0y9~ zMJefC#0k`YS~mo5Djf_N>SplaS1-=L2O|oswG#j4%B_&Bf%Ea09VS`Pl+HlF@#ePr=?ilbth3z?(`dd zIM7Yui=wkeHGCiEqR25a7)XQUSRXr!20h zspr~7)3(-cKh4L>dMmspA1sO~Jr7ox5|A2%4X-yuRYN1$qQ$8{ObC;posBb|n9bP2 zu=YoZ9C6$VeWbyr;XQsQHhkr%<|p=?L3~3cm0G*lPe5hwUB;HRCSSH{nUl?)EBL)p zcMBFZ_7#63$JCW7V6B%00!=wcw@j|CeY{K5NBQL9T&Zzztz~hkH3)%wnPWGVBW+c~ zvw|kt8skJNVjFRfSi47S2ypdvsALD{ZFVMJw+g5%%Gl$r5&F^-<@=xJn<5rV&mR%P zDOa8L_R?aFj0a1AY7B(1n)(zLtR;n7IpE2<{rd#LbmwVyV~S+&(3>+P9^_CfO=3^S z)%Fr-yCCi+9VhWf#BhMvwc5~o^$x3ICTz&7w|=%CpvwT8Xnr=d6a6TL(qqP!qgFs% zWa8CCp3)?|HPMh_Y53lZNmh(E84>c%DoOb2P4zKEX`1B(S(M0>*EQtZ=PYf9imL9CN* zL2TKE!j;py2W{1BKHiq-5rq_LQEta)OjUZqshhwrouG}u)on%%2P*nGJrqiEcpSeg zl;UU5?t6#$3d=?z(2Fw3p)z_&A!kHBX9L|X?wIa^oY`JOLuT`Psbo~Jt%itN$UIXF zoOF_l!!0~VWR>|C*N`MfXDin>#lO}~{6w76P3Vh?(1YwvK zt{=>opg8C?B1F0dpP_<>z_Bid-_9f1&&v+W*&rvAuMA zVCz)_H3R|Uh;(5J8WOZtH&t6`Pnz;OaWTr*vC+k*=wWG-b zUfwF*?wRScXT{7_jP@9g_gasC!bK;Ewr>}j*)ga&dm|dCSSTrZ3CqO)#XF22l0DQP zeo^fl!}#U${@nI8!i-IKa!N)OX?VDd{!+FG6N6ryG1xj08bxDfNtoAEzFNBmEpCkA zl;Me_jB|L-#hx&pEuS6dZSHTxpDDr^7iWo{DjoM(P{|;b-BUU(dHh7osbEJl<(rpe zVaCYrS=)}2ncdu~^55LVU7*m}5oJAH|9lu}p*Qp`Y?NO`6(oEf0dw{zsiTSHwr+n0 zKb(t#Q6XwLm%ChaXbY#yM5*|-?ksX)2QkyUYWjw<^4%3OqmIod$%8_w;f z`gHf~I9{)IjMJ5xMgnVA_5>YeP!?`_u@qPOuyd5#SANm1XSeJa-4?5l4YaCuz+?oQ zGJ;5s;%iP`7+1WgBN!I5oct*9X@Fu?h7pio;W6L?Q=-?sG5V%#p7ASgmyNGS6gagL zOT=cwx{_2WO6-?0)kyxKxbVxOvSy_^iUT5u0!(&&m{pqo?#05zZ|=g%?G0D_syWN! zVx54!IWeTa>A)88uS8F@=&6!NZzAN6(k9wHD29OUmMiNnO$`#NzBb;%+Y>rAbGjSV zDtJ*Hn|mIMPa5{AotS2R6iQ})?or_++2H&Fc~C*`rRDhN;X+{xA}cKr3`r-K3bJx2-4;x&50$fpV@4ZCcF zhGQ3|pao!AhaX*x^%2vef}G!y3$5)&frQ>q`w!KHAVg58V$eYcn7V=OOEBBUj(a@K zsn<9eYcMEFmlO?ARSg0wYyrTw=MA|BWL2_yTpSZLF?~`o*MQJZINkiCy`iE|uWOT|s9%hFbu3v_rNgksgWPP4kCJtF+&QHHhl6JFhhwe zfrMy@YoWMhqXJa%J_bMNO0aSCP{;J>J&Xta!x$RfZ z`be8H?7bpV>lS;)01Nvf>wz|=rI(B+-ROCbNfpgTXzHvey@4@C(q-q#c*m1ahWV&rXc;fPFKQchbmkRUk_WHw+RYF$zy z!oj=@Qxr&Cd;u!-EniD!a3k5`uI5)c!9#v+OIUsV3+j*iOxR;;d|PEM>%=Bj4N( zf`Emx!4S?e=(u77A4a+DK7(}X0`Az^u>u57!RaAvLxN@d2PLi9!?bj$3O{O;T$9(sQ({Kv3Dm5p2{hz)|$oo#j)vA(J!MDO_y#sVX`4kz+G$MmInKaqO> zf)rZ%PjB)+z<@GMG8{OKUAGDoT3~J%tyHHO#=wuE$0-2iDRt#EOlH2IY2El7@nBpW zjfYV2(WoS4q<2`7Nbm5TZoS5Jf@?0SD`#Lb3j|G1Xe^?0A2FaK@Cum6T?2EwX{E+D zm0>QUX>Xg;p@M{}HpmFhwg%;>+JdUZp()Cbka0@-6^y|6{dHK&nO#|!G{O=oWp=TC z*KwSpO{n&ef>oa6=`N+|9htYcFT-+BR5G!!h;y0H34A;47awiBwg~!H&VGCKPO}Yk zhQs8{!lWLSNP+CEnvrIB{yxqqjWVA2yh?{TTV-TI#W$3%Tj@XjHdJT-j*?hgu@;5m zoj8=*qdp0lS-HE+KF?F_OQcU={kyk)tR<)d0R1~2Q^d1rR9pd_LvkJ8b7gm0Z0pAl zD2(2grW5$8xB)6zW8>0Jp{TDgh`Jnn->vjZP08eMg*uSQ<*N*#`1Bz^x?kgaV?NZ7 z+mFm>>*0{Q)@Yb0`UwQS@XWfW>8{S)>XbpLGT^SyRjo&=R&<0W(=pU%g zv;LyxgQlBw6j?{8`af}lW>i!Ya>IVsvAoiGJaQ@sx`<7-=jXQOVL2)B;eM(6l**$X zZz^f`ar#dk9KUTZ9Q3&@tpnT+Lp{_<3F~i(wDSIw`j6S4oy3}|6+r4qn$tjuAA{@J zKjJF=wa6Xv_A2*d?rS=BkTB2xK?eixg`%$LJ75?nu`zv=Zq zXXgHMX5ybShcFK%(_$IPTkfOgJifhKZwls$y~CVksPH>Ap^BiY)@snK7rcyl9Axsq zOntTFuNVZ(4n@+OY`~pryoc;Is5tvaxs+9C=rx>Zs)l%>3k5$YbiR5fDzoQwExYR= zNAKUl7pUdak)Ukv6_)Zt1|;Bb)9o2sDj+|5w>z-Qx=}p#%CKhwZSfU+JfMgDMVbE| zI;3@=%B0LZ$z%i-#yy;xsaJ`wCv-#(Aq{BHJjdN^>33#K_6n`t4AdJ-j4#5Hdlf!j z;t_R-mFP)g!37CZL&%eqbp#1S6ol4JN^Yzv4i#S_*=hD)+-uB~=bT)74}57|BTyPP zz@L?0OR1mgUxvo9j^F(5Mw6%`mGoA7qQ8cTe&Tl?fGT5mp1>upVuTO3k~*aGM!tvJ ze1CY3g91rD6cdymZMVf#Ml5ta2T)_VOaJ*^kenM~#B(7oC_i@hZ}3X_>)VQ}Ewj7( z*v9T8P{1^LL;fF8&!4*+=Vd0)7A{fzk$sNn1GZgiUM>&emRLbqMkCjl%aQ>YY?TYo**E`m zlDGllF$K;RV&Y1WT7SQ%Z^zui0^4u-)l~g)NSA)z(EC+smO6S2T{pQ3%MNY5ys76WE~#ba zZqaU=)HMR{vxSv-s%lHd{NYwQUO`$nmHo#@pZ#+lk)?V>%;Ssn8{Q%Z`t=bbD4h^X zYsYYgawXd=G}mJhLLj4%JRL~^Cw0Od)m`XOwpQp_VY=6k?eq~FdgauCPU%wS!YH2F z-w&#gcm*R_pW|(EkigkPKO_^w=c{U&-xBODX7HFo+cFEH;D0>zZL-6aAr(PH)5g!&FC z@dqP(i^9>wX!$~}0qAO~W$-^Hr8%F~8=Yfo_nt&mx#qxr;EGd6h(7=1Z%4@@L+X5b zlW5k!$!skdSva(Bpkuq`!(WROsqd7L2>KynYvH-sK~az zUm%_~FnRoC=e3@%Q?az^(6QDp$Ocn6s*=G&V=?t5tM*zfZD+-@`{yqc6gKO@_lD`k zzJ!UxWc(F+P}8o#T7Oxgmk#T2@rjMW^%ysB3s{mrZ=fN1{e!|S*g!`WB1xJcPWXnQiK-dsYA~h9drlSubmC;)W{@-Jt{BkZ#TR)>l=UeYaKQGoxwUA*r zDV=nw*h#VM>!B!)lr=BMUBC15*rA^x z#H%bxk+-d;dMrQh)7nsJk1zs?lIT#q5@hw4&T*2Flp$9z!GJ2{|i08#a$ zLk87&zL`hsxpXyO5?`tylz88-(!2}v{;@J_X*XSyfXM>Vy=|dARdW<_Z`rk=Qe@CBpG) zpZdbh3D>2%aAgC|o`}v<@Z#=V(OT&VQTqA3dgKEe(-qJ6Z;7Q&RI~bqH*xy%TkoG6%AbQ}A2ujTL}_)Uh#$AAwjG%h*LvRn_5AH>G_+ULQ~6;uCvh? z_jg9Xv=>EFbo+h*UL@+{jlc#6Nb=`!|G-v4D-)uITPIy!?He8nu=y^I@Gq)qL*gIv zS@+v5F~8}Lgn++e`oMgB*A#81Prgec@8mr}XS(9(LdBlGOcb#}0$!y=|HxOKTY7IC zgq|5qrP%H&Zo}=96o&YbieN(foh?cr5vA zi;xQ@QRNE3IoeEDDwtgAlQ^VEUHU@vR$u{esLxoVxFMPmR4p^^$xhy{YMNIlP zQZ?OU4^l z#fMZ~INX5`?d{_$xCL@S=TI)8fa4eCDB4txD)6H>&RJtbM@|^Mk~We-oIF~nx*sow z0(80ma8M=8zz0Kkhl;`#4Vhu#oR=XY1nZAVz77}p#`;!odk>e+R{;#hW$S!tDi-@( ziPZ|8)9_vjhc*LD1P5vsuNDmGSvu}Q?ouKN3p%g z-m{N7ro_TF{6Qc|8B~&lwr!(OWOj(uBL~gf7#bW^6qZO6tARQ4z^{&*pXC1~L2hk~ zV_{eoV~jDmua0?A0;1c4lLA!?-(}d+yIYS@OMBj7gv{2PtC5-k^a<>T^rlm`-a9)P5Zo_uyYc<598&V_7QubUzYRLjd| z3tfv5MwL?od$<%?&&^xX6-P>=d@n|BZP+w{d2E^|dPq)c+a^w8RvL2NAX^DxbP}); zwHu-DC3i*-OHm#|4n}Co8~ukt1R@z2i#(9zV=)}5I;4MA9tHX7nSj^TYNZD`pog4X zWxMH?*f}><}AFF{;z4>v^+nv=wWM~6$ zVZgSH>!n6yHkwwgxH3Y2N((im?#IyRf2oO)*Fe6CDsaM>!lm@5Kn2PZqb*m@6~K() z#Bd_Lh?v^_O=Zv596KsM=wnu?sxX5ZDNiH5e{f+af2<7tQ-#uG=4KC1npIIeiT*^H z4Gp3&A7fEDpyMKp<#513&nVmIv~c#XaG{2pQ{g-f2xkdc!iOvmJ_vljg)kzLgy&IE ztpL;BXD}SNcuwnPAGkp=H*U7DYO>TFV}~n{TPVGM+d|z(oNo*N3Oh^K5b%Ko`IiRY zwoQ#8H%Ua=!<{fr!r`XKK7c6EM!eNV-MJjQ@*DN7lfMqudG^B%`-LRY4;l9{Efr zTG=!jxr^~&M;6fkeNeH9MC={1S7Zw{81l=1oc}NzS!~B4+x^=I(gz$AEpwH`#?&l z8QQbotBnQbTC|iHUPExSHaWQngHxiAKX8H-#-;&iZ$5@W;Ai{)xgEWLN^wR_bs&ei`i@`Dr620$wfKV8xQ9x{t zz2MEkkGUW(Ba81Gc%&Tj?!+mq163+0e2B}23n#u(14)9EL*a7LF_+w`8~tL4b}~07 zdn>R=QlI<=?pJ%2SaEgJ=x(kjvPSnOe^VGac*N<(BljqVE@}+82(5X18UCU;{%XzQ z=2WAf_`|sB0sh~O5udt+75;k8f}Dk4q&>khKP76HnOR5fj0#VoUqUQWC&bO^jeg>x zaaDDa=Uu#7slauv8V$mRhv>+fGYxL?o2uZMIpR>1dim(iQZf7Blw?Mxu8x{=}a%MFHcQ8`!7k&8*VKd=+r4spd9sxvj(G3VARN zd>=2}Zoz@N#Y@m|+82@a`d}Kj5cP>wQbDPaUXeH%^9h1l6#}n(W~MT(-`^;$UChk4 zfA|V{9e~j637-z3Q_Qc)8^GtSrrMVQO}i1}!EBW(@ED>wz2s?k6|Gvhre&vQ*z{OY6P4OQB(t|f&ObY`M=-!|2rl9?>zM%vz@XO zpK0_h>wg?W&OXE1{ItrFtOTS4V>Iaz~T?)E6+g4`rFx(FOM20P?80t7hUa2W-n}2 zpysl*YP(^{KbG0W1^de(p4>5mgl3E;7&|H+Z-)|D_jX&?5Z%weIU@Sn5fy=-$6b|I zu9FP=h-CgW`|zh(G_o1bUq~;#=Io4rUq7U;?1cDklbZqGSM~tzJe-E&!ae*SGcb#I zZR2SiJFdQsS#=Bh7GF2#t>n}{c8KowVu`T)Et4Bm1n*F!W&t*SvAKpRty`xpe&^65JPo8WApUUnFr=*mEWk({ zCISt;iuc-Mf@R5^`Im*v?kjIyyF>OVx5-pl3lQj9J-O^?5ICV3)j#+y$)ZgBzW8cQ zC`fz2g7ICgxX$BW;Hi^zwOVClhIjuJLRT6Q! z7gdk=FAEiDpY`1((2tiLBCq>^=t-PKfE%fKB+!-Q+XeEGrUQP!9M${uFMnCP+c|aS zynp6Jg-n8W`>4YVu#z}YP{@r|0xhzLgei|!*3UouKPrcG*LsqcpVIICd9KpT(PZ?R z5pgYsTaN0!b9N(e;y~+;XNFN$^@DVzq(4{%Hx;j;&=@lB^SBgEI3F3_+?j_ zzF1lak#HRO2_An&7x?+Zy!n-;?-;h{a~!ldiMpJ@X`axr(xXE*oU&t7(du*@9*{J} zjSjjlbcEG^sHFcMZ=jGF3-$vGw|L_*{4bzZ1?g%1Q+{;a%HTN2=49+AF^Hjab{!uk ziJR@OZ0gGn4`C~48mQdLjJ1fi6aFrC-Vk&fk~&c3St@cU>19~2S)o93AU(0<2I*Km zdhzP`L<(E8x58$v#*s3rO57kj+vC&MaPYYg(IvR`EbAxLufgsQlx?wc*Mqw`2jm6p z`+;9UwK1zV*5;Bk0hs<9dhUd~-V>)cNAJA&Rtbr7->~w<8ve{euDX{*Y{n z(ju@HI%CyrfsYWLxjhx?AFsdK(*NE>`<C&z^Z8YhVyPkC8S4hnT#%9t0+7jn?7_2Xt~WE!E$r6{#BddMeN?z@hv&6 zJVqhPlX;*(6P=-+<6O{2-Xw7 zAIA@&BmCXX{Dq-WJYC-LgnGnO{dNJz;GBSgBh+VX{z1jmi{nUz5SIeH)5B$(q6r_$TG zcfPPgVLB=|nCLcYC2FvmPjbA0s+}0ApS5{*jyrMm$P4?)fKkws#RufcF}Lf0GG223 zs)!SU^%;ni4y%`6ke_!=Kr-cp!J;%Rupcj;w1?}lHxO4c_U4-1v5H`QLAx(y$R63Ak7FR9M!eisaKO`z4kfh~U0FCDn(USFU7 zBPHu{FC@qF#4{k^(YVnIgw)Kd%VNf8g{qa=4~~n1-2xl?>%^9vD}ls20^ zInmr1c@7eu-%qqo0s~fAXI`&-rG#+{`M#o>>j}4)D6nsCeAsy{Pv-* zgOVaX)<&v#DHd9gNj7qjnEd&fP6LH~q3nn4w(=Y>&m@Os#r!w@?H?~5A_m8tnJBq^ zsph^kK^>GC2iU7cdy5-r# z<@1@YlH&mUC5hL*L#rYGrUBPI$vtS8 zqw%UDPWycDP3h;SJzV^eQnZS7kGiFyXBzS4qJ_4L+P-Q(heHaXa25Rp=UqE?4ztK_ z#7dc2W#V4xuL7cIg#|0t=r7eg96$KYbQ!sjo?&3{UAS$qNdDlZhiPc~b6t+u0j>m~ zX*ez*o-H&N7e(od(5Cf4iX`L5;|PD1Jo|ANHRXH|Z51#nk=BRe0#@%x6aqZucSFK%jVy>JRnDja|uw_C~FHX(jyQP*?VAmkx1(a`~O}%TU8#m*A zpbB}NP|opvvq!F3K2LRTzR!vX95o*G?`>yXh3hhm4H==L#@W2t()mpA-@8~FWw{Np z@4D`(&{Bs~4p0_y0e-DaKN1 zjs5fb0gDPmHtSa(Z=yWj)!Ap1m{0e^niF5X!wRaj-9}xBH;zGh$>7!_ABR79r!?UG z2EylK)Ij)fhQj^>1e8+Yi)Ov)>wQ=5muUs@J`Y>4=Y5Z;GoN$fm10SbNrE->KUIJqDApN_9j+0UJvy}Gjhu7ol(0j=6HV7P zq%;R~5tLP)rbI%8e%)!@{+z6xesFN2J=sAD6$u1>Ljr-gfUOz4Sl=NZI0xmo6Gh|R zW6Jh045t)wpuRGbRH=PRi_IBS!04vCkqefB)}DyhxUduSQ!1c@qL8ss@D4F_W7k^~ zF;hy;_j6dNylPp-9dyl86-r<`yudj38r<>c#RW3323tRwa_o23%byde@x7VX ztdxFS4Kqh2s(nfRZIIi^@gUd4Xpj8*==u^ znBAhXaoQ*Q@4eq3>@o9|vMR==*sJ68VF|k+wfcGj$U{J@eep025kO>EwzM$Z201gh z2?L>mfs@7$0)dPhlImGBVPusQ`0*jr_REyX?Lx%>9Cf@arC+8%v4H*i!f6qpXm3#E zw`}p|Ft);LT=X_Roq*2A^#ET3mz<)Dl6s<-r-aU}KfZe_pry0&fL-vhx=19uWA&sf zxotjU4A>GA{hU@y@Y!ND6X|~TfPpYHvl-W9Ro>fX;HGU~9mkD1&ri-19S2W1(dm*1 zV5o1&*Tw^Z*H071`FB!y9|J2v$(GT7jrf5YaGTbV@(E81;mhJR_PQQ5g#TsLXfF>U zo&D@rqb}U+v~%@0LP_8L={s{J2yC(&RdxqeHj>iwAVrLk>^@PHdjVE0_>lL$PL{kK zI+S%9n6C?a)c(?^bN-abo8Hlsq~cIFy1;Dz^Hzj+Fr_PILJm#U?yj6&z{}i}sK@Fv z@*>boy* zl|j8+tP_B+dcIS?V}ybggzZnV8nO+5N0PPe?@|h}W;gFQ9=N|To!qs>5*i;H(%AL} zSANSPT9l79l0X0RiUgsc;~=xC z{L^+Lggdr6NI{kM7slw8#n|JSr7rC0`|7U9=Rl@L+R*`j-iUCO92G0iakIxwO)u`) zXh?)$iHZp$s_c>ja<)dMjcv0|5vwt^DoJLRw1D}DYL+x_oklFrP+J*d0BoCtJtQ{T z<%GYiGO_u3(ayPf|4{`tH!WCddAF8mLExgLpYW&RP>&r$g9pk-yAK$+iB!As97%r< zcXf_|7ANeS)=^VY?b#+OWVZOVf?E%@c|FHI+K~XkM+b{?M5@pF5 zmL&;DQV>Z33oJF(p`!Vhp3?MDSfx40w<04L}23xVX+m%esFi)`NQ@^m>H2O}YV!wM=8gl+b42#w zAvT@hPfOsv&fnN`y=(=6CPZf6wfTC}yZdlY-l?kD}s<=KqB&|p|^^54#jvfBZ>Fb1y_~jka zOE&Ud$(-@~ZkS1^ar?mPq_g7hZ)Tim%*QD-2-2UEF)6F9;@#%+Oq(p;PSUhzu5uxM1W#ZDZ z%V?CWU%~$}YGcj0-7UiG;-v$bkRmpvCDS?D9Qd z4x6K(&Oopx)j(b2Rj;v*KuOX|UQz+StYjp$dNptL9jC|*zFxf5Iswt7QYgKI3p_?2 zw)G0qcHCZz(t^Q*y_BIfz)*_OvvO@e-XKCq>HEUlLb`3bRKGfCcvF#Li7B;BI4XF= z6YQ1Z{Uv>g*Rx!dJ}>&*7yYXSr3=PSWRq?&anO+xfy9L*y$t&BkBnR!E@9-jxRMuT zm+o=oVh8y@q99#?I%VbmcrOpN{wA!I(Fm%$*hPo5m?=gVCDB*-2H!RNtOPcBL-XdJ zC3dgk^LW5L1w!3kT55Wu#Q!S~aA}_5+_*FkwS;3jM|_T_fh8cQ?hMET7M7sBfau2G zbZK=(s0y#F>VK_(XXp@?i277j5e^>bsiZeX3JBN$L*Pm@VC~{nou)tTPPp-{@~otH z+Le2E?pVqK%V3U~RG>Z=zF=Z9zBWzxqkPA_Qs%$a{ktPL2YyZ|tJ0lve)py$^G{~- z+vLOlS2~Em`CZ=3@NhxV%C0#i2Jb&9ZwWB=-^7t1G|M^ec<6pfn z0M=3lL@VmcZ~fm3=YK~?8i6dYVG!U%#ghB~(SQ0+Xy%;vqrYRGwY@czZw zn7=OhJsj3ivlk<)$yN(s`vj7GG8yo+yszFTw+%okTOx4`0d-FGHQ&zW zzrEo5JdU_m-DTX&)`2JWG8pq2GzJ%!T1TeDiKXIw0W)co;+~`dafUo>4`i*+7Oq~& zy=2mKJEpg@Xkj*7e}Z4a@%OS&AAAi8={pe3az4LRjYXiZ_uMX+H%n<%?$)Sam5{}z zn5*cIBDjnJt4LPjtsrl`hh7IQvI8jGSPdQ=m7cz{qLFKyAhL(zq13f{!ou=C@T*2U88nW=V`N53fmQxj;YNCfhCnz`jCH<~g%P!S=V{TY z@P@7*=CihXEE1l1a|ql$8;387$^)xOno)E6np%(jiw5ENzSdFhiu6_!{{jziz8flh z=wx;i-ih+XeY;`{>m_U07nE|l#52Ol$UU+(m}Y_rD4O3cG(Kta-FqN?_G+c1*WXuG zLOR*xpmdS6wSapmVZEP zLs+h(4?5PXS+iMNeT_(x%X-KE%L+*mTa@nhyp1xefxsXdT#JmW*QEZfx|dIVJZ1+3 zyvN}*GV+E{izgHjIM0rJz$a@~M|;i#F7U>SO&`sLMwP{Jkg_EjFe!RPQB#dit?CB6 z(*wiSGYdIUeCKf}raoSF>1E6pQy9$z1sH+_I|(Q9tR-=*T}P3i36S|Cm4w)>XDVQ@ zw@Aj9Rwy|c0l5f$VZDo=;&mi_}@J?R|_6L1~0TegOxe0+)rN)@Z-5d&Qww7U}8s9v3-? zl%Vw~n4`;LHc{)L90`JD{p_0?!?I!egk#t^q`UljvbazkK+?=*}$+Ass#lxP+V)adZ!XQXlN^^7$U0k);g= z&mQ_Y*|2zT7OSYM@DPe2vg_yWocGPvUD4q1rus5&#WXj1n^tw~DNP>$e-Ka zFB+W0)&mP(Luh{Q3{uPAm{0|rG|G6|oe<(yKkHDJj9_FJDLUMadMD2zyD44qVSu%d zj0QJM&t8Ji!X?}Bu-lrh2ZvNr)w-_iFpt*q|}w{Jfu}~5KeZtPW?b=-o@_BoD%b-UhQ+rM1t0i?aqhx;_m$Q z6dWqiWB45^DpB7BiIqy&BLxTEg56Obny=IZolR&7B_(NW@)~88 zh3!}EoT8<0Ib>thD`j8Zl1FI2<@n-N>40sckX_b#CQ&}%Efc0@gtCXwr%sRg$(Py` zF8T@mJ;}c$-MH@{mt(UwYNy zxQU(s0IB~^(#m>8 z=QmH)72v@kcW>J$^8RH*2%r`WtRKHqA~(!nhJl`eQ?0!69^O~`#qFlT6HboUxdDNe z(esf+Gn8YxCt^}K!R2oA=fr>NIK%K~YEulLX#N$dD=0%5F6VW_Y%o}nAIC*ODOs}_ z%&rHSR>#3Gu`LPPFBqvgA!2UZ+Z96mw9xOO)Sb2JZ60xHsz`>|so7difF~kD&;E+@UUY(rcITKFqhWBV%sfaZ zRv4-nL-JkaMDQWtp%EB}OtuG2gr4B34~FtA2x(#;)L_VkHXq!dDawiAjoJMAmG6kX z_R+RG#q=6RcQPN9{OGKo88Xc0j<&3 z6#{+<8B%Sz&W9=@9`{Sg_0Y+ z4_KLFMnWEU{0yGbE2;HjU3l85`Id};^#!;|Z#Euz`^fl}#p=P-JLXSNc)%GzBnc6` zT{@Mgs3rq`%3$V$n9_@>mH+EJK?EYXkQ1YgN0Oby=SAWdia|Yvzwz9DqOzh;I2r)Cg>j%KLkRgS(%5Z*#B@t7Fjp^x4WYp8b>NlzCPol@in(hY?~<8@Fx#KBV4b~G-kkkk<& zMimm_+-sB}Yt&YT0&^DaQYp5@L^QDLintYtY@xwtdU%d=gkVVK(`abqms*4Tn zBLxSFd`%bD;b`t4`_3OjD(pE#i;>^5L=^{iHj^HI*dyNSoSzhMdT`^zD43rZqPe+3 zUu38zX2zdz{NHS(vci^?7wK~m6uf6v>d|x$Xv|DTpSW$xrYz;9;g*tK7+(0m^qQUq|#s`va85=k$r?RI(ORLsBC!m zZ_`B;vcGsL&kmlgAj`a+JsZuLSwy0dKu+WHSZO{K`fna7MBT9Fo+V=ABkr&gjP`o& zFZb-J3kPf1-RYaQxnKFEcAuOPA;9?O%suyDadGPGxtxLApwmAYqWovthEpO#pz03X zXf2uH6AlrSm2Ok;boRS*#4Zu*J&TK@xvO4M>>kHUcvR?h;mM0U zrVaoMKvEHb`=^7FH@eBhPnN}$fXxaFqf9xJ6L2Y;9&##-k2anyG$e$0{s87od|V@; z)kx&jr80y2pf?E7>k=Kp3C92M{mYAJPOeN9c$_uQw%twU=C7Mphy)Z!Q1eEwTBLY7 zPTe;9=SdPEJINTl&j103hKw!eno&TMLOIE3*ywu1to3fg^_fME3LC0yGuZ^wJd|&m zhW+Jf1?Jc{(HEZ}d7JrWP!(FHTGE->A%dj9xau?qmf!H{hF^_Roi1Bw?K)vAVIN++ z0G6l3_+|W+(IVoV6wvc{*dL>V4fMVz{M8qFqi>!lOaK;9#ODuXzTz2kDH``<_M2VbP)=^kfxTW|6jH4fZ*CN=PGh!y znr}+*VeDX{5awd0>aUEa@pk_Crq?x%fe^ycAzY&=e_T-vFL?F>mQ%Q=3%RI}I^p=E z8VC%BFFSeV#RkVEl~4*Emf&#@eqoLWo%MLq;r9$e1A%z7enm#>EiuCrPd?`bdAVyr zYlOJx8IF6>Gj-$im+emURz&4#4(;aFHpNN!9~Uiub=@zyJa40mmUfV`50jittwI{! zKBpFZvAJ_1wZ72&0|Ig~s{6=s zT#hBZujOloVraOpQh+ZntWh!Q`^pz0nhQMGbu90H$#&c6`Z~{A2S$*ybl-9iv`Y~& zw)>_HuDoj|A&MgrZDC{=I^cU1w>evssEgw-WtafHkLfBaSx=3ofa*#|2G>+EluZ%F zoFl`oX8zAzc zNm!2Dl?aIZj&qK(tgnL(?Xd`FymUdjp`45bVPbgEJsaXq_B4=VR;p_jM6caG4@eO% zk;Vo#l_x-;sNMRF?*}tvdEhPAbLSaWMq3}6{}B_>_L2{rR=L7M>Ih_rBFAPI_B0GG zu|W3m`*JU*zKkLHPjr;B({a;GzT5%CRO|7L9V&n=y&8fA;9EcbnCD7oU3}R7eThP( z3^*$ul$;6!XP!J^1IshQ8^D#Bi3oxBO#`MGG>t-){0I+VLwJaPjV#`7Q0P}7XLZqQ zy}U%C=+K;KTEjEV3h!3o9YX;}@gv9gAv(6lJ)3L2Z8R7OcnFn}Y+sk>AayD=1F!>H zdYQj#Ic)tEzaoKdM#S6Uv$vN&rexfcCP~f2+@3L*&R#~OCUeSfRfHU$u_D*dIv%}R zAEnIBMK&Hv1~l`QWK8;Zp4oYx6^@w6t6W#gupnQT=L5XuF(Easdw=$Ba>k5Z>;}(7 zf-h%$UW#vc7O9k>ip(Z2ok=9(PUf&-AV&S!t26&FmhmRmmVUDT8kwJk7x}x;20|rEi5JGS0-^LG zgU|MVD1vQxDIDNEB3)O4u)O^=j<>IEoUgR?{yn-uq`nQ3)YDi6LCn}lD&c!y;yL}qp4BRT2 zot)IzB6vt%#c0Q3jsH?+no4lsMUtMEela#qZ6>a|H?|rD$bK9{v8LUN9K=$4B`KI} z;oUq}Y(%Hgc2$}V6}Lw$(Dk(hCJSOtXyUGQ;%NzlYy01ApgoN+r;g2q{-X^fP z^@_S`+V(L7qCV;yFK0%i`eJN!A$|z7BuM`?_XF?I{>zU;7g9utnSsim{*y8HPf+UM zniVRz^bn3#J>VCUi3A7*yb9E0OYkI87f}fze&QO+0cmSRu=Sfd1PK3)1xB5XFXv8) zu$Ku5sGcD4PL3kiUN8tpdCN^EKanFD^M8l+-_ErCOJ&DDvDZttRriqZtuN_VLHCo7 z4jd|y_kjBx!K*YV-$C~EIQ2n$9wPNT<~u%}U&G4er`HLZKS(E7uGD-PaAHRExb}!u zQx)j?qpg5^!D5o{)3&i8d-guBh@>l29$>xwUqBzSrc|vU+I1|#55h|S&@o zAZ1QqAARt%Z0~8nYM=)yfmX_`%Ft7~!RUQN;)TdU$_s2OZgWKhgb@XOYWoExcJs0f z+<)ClBUl)+Vr&=LK05jP9f=y&4f==hwJrwF+Q-RyVx8^9N{ntDNvxzDpFWI|I{6bI zIUttc->d*xU(6X4j|cP;`8|@R14kds0QZ?OReuIiiiWz zXhhPCexggSC4&Op5on@|10&teW#b9(wydTwVxria!1nJ;WRxiUT14q>ntc&K!$yT} z-E(jOXq`XjFnMmCNF01k=_>FfhJ$kw&x_B+B7`^C7T$#Qc5J{DURsac@XuXfuLvC7 z;mvFR^BxV?yQ>CiDMzrCB#`Db$bh%`GvBh;9^Gid=pg0nE$|B#hxc@szJHhMpdoC$ z;KA?xsz3D%j?@?b#P+M1Gw@_Q01k!<{?#AaFu0KaZ}So>L#*VGHH!1%v#=rgFVHW6 zkA=iqh1{K|QCY+*^Ydy)3;zW3Z(0Kwq+)1fQQtQJg}_q5_6A2vWW17$1P=b9z0vub zPo6Fr)SOY*e_mhP(B>Yzk7u9dHlly9Cj^~n`=}qShW*)t*ni+N^iQ-NSO$VjI7>XL zKM08uD78O`fB-o;3R7N1sVZa&f*Ndlm|aosE|>pC>p31r;TSkJmwyk_zcXd-c|Y1Q z>ZgOWB&jvC+80cws?X4WV)Zx6>-f&x*-*H)NbBD?mVoWwH9eE)Vvgi)Lxw*`d_?db z6%>m=)tm_29uB$vCsc3bPS6@r?u8>95?ICI5D7%FN(_Lr^9F!)vsV&I>T4!L0l^1v zaelvaElqK|nZPe1+dX2hKQ~S;#w`7bt!#7JM= zlz;HuL+$%*Qb<1Ti%(x-tv*A6Vg~HmD_P#2YfcRLB8xx!RQ|;%!P8rx_@vI%@ooP> zIi)VX<{P;O+o!45_ymgh5-?B>eV{ZWA&%38L9VQNlPx)>AkwAVT)_Te8e1NBi#cDYOh&$l8fkYfn^{eB6u-FR4Uq~j$E zGI7}*!p?*bLT*XmCo)~F|AjWJ=>P&k>c zh8Z7Z`EJ+IvKeda6my{&CeyF|y60o80;hMQL*8wxR~^9gz$~QIMkRv-nKRuh6L|i( z9?X-lMJ6&`>=+bbO;JJDghS|>&!OOz<^?zX8 zH@3Q&KD>qQPZh7hO1T+DbVGpg)w=+ZqT9P5_)=STioM{tGwD#vKGqG+rqa5<*!= z_*~}zXA>X5eJN7PR3Ou#>?H{|YZzhG188ve9}P0cKdjslg%v0`I9U1~L@D3s(CY<_ z(J|t4?)!X$lV0rev1XM(sK9SVPzV}J0CvD(>D|98S3UgS2QzN_AxyOTQZ7pv=miw< zKY!CkwETeSD?a!IEdBaFyerGZ09nS*|LdmucRS0*eGVtxa82F5#gBww*|=1)b{8%y zjg`s*5L;X;BZp9@q@_hm_{9|Y!5De=r$je2=lb`&=PD^4>WWCj_Xi;-bY5w>)an(C z9%WGL^lUwlKy{*xVp}#3R#PxqoI2H*;#pHu-O2;57fR6QF(70-P@m#89hFq3bv}*9 zFW@v?t(!$L86o$N%JGzqko6lT0iBptk6rO`+C7M?a#ufJ&ytzHf=InkgldJ_$7(O$ z`zGXjpxX()kQT_azEm0nI_!RY;1D-2iqY16Te#_Cz%d375z>&kn`}lC=o56)XEHm9 zZZ55Qg_qfDgtgIlAfvv`1&RCk>wF&8L~yr+fplDLUO+Qu1pr^Z2fTKa5Nr;}<9OEY z(L#J)qzGzvb&0YtD|l*LNn(IiiI)Jgs>T%q$2Qh76qgtHeTY(bFUDB&$AHG~@^Sfw zG%vxLUEfxhZf$1;Cl|+)Sz|^oub5-3)6nAjSEF6ap-?s!QgyCkXzpp+8|Z{P-X}Ie zp_YeDlZ4^7?1JJ=9?}33fde}UssA&ifP;y~z=m znywEMS`1e>bE2w1pfNrG3jG`a5^dd@<`1D$A38J3L>`G`1icI!S%iSB&-XQ-C}Foh zczqs4A$hN@{wdJH8nDS7HiwM`NK#wGS75BS$gAnL)7){D+WenZ#JmI#5~^iG0c<*r z;ve6ThQf`b2spv6FTLeng;HLU)V=$6(F4w+(yc_kPw+F5!Ph>oNcogM8ePazGCMsW zTT%5RTXRKh&;%wbO|XttriMIv>MCUuY3+wqxs~q^8oLy#UiF`HdQsOojG3+2uOWY-1HHtpUHGceegv1v<{ZAVRd2X)eg@SD zzP>Pi4klYT_u97irY#7>lJvr4GZZNK$`@F+C%{vYA1IWSdd|MwY8b{l8;AqD=Z14> zb|lT>HulRJPgoG|A;;-mVtrQK1}u9IUDL(t7+*$4b$&HSnwe|v#dQCpt&adSD`zLz zR4V;s4Ly+aG(+@#0m9(w%j){%UAL>v3rywggkuc2io2D+5?9Y->ItUUDlrGg$B^!Q znkpzhO$kJUM3F&_^YD@BP>qct3lWzWtlduq$%J{Q2%6=GZ?kcnSRYg& zG`}<=#W3$Ax#dQ{H=SX2ao$VR?p2$VbzCtYPO$xMb%bDhrWYI~P?k`7BGr_BOFcWZ zX^)o@jIM)9dLL}aIe8MSZ5?1M?tvD@f14F?*t(IeoeL0w+D{4ffp9S_n>a?kJtv0?I^hUP+g;AKzxXW^Jdg_UB{wqDYtQUZ}n@b+meKQR#+Hxq^%? z8?fp+k2dQ2rkUd#;55GuUwPT`&I!`&*;3QU`F8x^^AcgHis$&aCvmu z9`n^xQAIUV-L=n)QrIUSjRq9xW^_Y1JI4v>=uJ3yU`l(WOX6IJ06$;N)i8+{BSyPx zk1o=Ry{>}1)S=g$2kp6cy@QEnxK)Fj&u8;|Ldgitntih&C12)HpDq-vyLTsODS;d|_t(Yj34;6pS6G0kl-wol}F z?D!jvFb({YnXoZaZPRnUUGS>hV@N>Q{4?tv^Ao*98D<`7`qxXmU#r(^?-+S-PmgR= zV)o({-^FPxWxTglO35b;j;Z$D>FCAQnE5F;6K!RehPO-26FDUH)Kl`CayAY~jVbbR z57wvrB5468#NpfJ_%`P0a{8Aui;MD*QdWouB1NOk2|xhcSYT0 zlQ4*n(!tM`$h;Kz{e9WAiNc*7+)XCw7fPJ)=)fr&wzzaz$|6mpyp6-!H_IH!RS65a z+xgq72xhzV@asTlbzv+tmt}V!3u0s~)JP$6f48B^tGCA<)b-(!RdcsX4#M^ud|VMc zsaTPk6hf^B=JCVkph=Hn+!Ba|lof?c_GAfT@x4i}S!sbI2(oryEOFbozY5qhnd zjURJ&42;QEN78Jjlu>Dt(3;)abn%+;lcJ>ixT@r%-IT=q)mS-gF&K__aMua3bGR?u z*k=^jwDjh!v)&>(PWzdM)6F8h2H?glPV;OFuU(X)*x+QtB zATQR6m=k6CHtbyQV{4xTSM^(Ps6Yok=9D^dxPLV#^?8VG&IiY4nqYc``Q3NT4sOh7ljF3qPaS*z>(D}2_)5DjDetn}$vBmT(LTLg}$ z?Cx$YWYPL)UV90DeI7}EuBYQYBp528ka@W?)>9sam{^D|x@A`Pi5F%Ur}w~|=&L#` zMKJAyJ^1dSi<1+2}a2m#|%vwui3)`o6T{wTAX?n+%GR^>%+J6W(W^>k>!$- zYL1VYV4t3X>Y+9U^AVW6Ztn1amJ*sVpdCuASNV{HC)Z+rDJuyg8iX!uU_2Man z52=clR0c0K`QmNY8VMkf4-THOdwri>RE0U0{;cxEm3XkDK+W^kEc{EX5OebR1DOGD z#vR84{|z#OJ!4|*5yNOcb_`B-rY~Wif3g?^!yS@vhgut{bqP~WB}wlm>pXQ7i#bl= zdMbCMDhH-%-VujzArEY6Q58%5E3tLZbpGfOR-`T1BRzt;fO!nuQMuQshZd?L_mc}p zhm$ynxPM(p9=9Fs%xEliKj(@eye!6x+1(eMi9B(fL$xu9p_*Kx=?|hS1&!?xb+I@p zYSV z`b!Ow$NPrkv{PqgU(o=3j_N6bXdDUYnu# z*-rUS@oKmEac#QCx+Y!cZF97iE3^oZq9c zx7fgD5>T|?-F=m+wg);L?-?|&UD)I)KJyF#Dr8JVtJITz>3XZfLlna|Jkn$Ka_ z0o%+9=0!JR!ml@SEbh6xuD_!@^>8p5yBAh$Ae@nmXxx7&Mp9!WRN?F01gZD4xxE%W zH+OvQl4tm+y}{dWGnt>$eA1XIF8o-)bww8TtQF?e{2B(I{Q>d&Svfh;b0Nv*m(xro zw_O|aC<8duMd^QGg$>;D1xlw?-q&(+|COGR66R{o^!}Hk!($Wc_ZO4YZ9->$YQa1+lFR3HLErx1;yfZ3TJW*<#ag1o(p7 zYN~DP;WxO9n`?6Ec_VOZzS6$oVfim0xjFhKu=*7}_M^Az+0T)kCFsUBF7@Xq1)i2%Sc$0APLc%j>lRK%TMA{ASpQd3Jxz$F0-Er1WvTmvpxr_ zomkJTPN&tSo%ugfb$_Y%@@0BmHtrdp{L8I=FE)_+!2M+%mJO3gBscOmu_oQ;3(=pr_L15KXO)5C!Z|>|b7G0UFax?=s5@7d zpaYJ%2EXs4)v24i|1(tALL8?)mW}c1jg7(D16`>53A&?euZbWPdhm#{-AQD&qQ1 z#nUR3+~#RR!Edk{_H0JQr5@l;KE*J6h^^<1y_e#*DL0YZHB&Q0YJAD@M2bU9pX%U+ zHEsjq$o=AIHi!DW%mYZRa=+3)0{u~^0U&pk>zOuj328oJmaV0*(s|wkHevsYBe7v4$u~fj?=3E%g0Kr{6}q9H~Q% zEL)iExHzN2stZd;V)%w^oGyIT=yA!wpp3F!EGLmcU1q(59pAzTx{-th%2| z+js??f+WYCs=|FeLKCP*pvXK~Z=ljLYU~M+<2q7*i^gJ=kvoTTML-V>=vH4S3T+>g z0avwKHPQ6&x4-BSvbW+~NgD@hvG59br|hJJIQYA$Y9dzz8tMBTzruIPY%xXAbgQ3| zzI0CdF{Z?F@WgOyzSm-;X`ESB#gK{-={4*f&N)#Ln21eM?U6XJC|NhB-)hTK`RxjQ zIzMmzU){=rXNyR`E~ua9KQA!Gy3{lQHB;hrV$GIN;OI@<{umT&R1~8>=<=DmT1*>D znWkTwuW{sBJBgvJ!6u}QP-6LNUwLW>YydBeN zH}#8vavUU(U#=zT9TUW93fn&(b)beLv(5|1O(TMF$~7_30buhZoFG8~WUo&%e$Y}k z+~LhOev3X9bLkiJ$ip6Sj5YMFL%4)hf2>@d3*vLOE}SU^O}-?c9cBT6^PwirKgd3( z9}ZtrKX~enAvNpU{P=8PwB|&>2eC51+T9o!#Z!HEr`^G#7|T<;1ZBCBc3Zb6W3T#< zcS`)LI$A&L#{=p*b_8_IB*+lzjRXOu)!k0&T7|%LAs69G@S8HS1)kkwMQEyk? z8oBo}?5OT@Y1tDH5|;v;@*K;;DK%HeEH>vjj-`7@!l;8n8>vO^eL$<7ck-lQFuE`zpCIA zsmZDkMm12O3&W8WscUbQe*vl|FS%9q)9x-i`WD7)KwqQQL18fPDY?6Ev?CyaA=m@U z2+r%3kGlwY@kV*7+fwlEt25%QTuj>vpH2B16SXLCX{=(_=Cq2AK=mshxh0a8@bIq zYEws<14%*i_nB4J4=9CVHlHax$!{u$4%!8RjM3 z@+DVja?U$#ZI@h=H%;f&Nb9YPO4wf0s?4rP>_6c?DViReHZ8iwQ*O8I>FYU z6hT+)1nND3P@<%{COb}d9I@f9VAg2I_qXnn0gBzR^XH)#G}Ooa<;*?LOE*o?3w}dA z+x%ryH!?B9Yk)WM4!KGLfnK7Rz+K9+k&mXNIQ@J2ZPebpChtqWJW3{@{QlUL7{7lA z61P3BTo8eskoI27@EG03)23rroLT(4vYMLO^r@sRkCZ45AL3%v?MZH|;%K6cPw2z3 z+zX!zU3oL^$k_QQIUDJ(xetqW#8Kv;&%A@+r6F-gppO_mkh)2 zlbO*S9#3=M!Mz}AN-AX`Rz>j4hfOq1;npG0gLQo)uCyu=u4Mj_{yTT$@ff2&0sP{a zU7r-K!r$%T#92$#s8fhKUtMFxH1ughY6-9J^21gWXhx=7sTkEdCHh_(mJTvIs_(0^D4Bl>~oAZmtPQm&JeA zCF6+n{0zt#(DZx5NBXEhh#a&QI1Z=ts$)fbFC3nd|>-m=@{!STy&c=o9;85 zt`=GaV*Rao!puCv;P2xt@_YpD8T)22$HuR4YBJx&YWwb{@!dB}zh$ICFzr$>V`*x{ zR&?)R&Vdx3%TO!nF|biOYFZhgclpzMY40tn#o-6X(Dk&1tLju+u~NxLLJjh#I6xWf z=1(Z6F?B6H$xja_T*Y8sSpJ%3>}qcrlyFA}OQ~@>Cj>~J{9={FJSwqbW7gapFPtbQ zRPXi}F=Ex;jV38s#P8fsx%0lY^!EPR*j`dlUO#9`{7^FK#yp#5~;nK2d%_;XE${cgj?6zcKUOKNGi0 zgtd*CGz+AjTDa|W77iN~Wo+(#mq=9huM?+yvJ6VxY#A*4VG*w|zNB+95~Hka9CfBu zO8w$X?sm5_Fy=PZgqFGY6>S-2WNuKm;XQ}>%&nTI@*!94dN_|!q-uS@Xup>Y}K0qp3@R2O4I^Y}1j(--2GzocaAd}H&lkDT&~QJNtkPph#qH&hBO zWBt&aC{@e`ygj@fVa5B2AX2ihT3{8&1jd%(4TC0zX>$$PAbUbSHeO3hB8+>u(9?@* zpa#!lY%WsLu;P{97f7R?!)m)4a!~Vor%$6yuQ2*gYMwq(f~xRrbp!jCobjVv^m2Y( zoj#=Npf1p|0-B1_!HrGM9LcMztK3+jH?^KA%Vx8!p%5+M;UmJ5)s&r)jY;LmF!>#I z8HZBf`Q=tQ7}$e;b>QItNpKuQbJ>5CCgzfEyw;CURLTzR91>ZqNX-RvnE1TD&%uXm zuN)Wn=4)}zhIDycEedNO(vJsKBm8XNr#ngy+Fo4Wbsiomp}a)jFJw{Tjbaff^{SZ! z-OmcEF#)9>lUe#mbAg;8@)z7DTh~ zeQNCe4XO7k5yV2AhB%$NOy#_NBFUCw+uHD|~!auarZs9v_gwwHP^Jk4Y zl}WP$hs=d`mN}SQySEX)`BKp5SpF^bR>p%AM4%eo`j&SrLeefR_pR3vqX7)x~nHf_2}e)wk{R7fIq5 z@B3Tc#CSZC6HZq6ypad`7WXA$vT^D ziwql*V!p;Qq$FeD`sKYUVN2g4bn(~?-xJB;p3SH=^J2&A6&ivQ z^yQ0K^C=@MUyC`|_J9QmY9NZG^O(FJ-(34UH5hqJx@5>h8X>Zed(gh(foas&%*j@q zN*H#~09iQ84(DY8)>X}$pCFp;w~cf!M+^}^s*H=%)I!6;n2vanqID#(xr1$Rh=$qA z1pORDvSX-#xEPS+I+3hZvKY%lNZ7ZEVkn1h?d{)5vnjPf6xC*CX4dR7W-{qb0$|Y~ zXPvrEpU%bIV_xK~Eq_JKMkMH4%`VlbtV3L5`H41*g?Zd9Zi}BJlx95772#7A1ibJi z67P3HI$q0*yD-MS_jMoRP@)M?Dy)1V8${X6<^I5MjCa=L3IRadLITz_atNYdcC5AJ?;NN@L8%veCXY2dfl9_c{S+wk~zQr83`m?@%nJ%+DXOsck!v+c@oCsmTSqd(iKBG7|8cO>MV zTAf4e8y1&k+k?lp;|%yD&xTY^tA1u@@gY3AZY7cL%I+G4rN>AQPj* z@W=S`X_Q}A9gcy_C~LYskstH{l^d=4(;f4dp&5r8?{*)LA1&_2=7heLJf5Q37GH4% z`K(itux0g;y#4jukuEd*jO{K8H+mO0gYSj*hqEKoEjMlgtS6dH9QUcG77o26z9mO| zg7Gz5+*d&8M?_~AuB{a^-9f>Lg`PlV{M9l|)57JsNJa-1{^%GUT6=^ZY1I(NsTFiqqm^xF5F2LZ}1AJrVVx zS*jguP1#@M-n=89epRwEUC!ir{hq2v0l3yqP<3#7nZA9!9kOyqh4}xm_2uzUf8YNk z`_8G;r?s}B$uOngXZ!6`0 zXtrbO`)ycW9s+3gT#1<>4G$JD|=h~myIYDHbbjnV|z@2>8*sJzMPt7 zU}DB#q|`pkJFa&TE^`GUD|10sZP>cV{!ddu0ey^io@|>Pcc-rtfsQ5pxauOPH)QvB zYs8-R$s8eAhDF8!TDb`44`X7OmdKYn_vL@}ZG{zUE~=MHX@||{i^qaSL+PksnsPMzK(>d!HQ||zH z>OPOT?2twD-&BETcf`eA#vgbJiZO|Eh4q_cl73-{uzkElsJEO7k2~;8RO1l&!OY~E zMbi>H_t=ScI|aWG9M`{As(@edVvY(j{LmvFMP|ej3PRt|hoP11PreaYL&klBXipTq z(-us;N#}PSWp3l%kKkf=*$I|_QosCCul7a_wx&p>N)Q{FaCZy3u6LxIeNE(Y%cD+pMpP1E3p1Y0;0MedeRe~_Xl_yGqqmPH$!G1yUQ&uF1lBjJ$zCs) zzz5GHM~UKSj8%>a;A}M>UEzhfk|4lg?OdbD%sSLBDMfIAb5P{o3G?vo=tAVO$yWf@ zt#K70QZW1Q-p$RkCz-X$_w?2Tot&(Sf=;RUC9FdR$B*XMey;gkA1$_?1mYmXiMxc9 zZP$K&vfh^GK6WS2?hM)Q;AXfgcZ146K1AQz5}Z*Qg$6)gbN3AGhlVEK(|>lkA{Hn1 zgShJuPuO%)Bjzxoi7$#DAGJ8s0C91>wy)P&o0wx7pMT?^K|RtwRs&`>sGGP`?t)|S z-9elTlaCWOpg3q@@$nvBl-ygxO37_3t^ zAuE6V-TU4c94GHhZ`~?3Yrfx@^jfp?QSI#<)|Dtj4|G|d^6?6ZbKW!l*rhIrlPyeC z`($vrW`V*QCrw#5sYZ6N`zFm8A2C)@YD7uuy3IX|ZA%63NK6NO0!9t}jV za4AsUxS8K8zx?7vDG6St>Fw}2mDu4kyXjRJ`>Pj$ors86hqv^=X3MI%TJ#k!7qv>Jcl4CQRY@tYFd@xW1NjP%T zA>gE<25JpbhWZGdXRA+yD14k+E+gR%1_8yMN$|-Zdh6S-PM0BN;HyX=5Mo>!QYyw7d`t z)CxKu|BNlRm(rLUTIKyUsPA)hZuCQC@b!)L-8sB?O)AHy#{Oj+PRQv4r;k7$q5#+%+uHaPmspTR`SBTs)NlZxa(bmh$^%#&h_J&>o>vK zsD;Op7;$0$>`dpw@y{#AZFP0i1O@lk+22iYh{<7PG1Rs#n_N$L73{FkrJ~xZ%KseJ zN6WWjx4#H(8Ge)NY<-403*C@M#Z^*{KjH2@5WKu&AY*+^la%=jZbfm#C}K$C_nC6M zig$;ED`uT>n4&g7*TBfaRlD&Uy&3s;j?$&WwioO8AqRO~$)peHQ~YjN@3RqocKk+u*@0 z=+jcZonX&P$VOw<4f!VlqjLrKP<*R}=3y+>e7EE(5JJ7xM~!J~yWofwl_q9v;LaI~G_od?^9n-ftN$Ia2RNaAPS zZW>S@sh6Iw0yyq2QQBtdVP7$-CN96csln3cEXq0}F?yDsouavhI44@625M`6Bjx`) z@^l`UaE|u&+#IEmmAf3;S0A3}mK7>?ixavKbU>J@UgzeHX??-GA7GCU zcY=r5YfKGyWSE1IgCJZw{3B!vq5vRz0B5%~Tm2zdAz(`eaK0j5>rSrQ_m2>^vAm=E z5c;p845zLuZUIZ=eqWwNG3-&Kb8Qd6deBAWe~7xE&L94;JKyYq`06fom4jCS3`Rr( zK;n|yN|b~NBoGZOSD>gUWyho-anAWyz97dz>BHUn_93CIlx4U77g-V65(T7|yW$-P zhD9{0EOlMfRAj2m5Xd|^F!Dp=uSxvDZuBZ>hJX{65^qy|!}Dr(7QO@(&B`40mYex7 z{Jt#E3eSnqpM!aPTIV*{kv|((+yA}O`mIlwY%~aGwtU_PvbEqlz*9aKNdmR|HsI|v z@o&#%K`8H{sh)q3#9Z-)s#zF*q$Bg-^x>LxKJq+`4n- z=5N{|8ZZb;E*IW?pDIN$hQ}a)df21RcNtY}(0l!m3oi2|+`{(jBwSZ1iK7hH0TV9V z@owm&1WalMRKj*33qNG~4-eRlTG+M-0KqRU@HhaoeIHo5Vx-qm?nG7;`HNALm z7Q_}^teyws9QehrJZ5a#qaJ>D0U`=iS%9=)k+U`&T?Il^DqsFcAiv-=FjIEdd-^;R z_N7pW^xmnmwj3C`#~Q|X2*83JT$%sr3937>N-EE$2NaN*ORwy#Qg6n?kc;@o8r$EYV=to&<)d1cYoMTc zwd-5}aw8(OfU%vEz?OZx{Ublu@U>?KVntyj6x6X-Z6_k^4AvPg&E z%{iT)Cprp31$d-cZiEsjuHjJ1=^E(JUsyzHITICsI%%LXK!9k`rii&ta|JwR8}{uqdCywqehN?u|M1{%1M7JDl~%RS|k{XPDyl5<>#uY*%zXj!X6it z)>WYV$}WjIVfkV*u^&P$t%kO&j~R{zKmxpW+8rYa#?7OS*;Z zNHPHv4cN5Su3t2_F_k?xBRWsmbWJ4&FInYjIq}t21&Xe<8WRZBrttzdI)`X=SwsNc zJOJWxu!)natvJg;4mDuvuYdTURm@BY{pJBl`4)<_MC9$G=Ciyy0w=#9V90J7nwJS^n37^UymrM3T`xK&@>)>>*wyt@;E*F8Tuudj;uXT2pMtm*-`}_9`Hl^3eaQ zKr+9Ulpbl3Oi7$_UP+u(${r7%s2HF>H`Vk)_So#up}Op2|Na*MTXdegY*Jne+LR9O zM(q{i2JonyY8C&StiX${q8lXW5-B@0Sed#{E)A5vH0OTzzRNg!cIW|_oh2S~6=ADC zrt2%5KL+=?C1Nr8Wdxe+e%3808V1aoR-NAv=G<0CcoQtu-sic59a0{5mC<2<8huxThQS}=PyFRiK7~Q!zDLL;+6Aw<4p4~`roF*1gMgB>-QUo^6w1f>005T%611n zRxqTU>-n!vg9e##aCA<09ib)I8}F2o*ySfjR%qMx6@WYeFF}m8itX_IX>5B{`r3x_ zB0p7nnc$r4D|7JLOMM@j!t0K%f&8kGCCjYA$XSN7yqYtBy_TmjWyx^?rZW6-9k11So#yz(jy?MF59U9jimco5;?FD^_-nRP~r8aQC))w zUdek8`)IALb7A-6lHMx3y^UhbKOp0^arQ~*R4Lt3jgkF%3GX|0t17<1>H_mh-E4$t zO6g_jV-4ajha9HjDbXJ-FrFGtL-7&hWI35;kmXzHU2oKhG%PP<+~QOz{ya?fC^3g! zUk@9H5|7jxOvwLtwMHb##B#r0E5b&ij^HT8O3uU3;W@OBEOz2h-Z!erSRuC6W;ZEk zQf==N!Q;6b+qv0U{$2Dcc5gR;u!9c$#0~ne_LZADxE`Cf^gsjY?IRhggy!{|k?n5p z#?OdDjlY-aMLEHRUq5ao#J@W%0`ZTZdn4>W+#fPPMyz>!phL#!zE8owwG(${KOAJ= zB6#{zZn0btj;F}HTA)I})tVdKlc+jka#+6myGk%y=RStX=Ph(GpvG!f<-mp#<%!a& z@yz^uiE~f8Z}@o}x66#|&(EK$(nHwgBEIbGL^nlzAoB?C5WVHdZIOOeSM_qU_T-T` zzr?ST>@V)pEMw(>+cQ>^*k8qey=7cME5-c=NLmSmQ=##plLbi|ho z>mgo;W27n}5(`ou&o^y}0yy`(UZt=RE&u-h#+lQVNH0f-A)uk~s}W^CyBd|k4GR{c z5!wP3rvp!3@Xj~T;*Ifx2Tkz(&x}@djyO}nvUkdP8zaZF2*Re6!Su8yU7E0TpF|z+ z$J7S^*cUqAA=4s(TB`ppNB<(ehpD@m@jP}ExL%HeX$IZxrVk|#+Wo0`?fraYj)is3 z2f2U$UVQI*{+#>%XS=bsS%xWxngb@g_j~)#n8;88xrka#EASdWn?iNmPi1Qml_v!V zu$)?E7ki*6jtLiO`+7SFouzDVejN6uK30Bew>*RY0dCL}{v^hb=g~x0gOQCk4|~K4 zaR|I03Zx7U-93ES1H8;dxremZLKN;cH$Nib0usT&m|#T}kYgl1sEV~a^kgmJ{@fk4VsT*l`X z+UJsqky4JvFqao>Maw+wRI472AG@Fir3(9#nCo?2Q}3bjN#%~$%~S$Oo;%&fH~Wlf zm{0oAYQrOK<{*_B%`caht;$)eqE+^KQ8NNYW2Ms3NDe= zC)B+s`|4$kn*O+P+u)%JXD4o9T;tPrGL-6K@+(0uq|}|wTsF*#90P;)wL9&aT~c)r zXoA1hM?b0yroHyN6WSxFEM0nPw%DOSi7uTeS2{yGu}F9uDKYscwXTEeqf<#=_+}!!)?7P5&}sxLD6=%@`2YyNi$P8 zJ+JKYKW%h=Y_hy_;xEDC|5fLhiz&i((0k}^@ogF^lP(R2=U9O6GH%O&!umFd(Xuz@ zFdvbqWrrPUzAx{o8{Rdm7^mFG9hyLyo|kf^Y^Y;|2-kb-q0m#|cim(nQ>E2>Oy5H{ zid^F=Z0kn_q&{c0R`8d&aIiTdZyGbuZE^~kmpf8*B%=_gLH*I(y>7~1&0gMRaCg4r zz;+F4xSDh4R)7A}ixKhnw0FqOE-N;s^lo5H`10|0m!?ub9nyO-LMjhT{7@|zGU<$J zOY|AkxY>W6B8ZQ)+I~hC&-X`%SQWdR}e{@xtxr-&Ik|%Dq^=D*BsA-$l!jfkPrPqhrV0B5psG8k9$zn z(o?h()?&XQKTSETwZxve(nWs;#V+AA*&COOGbOIG?xFkz2Ar|JT|}?|*178y8_wsZ z1adI{q+(wDa^hB6B3Ba+VBdnuL`FUxm&dQ>SiFx$oIaKf=$~s=yg(ojPJp{Eq6gAY z8`@E-=7btV07#Al{g3x{k~5IY=3u71tJ&}8MPlHJfmcKld@DF-`K;rg-W15$`pVUD zd)emGb&uNpvBp|_HH!vbyvNk9Z1n15DGo=G6Nhr(8z@+w7oX7>uwDN97_q6=l-6c?Ct9YJfE0G>d0${9v! z$Yi)%1}%k@b@Wlwyk`vX%u7E>LcqCz6Wu!7cd33c(6#+&e^!EJ(@gcwpet|qaZ(-( zY+4bP{n(vq$=GxVh~42C4W`>JUbtWp_=^{?zYXHa^Kf^)M?2a>D)Iz{fMbiS10b1q zn0P>4v1x3k!#6m*_b~pHx%UuWNwRLoVrR#G)z4KIO>x-jr{?8+4mr9ty=3ppJNbQQ zcN$hV-3LSg z$aDCQcSdllFsh2;{qL{E8-mk)_;C$A_)631y?}@=8n_{lSxV}=9?O8-Sfs|$tCjH; z9twj$Lw>8~>2q7go=4LRyp(>0DGT|PLJU8@k94~>`nKv>5~8sRwOaLJX56I!0N*pY z?eKOk7!@gN7zOYLcv3hN)451E)cEDh5i)F zM=^Clt4evY^bs6==jd~G>|cJ*hkTQKrt!RyAaCfFL9YQAY-upy#_z;50ZOM^>)9ad z7xoj9LyRngSv;MVoxt7FzKVjF<>5{hP2?=#8LFI*1Xzd`zqj*H+Z=q9_&MO~WYfVl z!|a#`?Yrjv4%A^N(!JwzUQsUgQtR9xwZGaekP31Q+w|w17w?zNXiA zy|yZufO`FG^2IK(SvoFGWadvrHmv!7K{e)x@Mpz9C z-U&~euHUfD;iT_p*t{VVCFE?|^u3>H7}0$f=h$VX@Xx-cTFV zA=6os9v480QAuj+`yX>p2j(fDP>7n{VxqBIJ(~BaQ60;Pw*~eo`q+w82jT!~LQ99o z;$tdrM~=Ea?3(<6u}92s*CTVfWC{pOn{hw%Ilrr>JMD7@Nd5#CNnQyPylbK`BJNt_Nz~xE9Le-O3mHES$JJw9$n_xOmTSjlv(f}BSDJYf=48EV7q@9 zf5r4;Uff^}YxO-D-qgKgMvf_U&8p&ynSpE-$g{b;gABo@E0W-L?^stUAqhqj^5=tJ z(EI{pFE0Bs^nkrLb%RzP*Cx)EPFp+fMvpdo&VwHe5lGYQ(vzd!~J-{Ft0rRP=c8hjN)cMNtn-CgNz zQxteIvJJk?5MB$yjuPVMU2_}c!l4ExIoGVY^47^ZrQ zyH^rRXj}LRnADOpFeSA(*u{?dV+;q+4`Jo$8KIBOFVj}z68tzCAe*=pW}fovtmM36 zzI*0ihWvib?F1J9)4}z8z{EeMkkSX3Ef|0W)y`(zW#L%wLA^Cr?8JXYa>azXYr*CH zPj|yDwb5QBaGSeE9`L*ac2~Fp3T`-l#O*$bnLmo;za(rE^TM*#8OCMitYdu+6?gTK zv6~r0jy-=0U7vwMgaL+01Tj(ws?8ID&aH#atJpP|uA%A>!ID!DxKV}wshzJ}{haxf zuDH*{!uCgHh7k~Ot1`w$jgD2fxi0&(loC-uX!)j&{fN$fxw%>yfc+AQE_06nyJrBe2#CE|AWa!p9=Oe#|2`U5BPCMk@Vt?r-U69T+Pvh@X1DV59 z;+LSg&k2`3J!iF^jEI?k;d{J5hSPOSARR=cfy}dGK3J1Y zhTV&eShtbudYx#daq^%4bYuU+-1~$rD^Z*}VV~UV@Cv|Q)FH8w9Keg5ywp3j*_fE* zf%4zvM~}FLS=ALL08mGpWbqnplJI8V6gbISrSj>U8Y5$uk65)k(J={oSP@UMnKwph zfcBMz2`I!8{-dxiCpAvUH|!+B30R}gcCQKHPrWeNDuzIECpzJ~4miwHN5axyuic?! z|AQeaDg*^uY+_qTU$H5AQ;=Aek&@?us*W1?2Tg@%f}qJx589A;Og#2W)G**>Z6DiV z(xX&#nTNiDZ1_K@C{~()nv*v*AQRS?CncQ+WUIv{CE;4Ip9H{ae0^a8@Gc*c1DO2h zPS}Th=Lx(2Dt$S3$DWO_?`LjHa}{i`CMpy5&fZqxAqywa0{7*AV<;yRpd$PjXVmZw zt+FnsM3JXq384C7f1ZtmJQ@*HY|#ykxZw$SQ5!?Ky7Ovc20CF8k7}Y$NAX?Y!jaQA zy>4mu9cq2Zq6v9KBd9n-&MpxbfxNK`(1TudprvE4|IG?uoOtNS9P{(FGI;5AnTbeG z36TdG9-JZlaO-E=GM#>rP&?YOhj`njrucv)MUNxV_fP<-Fn>4B+hc#hL7-FLEp3en zY^U#MXcN^kAKdW{_p~BV>g8iv5a7#mBt|@>J8N={;m8D#+`too4q#m+{1s z?fAx$WlDtT<4oMg&(i=_P)Gv&Yb?sLpMJHfXt4VH)Tt{LIh|Ndd(#j*7o(6zi^id` zv;>QyI3?}%1QHHhNk9*MfEd_Q74MWmVohW*EAv&_)s55|Si&x#(4zGR8YDq15<2Af z5MB>@DeI_3viX%kc6 zn#~F%l)2`tk&5Ue&+u#jpy3ACD!8}A(J|1%;Ab_wuig(7$Npo{tt08_*-!-+{#UkD zC5MM{9lUTFWa>&5ZbMB`;pIlaT4(gO{qbVs0SGBLNW2WL4~0Y34wNS6Ax78lr$TGH8Myg%hGJ?Od2=MgDQHE!X87l=P3 z+qtQ(CPr=(w9k|IqKPxrX$lpW$a@CiWTNxu6w5h?SAwt!7tZWE9AvCJkJ}nn94Bc< zCwx`yR7D;yAm(WRM(+O_!DydmWATrV!7l7=oohJ=WElR~EB6AL@BdfxEUZFJ_`V-> z54~l`oX~YxO`J_?Xz9FE#s8<}h3c?cI$u$2tm$oe5{8AW0bH4TF++zh@2|$TU*qV@ zhkpUlDhIcef6WE^-QS3Aj|L9qR2@9106cFoP}ozcbJB6=1*P5CUl&26Im-jkW^{8@ zYf&TZzxBHqHL2<fzByk=o4?=q4EzF{Btfhmk+GN%q^~OOGwd$; zFH7?rvNtz-iM^SLszx!yI{lE7S7UP)%f60icNY6@o5C)_r1Rq2{AKL6b|Ts}7y+oT zQ_l4MwaaU4(M#D?1%r{Q<=0~v(-&qxCDy}gYzNnS0H(l9jb1+(GhI`s!-J@aEhYlc zpu1RD2Ys+bS3IE}fb(t+E|=D;Z3*=w=xX9FEaIqAnbXZ9kFnx#QVo8|85Oob__3)7 zY(BcS=LBX&NC|*yQxgVOhLsz6PLB3V%ydhY(@qCaM-a@QwL^cyXqCrg?zX{`(gI($WuL6w&@x z_?MBzp0PWbjP$;oh}bw;)_$7V#i3pkV(^FToBncn-|H0`a$WKgq`?}9vFlJZah<`X z)F-h;WoNC?+4rkpLsJlZDt-~oG2y=`pK%LkeBoQAi4YZle2j7k4$rXTWS)6#%ZH|E zOss*?p%-j~!!kLZ`x@5pfjZhngK$v+Wt~FLgFrvY^WE(rO^KlRq8%YntI$NVGyJ+l z&x~*v2Bj;*Gf9iIvolL0jV*Pmt&`^ti5YpQ!jr+k)0jBI!Fv`1+xhfHh-p4)XkS`8 zZ&H_ww3R)Z7zuGv&q z>x0RP=W`-ME?mY9;D$8QlqKam9Z$l(>I35Jq<0Y{f3=msZ6-|gTm)YXZ>i0%<(>0d zJ|t%2`~o$A@!!pbj+nJ2u8S(&*vxY^aiFLEG-ScOF?-wS;tQIDQ*G@S zo5c#;tyKsxN2xxRW{MA=n!`uGjf(b{D)`88iauQdZu5xItI@z>nKG!m?DLkF`7L=`kNz!;E=9iDB%N@)aa4vDa z;@Z-%TaMdtAd~>rc31ggv_!&RlmsBf%^;XreC*1LX1^~o&mtZ2-*Up|^t-_N~ueDC8KozT= zuH5&zrf-s#WkmX(sY>vR795Jsq}czQ&q@%>|C7DD_tQ%IGI(m2E3L8D7K)bqU_m*u zubs(*YEpNZ=ji*QU7v(&!v4WyN#5b}SYH6xT*P55MxU{vbgC=LrK@J8t}o^X z$WUVu+-sd(;q+|$#UGVfCa{s64_aXEZ`uA)t;MJUMMLmVyL#r?1=}6KNQ`+G_^^PbGU86 zhFu}Trkc9Cxe>+E`Kc&nAYL*p#ETr>H$q*`-gK|=?-2;1BWePgj{yBPD?0$jxTBd6St%4Oa@`{~-d+B&1< z{(CQecU0Wyf?s`4g;x zna@qz7Osn@VnlrN@cu5;L;YDw;qmTJflz~YM-V#w?k&ktc}3AT=--j84P>#Jx%hO~ zHw=S_kxbVpRVUSdSj29p{JIHP;>KVd_hj;3`;=RxY@sCPxcnW=f;=TCPYfTV&aM-@ zI6;4Y6LRHn=x5UxIWuFotL2BdpyHNFY;+_`n>6^Iz>AjdBW@n70PWHI1thK3@1I6=^BOzVn_kNFJDiLXvOwxfpH+8r*H~7m%O?LP z6qMg#EfeRF2HxI>>1Wz8gQJbk8n8fO9!T5ACX-Sy`psd2-98vtx^CZojcsQhbPu!J zhjo5*H^JT&?Qk9-t6glD>W&Aev0p+&#qW|~b=D1X)464GGjOE#nJCQ9hwzv*!Px+a zlB7VXR-t()_`F<-5DsRpY%5~nTjI=4rJnDzBWX0wGg&^= zt&cD5*!m2%q7k{iYu-``w`eD0*&|LZEc1z z;BZK*vY=Upf}<>q$FCg7eRaQs@mbn@O?H{L*T+^B@(kd3b`0MP?@GDz<^FQ71r9P6 zwJ4ArgUZdw?IxoXnh5F1SOcy7&ahsVZV$jYB=G3P`x_#^`}LiqU^SzLj4Aa_a=ChE zaf<$r?Ij(NJq0M*WidFk40}JDuq3lc`u4Mb*P|&$uQP(F^-E7T!fU_@Iv8rV(*5D8 zSt&(dn71tHaaVzq|+<)A#X^Q_!L4^#SNA|umc5Jq1 z`c`Ki@TD7Z`)e%sc7lCAE!s_aOFb!h(ccEm_*9RvLQm5+9O4d4(}85fI0d-U7y(E; zfG73J9jeUbE6cW^soAJ4iCNTY?YA|D$F&|5c~YAfp`g{Z{zuy2dCI04hf#(%$8jP1 zVx_OHd_R%$${C7=X9dyK5v5&OGKto^H$77IlN?OPE}0CwR6rl)UMHG zWT5jb7`S;Z!p3|yfPBk^2$&{7*nU4#1%M@+p1rttreQY8dMkHVJ|hw%$wau%!qE5u zK@0x;?Pw?(z*)Xufp!>9J@mvFndzA0L$?av-gGt6f*C8vozQY*^U2 z6DY&old`CHGK%&$K*>p&I9|N2#6?6GPk>Y;a&0x0Ct^2DL^I0dI@BZw!Qe_ zMP_~_s@+QQe0IUp5!@LJmjSTnFl}Sw#9K;h?%llSH#U?^{0hm*yU_L`;MRsbF&x-f zSNxCDo0NLu9*B7-HhNG(s*C}0K}uXCcaL9iHqL9duGs$w)-;nL#ngRt{j}(g?@&_m ztOl#@t*)}=>!~w9+~pxtMI-ceID?N+9X03qrmgEenf^k4$j*X!O5 z@-h;_qoq3+p8jR;GxBH{Zi;t$Uk71S;0QHu>@~O=H}GIi zyaRBEc9tsrPiPvr8GWr5rpLPKR+O|yAhsy&InQ$~IOvx&GEW|X8Aj!NE7pP;T`~Dx z1Tch`G^z1IN{4G;C(2sw{r2YIkQ}HX=Ka;5GA-|+h)cqQ_a?Hn!I%v|s)XOsB7GN@ymm{CF)Vksnp#4G@> zk{YxunF$eXP9zjS!sFTA*vB1=82E3ciH}mqw(Qn_d%ZWZ)gR~cer1Ym>Di$|s^~1Q z!_hr6bN;`VO5qj>k(zc_2B%w%Fg?tO=P0R`ISAE8!JTJ5BtvoPt7#l^K6%Rkdj>c# z`5UQ8UvS#^TR7u$S<1}wt0i2ROQnAME&ALI2zzQ?PQq1~*!D11QraI$K=R=dPto%y zd05TRSu!L@gtOS5y^Ytng86}@)F;;$e>0=a`Hl9IW^@HLRG=aV=hqUnAQf`VxwR57 zVw8Ry@kze2Yma2P&-Kv+gHO1u2;(Y@4kgF6C}%ICT&gaWv)|ksp8sb~h(DUxLaDCW zE!WB#PVN>#!T*SeMaZz|)d5I`cNuXpqrz~mROFByd)u3eDJ0aT2tq*B%c32DX~dl% zM(#5^fs`1_m(fFUT)RMm^c#90Y%W^=bc!>)erO(A6`^z-cTF=U;>uUQVET!k7gu2t ze!{fieF6tANS{ZohJ$oV`) zBP?eU3C+1fsGmYdn$I8A>JIYKVB$q8Id~J^WEb^N^i`fejeHIpa)oQkuzu%(>#-y+ z$ED}{&f;n^x+R@W-NI$0$HYdS#WVf{!ekCEl@$Q#lGC%xRR1H!=3Gn$tU?y18P5iY zQD@D^ig_@L`!-SG)35JtuMZPC5EH+R0ACN4-*G8g!_S8=8->D7hywiVVnT1I4b#Pn z%Z+qR0+6N`b6H zoyZ!P1#M$$VFD)ZT9f$ZVm1E@u;#{BxsMIIrldZ3&ohRVmNYoP>4m|fB!ukfeS8j& z9}e2zcdjmd9gbJrl=zijTA^Dj`84n3xCv^9Hg)b&>&Vr}iEp%ina967Vl|g2U_3lgr&^QXW zxJia$3;kkpJC)?$<>phNdlsybwQNmH^z)L;4Qe~zY#yzQ= z6;*bw;UJJ1n7-{0(g>OKB2($Hpwn8mUn^$nT6*gGO0l%1l$ zn=fCfVwc=jhfcbk8 zA1?uV5;M*d0}(QjyLMxpmUdq~-DRz-l}3P+J$`d0D!@EsX*zudQbb*uqzAf{qC?C_ zL{3(DFViz{Ciq8{9Kw;Zlm?a|M!a`kV$YOH{E8Bc38*q1EpBwWe3p(R`Q!GF2U3z* zz=@IDb*GX=;3)!@TyaJkRqJczQP#i!Pvw>tgxwtcS#FWt83_S^M;;a(-v%(i zflRt9-+ns+&!{K=enx4aKcC*Q+QTeLmS+3f)xa_zD(Y(iSvGG#XiLJDnm<`Kmw+rA z!>=JT5OBfR|A&#aNE;ar%Oli-oZsN9P5I%PS)Py<*LTmm5Z=Aiy!Ra=H40k$6_S9e z?T&(5+1^bT8ut$tC$3~ul@WQf7cMXAN?U(J+6&TlepK6Q299bYzyXZFXawz908<7J zg%zF$0bo;pD}v8wK^U2ruLV~8DP>gc}{vp_<`Uo}!QYW(Lg zCZvaVv*ftvA?2-r6I6gFtE^5n&ES$HwZR{i-Ts@HhXhF!5BB^gA4ivas;dbil{0a{ z$>R;t_!n1eVd35Z`~JMF|666+CRzz!tgdUkF+l12RVd}{`jeaNRC5N9*U{tWsX3X# zwhga{^;Uv=V%M&F<(&zb{yAA8<-5>)4haXdBHN`e1z1if6A&@wpA_%7;D#;-aZab zqAr<~hF@MTGye|Zr=d{!UVh$BK3U^Nm}tQc7gOf7}F2xD25RHk+dqe{P`_ok(LXE;M7k;z(>|Mb4W&NZMPv zPajAQHEdfRXuR<#=d%X*Z&6iFfX^>w01;f1(Y5G%LJQur)*tkNEYPZ*&o>^8pFI%5 z-aaj~y8*~w;sm(=zH|yAL68Or`FzM8S?BzEw9l)zLm)Q4Ly*PuDtP3Fp=(Oui~}=0 zie{34($w~WpUi?87~G^6d^*-5B>8lbn77|;;= zeKT4DnbC#6TyJVI$>^mp4e={>FRGExjX16IGp=x!w6pl9qnx8pB(~#XSYzv9Jr0MA zBXeSSZ~GH(%MBucU__M;W68_R`zoH7x91U#AT*bZZc{B<3;kdRy`)4^nyY-WRPrh9 z2dufS887YV$(yQJjW#E{*1D~KQtrG`qa#VyIb^JUm5`;J_r1SEb>0`M^e|u0ekSqw z#kWtpg3`BcUDp`b=9e0i>sMotoyDuuQdN2L9c>6+vl(>HtEC|(WV21)xl?tuu|I zp4VyzKb)7~1Q?~Fy)6~qeXyZRCnfb!c{39V6w_3=Nh(9YSFz14UMRgxglz;zVcXiZ zRtjE}SejxYg>HfYv1r8k9Cnvf5^n?u7%-|ft1$aq_n{5=xM~TL&^7>{Si+=^i1x2V z91nb?dRQR%vRiMuQ+Y=Fmgno+e^TYr5Rm{)hX1wVFvkWeFxA{FM{gL-k_vFUfHnn# zTl)W~Ib$dBewLN34K_1i1|GuGVBw#Ny@DhnWOHH76K3lMZVXI-dy>=kdw9rcSHHb_R6jtcc1i46-1^m27B>~(uT@o(l<9A(5XG128ddwj zoS+wjdHor36y*SG)B&fM3d)}K2UX+5eNe*mRF?jFK2H}{!9W_j^DpVX%ctE@(jryc zKlPWSACk4&ecfhj^scDCD>8yS6)TT)!{b{< zxHTF;IgkC=LIDaJA~uyIo)$uvp^B>_uM<T~_*WHcny?Yb>$9v@p9$JKMOT+fAp%%Q*`GK28-Vwg# zi)EP&{D^X>khrT?yjDVT8QF`S{(kuEN9 z`fHn`RkSfWwbqPXV2zW#n=rQZ`y%Xks$?j-7H z665%E^kGQHtH87n@@}B?8qhey^HsrIS3EVYsz5-o!Ofmh7kz~{K?kz_t)0b7m3I_o zle5&%5E)-*Gd#Rr*FE_;{p?d$;w!B>-hGf{Oy!eJoT}QZ+n0YPAXM}W1Uj`Jb-ah< zt}f9OWt&qp4L|m4=pOE|xBhsTr5=*-ad%{$+@Z}vx-;?h${ieslz0A|jF<;_n(`_MIT~+hhB&O27Lq8wMUuJfed8BsQ)5A2Im!^bkFGZ$l>cD5Na?$I)e+_}CjuTMdOphk0+Og9g`U@XccM zXj8iY4ka|RL>lEGmlpUn!7bT}#)dF5Ii`ER& z-V;h(H@?-`nU&EdipVj%l^ZE%Dt=$(RNt)rkZmo98OAl^J9VGVpR|V$4{=+kiKSE4 zqygzPi83?7rbpnFkhhl&E;S|-{Cr$fCv-cN#l225J+(HyOH%&iki9#z>Y4^Y_R=M( zE{5hi%vT&+vVR3fW%-Ifw)|v$Xmy%@$e@{3xv-yz23vA-)#UuM! zK!Mia|H(dOQpd;!h`#`VeS|R_yCnl&C?lhuR1<89X|X~vI~YCU_)@$WnhX4hGB_iF z*po3Mky%Bn*c&DzWd9Th*i?-o z6q=uf^Se=oL4U~RjD1S90jtsRM1R|VP{^T)y^axc^i&(77`q(&Z5{1d0v$Q~nPs8mfCjC-m=B7J116D!5lxm zd&^ilNF05uVn{rOwc6@;#QPPSy#ZrVYJPJxE?v*7jxEsf&4bPA;%g(tM0$NHW$qk> zlPynyo^}itRM-n*0z>p*VI=Emm7PlEXO5!Tx4@35`|{m8(y+Z;F{~{-I^=c=+1XhK z2;jX&t3kHcLm__5s7%2a+TJL@-3-OOCLA0!MmI0$I@~vq%4{EK6%Q9JE&w3_57Cb> zt{MELD}>SKC0L<(0I#qm=*Q6Adx{&yg`Nc|WORI(Bx+)bVx%^7akqkDxV8u4YJyU@ zI-;iknHixc1r+=gT+sx<4x5pCSOp<^+v@ElSGYfiC?7ZmE+gjhM;GkAjN3>r^c1V* zjA?*{Ky?_~WnJ0I8!?;JU&>JpDSW9~ya=$gI^F9N4^cnQ>lUd!FcHGq!OK6_fKcs$ zAx!?iSP6Ec9;XY%veqB#f7Od;?PE|l8hZ@}b3KKSl7CVqrzFwzKgn=Fax~=}8tC&+D8=kOoVh3h0MV8+WS+m{Fi|{Z-y0 z(>qmA+o8vE+T@LRFrOF8wN8VkD$%vzncF~R%*KgpD7W`Kn$??5Ho+<@CeScu;MN{H zX=>C`R$X6bTgtA8c#h?JdJ`JoiA-R5oUp&?fSq>hP*PmJueU>Mvs!Q!0?k4#4y8Uy5u`A0^#Hv#!5Rgo&NvLRs(bj$PrNJzqgTd}a_>T&UQQ=w+-) zc3EMBhT&wP5JJ3TGeB%?usOW{Jz~|LD=x`Si z(!&48h~Y23VEU}#pjS5udv=&D{oNP;D$28l_X40gS0AoIdF4*3q_~{_Sj;X39J{mS1|wv{C=O1$i!xHE^G4 zWBB;9qq6aqQH0D4p%Wy!XC(~Kw-}3!FyTAUBkt_U@ax6|!9JkKJLzU78Z3y|DV&b! zaCo4e;--|Jpk+?lpvF-c4-XC~bflA3#roF_?lr8wbC-~YI1*4LV-Vqv7jJW#Np|>e zqUJLji=^^`^sWKD_7BDiB~U9gchkR;Yb`PcCidH55m#Ug{*V`l18NHdb_}n$-4(>%gOmu=wcqu!03uM3{a#rTV6IOxgh`cA4w@xWm>;4 zd>YwQcm_#5e0EzKfhG%Jv1k~ljtU7G=E;22$t!}vSNT0e{3~BayKbx}jRujsKLbjn zR(w&gh@Ejru+~suGP;cfco{%GNMzu=MC&`4J!0G;y=9md_Cb`7COD^ z<;&Z4a6jg8AnCxNqn-%}UfeCcKP-ziZ{|E>FfTavL#b4oW1{S0mAeZ0A|nY?D*o|4 zFYGk+%rM{7;AAZfZu}0QWNQFPNWP!lVqoW1ZZdnESkzgIn>!4jK}Xf>-;kn!Q@^ zU#5lW|3_6Uah5Z+;k@`n4$>Jg_j--8?_R%}Qk&0*s=a~td4Y7kW3-z4G(re{(A-9& zNE0$Wt^)Jpc5x34D`1NoDH{ZM{odJgVc8KSLw8z$MKHD{X^;G2g}aa3@g}Z4IfCtD zKn&s8%qNo(LJ*`cW?~#6+P0_AQ3*$;R*+5^dnDD1skAz=Y!OTV`2dtXy{UA*r{~5# z4Rx0JsN-WKFpq%S5_WRZ7b2=v3##J?m-!B>C|vkh7vlThYo74wG2O;MN<2}hn*Sbc z@P|=+zCSWV?O;m8&QuPR(F>}p3<*J)OY4Iz@ct29Dy8SdcQie@#~o~nW=y!%KXUrs zJ(vhBG^Op+Mt%#dblXyMk3)BB;rR=yYp$`#yNSgQ4W+d@*QpogfVa>%z((XF3oFSo z`+a)8ou_YK|9e&8UVWMMAUs}s&1#NLGnev3=5xj$Tl6Bo#UG|Ad~XC8c$lWgireYI5q6LqduFNp9hZFFjP;X@1%hbxvM7JUZ;Ar&78=Zan{& zcK&1JD+kHJdU&KOmPVx7s3VCCfQnFPK?|X3o+Wt-qeC$%s%-AUugk|9lqWb$(`pH%|LSf5) z5s?JDYT~wCm44IVEoD?_(u+$TXqz@S*lp4qI|EWm?KofF`8Ar;Rey7P#Br!|!s ztW8UDXG8%I5DJagXq>yg227!3}o0;QEFd48JS!!m9;dOhVHn*Q$e&H5u_~wHNMhFi73F>?#7;RPqHD zNYs5dYTr)o^@Hvl0}mg;U>4^lPF%*h2v3=612^qfU?{I#CFjzR2TOY1`#tx6oxnPY z1(vuWRj_gi{5o0dJe@4~R?5tcfrpCObKV6bbnU)`-xKJ7dx7Yam{2V*a8}lA_Avf> zSdte_vS5Rn`xJqXRY}2hshG1+S1tJ1=rUF4a6Uf&F=ZvumPGtZ0@E)<^e_?9I4=k` z7_?g4s@!LiMAh2j{OWhw`%wV5Df&YVIO-gKMTRCq+4z!uGhs9l$ubjA3dbmgyH5uC z?-h0-I4@jL-0mpm(!NQ|?K=Mfu#Xo_Jmme`)Ec2OMsMi(xXrn;HP~508@+U$trs#Q zq#RAU%nor0{@>ez>syD1iu}`E2VCdhE>7!=-H<3c7g4nzvx+UQwA~EfW)e_M`Aqx` zlWn_bO|dvC0>|mD+WyBXYT+JGK{s%-%KG1#=HzH2{n;qdXDC5rF&v;pD3Gtq8C&(~ zm$M~s?nqVXA9Z9v!u?ca!yhpfUj)7A6WC6xK`Sp@VoJj0p^Kfk!w^6CuQiT%bQ(0& zzY`pGw&68CFEAWIadD5>SqJ>?@v{%gEgn;B`xJlC&r$23wMYEI^tcuFIEUn+ahcg9 zt5p4_u7MnD4rQoEkhS7mC{XK5VNojO5si3RAV((fhRwGnsHGC~3^VjN(R%Re-Q3_JO{VXTP8}QHb4X}OFr)dp% zjekIeQG~N9vnlaQUnD-f;Olp-!%PG>9WXu&SAr*TXg7ZPC`p$yP7(F*@RjDg)~fJu zHuj;KqOFW%cme-0ry9fdjr=RNKq#pmP8#>zo?j8fPe zPZTfEi_B)aL~h9ehEb^Q8){V?y%e7Z_MV_D*iUgFp6FG@*$*uCF%Q)wXrx#Nn)N}7 zW-7v(UR&q(e16FoZ%!cPYb__*5YrE-0Ff5XZ7Q-94B4uvzy3b zLjbOq+& z1w*Nak#)7?#wqcpJzv|{EV(Ak8wLLSh0am{J6T9Fr`a^SOR8;{r!X}Hgvg=S;9P&# ztb$v_CHzE;E~Moqe|tRIl)l~WCvb|Q7x)^L)a^j7%FxszVupx@i=O}Bs>V){=^lQ4 zC^O;RjO282{WmV^J0)MjQIShtpWj8~nwo_2GNm&OXo3q6^7B<&K)yl)S4?tB$?qD$wfW z!NCXAPm(-AK*}yp>sQDCR_|RhxcDcFKBdURYm;V~gx;%T=&i8Bt+zqAK~-z4;Mb@* zx$10?Yj_YXxNXqs1Z6&a)#D_J`NjDJC#^MG!}N^c_n7$t6;u zW#}&0RmH0h_?-}75aa~91^iMpq{ESU<*HNz*j6q+z!>kr99>e{jY_I?BG6+-xv+kq zZV2%!%aV&AsnHR6b9Gf1`vv5uSfTEOU*a z_BU@u5uvRTyGs!cbq%~$%2a1+t1laO!5@K(jz1!TLo`ReV;$0Rm%3uI?bkgjzZGrs| zV=7m?f@jzwP%8MextO5Ucoyh3=*I6K27NNQ`Cucb%gp~~(Qm2B;|f@K@hc zvLJjwlOTWG;>W{7-@4kg$7OqCZ3(`Rk$thM^U?_W#+PjiDX}cIh()c@y}7DRM6KGD zVRF;$7n`?e*3#yBGZ5V)dxCA1fyD>k!bvbeEPHO#=-Bm8M>2lma#QK;_17EiWZpK$ zA$+!pL%z603tCKg@z1?b2Knso1L-5JY=v@nNEWHF_ZN>tt?m8lY8q$}Tbv)p?aMGK zF44(>5}%UaX-*aRI4n)e8#fpTWWVTH5VTb*f`^pt$r>LnWrVZt{_V(6pz2f>#rex; ztT=A1bk!90MBo*FVv`T)BvzXsK6$e{txu&DH9wSDAL9r20&)HGsbR_}al1#`xSBXQ zr>>58DFkmDOBo5Teejx@B(Dco9J@Wqkvia%fjnv&d``6WlwF0E?WT+A-OfpOmz!*+ z>kIF%Ug48`hm-B|-nPk24de8h57+D5(X1V)y;GRC^>@;LFhTGW)gbfp^=nY$-F}DY z7L%_qX{Q2C9Sz7k--Fk~@)$HVabK3`?0p%Q{ir|UGW*V39PJq+E)uaHiJuBlovlXbG2U4=$nn}E!LI24^=n@W(&C-5Yq-ik4g$uxM%qTCj!^KcjMrsOcS2w1gtKOWqO%7qc^K$ZV z)blUO#*b=iEDn}GkC1E3_wd!Z2fn;YM-{eZQmbx3%qg++kw^712Dzw|lhWDK#7D)n$6n zp1;Z8El_VNy!l~&1paG+pw{*`X7-yQj>bN%)G3%Imo#R2wVR3_Ru8W;1&&WRt^gZpdwk*`X8(yNACM(O!c~m5NY?b0hYhG5g)LB+rL%%{`fF`vZ-dPzH zOH!yZ1*Qx=dmHyR$DH!P^l?La(+Xqim7AS z)CzAoK+~sqS#2Zyc=U^{`9<0K@01!)7w_8OsHZ$_e-xeo{tv_PQo3D9a$6Ub5}x3Q zqfi#pG-l?k&r&sx90)!!KM3*y&5L*HsiM6CX&Z1d-kmGKN-;GQ3e$4X$CeUqdK(l( zs^EC#8h`A8mIMbXo-`P9h>r=Z^MA(kEKFJD?n3+znyb0*Zz_3o*|nEM1B~~m4`Ue=07bqg+q1CR-_7U4DSG%Z+fdaR zp(qk1Q+#;n*^lQW!$&|Y&%?PoR~s52?m|(U3=+vk=}T z3V>amg=uD3C{?nVw>w29yHF~{(L`khbSS7~e3g}Kh{3;gKYVPR^EMj+=Ao=6diE|D zQYl(Z;p<>^IQKwr1?|qp@?MxI!k8T_c5Z5Ogq?`iMp%88`StOb+*uj_6*AE6&!xt)rXzv-IBYP zeey*`&6@dS;$Ye9=ikKcXnHrL3rz0a7!?o~1n)8PuiYlIowPG}E$GB0T_!u#Mj95u zAzRbo_u8gG>`!6?L>U%MVzvqPb{#0`Y!AEFbJ!4)ymV6`W9mF4s<)y1d6D>~s}_sh z-jPuJCYM$Kx95*^7b(+-twC6b!r2k0RHOG*o{=}~e=rW=$YT^#yr5NT6!ehO==+LJ zsW>ffYZkJSF>l&+ENki7R}Q8zm0S<@yX#n z+Z~n~&1K*WCMH}Mx!TLyMCf&1KO3}TMNbx+t}RkG|FSlUSx6KqB^Zp?Jo3E>wvJ6VFHSxr@*)Ry91wWmAW$%Fa*MFa7jP^h8aW4l)Ez8TH8RtEazEw}EtE=r)8jH-Cq8(dQhZ%CABp{^ zjxT~^vMtz%JU%)=bqkb%+sNiTzRwa>vijJ@3%XLIKI`EP?R=8 z&BZ3%U8--G`O&kzex!zz--~#lgbVO*D)Jx|pFWr9{`7L6tZqJj9D2r@RC022A&MVj z?)ZCvs`*Y0t7yAo`lSV*^q||OIMz^{Ah8oSJ)cEYPRZiM#-Cn+4`RDD*~;6L+G}u` zNaOmFa{=+-!LFS-@Ju`Oa-v9|iA@gRWy29PZe{;_;LL$bE z_}^hOFR;eub?CHIcIOSkpXU?(6zP2>n)xJ|w# z?9d|WoG|c8`RAF^*@bUgMCo%8C2+AK(-Xm-8yw+vrt*K6#pycXG3>X(g!s&9%TLLc z8GL=QXF0$0#g!ibQ!BLm67JxnPVGKuMD@-%YU)H4|2%miWc?;^jjclYgHUqUllQ7RHIW zV@bXXt0@)P7ZCK(sDO4lB2}^Y`;c@#$Kw1%vNSyc8GdJd~uTRyD9#GDhwMMfBFL;Jgg%jq;n_wsEJGBXs{Z z2I_XU91<2{2L$<_R=&IaBOuAIksmmI20M-_IqfT*GgR)29yq0JVn5wr86owR{aY1B z1ASR+v;(^6-kMw(w=DJaRSW)lT;Kv&*j~`p>T*TB3fSD1O$0{_NI%PJ_>6yZcLFG8 z^FjFJ$@O0?R1(`{z~6#2zo zLp1ha!y^67k+Uu!No*1RObjAKKQ}~5{Kg~=J2fVIky&3v7q(iS-fa4I**f17V?5Nm zZ~FE+7ytiIMtwrP8FX{i8KXGACwh7pIMdOmC)@>s(qMBZG*Q6MqS>p-7@6Ris{+Wf z3_xM#(h0=dVQ{c?0s%t=DoVy_WnKl-`w@=0M{GxIqy*FY!{c*VKfZa6KkDfr0{+zD Lw_*7=O@00kz&{EN literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/no_command_text.png b/res-xhdpi/images/no_command_text.png new file mode 100644 index 0000000000000000000000000000000000000000..eb34e94b339577fe43dff9adb709212baa8cf117 GIT binary patch literal 37222 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 literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/progress_empty.png b/res-xhdpi/images/progress_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..429797bf0d8ad5fe4983bb840b61653a3cbe1759 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoIT)FNu-E{~^+ gV@L&K@&YaiRt8272F74Mb&zTXPgg&ebxsLQ0E0XbZU6uP literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/stage_empty.png b/res-xhdpi/images/stage_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..251ec19699ff537238e73c77d2c74164d210eba9 GIT binary patch literal 322 zcmV-I0lof-P) z33IU0c82o6b`c}S2y};gR$LmEq>gp(LjgmqF9s-f)CJm@q=n0lx<*4WM&P=m8mMEE z8k+Yd3da=TE0U}zrJ`XpZK-H}#S_y!WX-rx3?ze9i~s-t07*qoM6N<$f_lY@HUIzs literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/stage_fill.png b/res-xhdpi/images/stage_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab79e862825cc24bfb41a9915afcc3f8dcabe92 GIT binary patch literal 258 zcmV+d0sa1oP)3dQn@EfmKq?t29|7;t^y zk%3YIfk9#kgdg}~$VUd+1=5s|)`v7$q>UrP0vSor;CuKv7kJ0j6DG}uV*mgE07*qo IM6N<$f=|0=$N&HU literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/erasing_text.png b/res-xxhdpi/images/erasing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..c87fd52b4b6279c9470224c53fb35e3ae5de1e83 GIT binary patch literal 52598 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 EAFH;g6aWAK literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/error_text.png b/res-xxhdpi/images/error_text.png new file mode 100644 index 0000000000000000000000000000000000000000..486e951df4c8b8fcef77de119f5d6e85f877fe6e GIT binary patch literal 27839 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 z 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 literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/installing_text.png b/res-xxhdpi/images/installing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6e8f3f0d46e21b9c1677830bd6760ffeef6f48 GIT binary patch literal 133331 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 literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/progress_empty.png b/res-xxhdpi/images/progress_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..57c8235874c46d05324ff5c86bbc0d6b43da7fd8 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yV0-{%^Dr_4$%fZ|W&6c=P8Skjv-k k;uuoFm@Kg@L8OO?f$0td<7_wEG@uNFr>mdKI;Vst0IgpakN^Mx literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/progress_fill.png b/res-xxhdpi/images/progress_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..0f36f48c243847b71f78b77d958a8f74e1fa161b GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yV0-{%^Dr_4$%fZ|W&tz&UUj+1IjRXy85}Sb4q9e05ujAxc~qF literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/stage_empty.png b/res-xxhdpi/images/stage_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..251ec19699ff537238e73c77d2c74164d210eba9 GIT binary patch literal 322 zcmV-I0lof-P) z33IU0c82o6b`c}S2y};gR$LmEq>gp(LjgmqF9s-f)CJm@q=n0lx<*4WM&P=m8mMEE z8k+Yd3da=TE0U}zrJ`XpZK-H}#S_y!WX-rx3?ze9i~s-t07*qoM6N<$f_lY@HUIzs literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/stage_fill.png b/res-xxhdpi/images/stage_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab79e862825cc24bfb41a9915afcc3f8dcabe92 GIT binary patch literal 258 zcmV+d0sa1oP)3dQn@EfmKq?t29|7;t^y zk%3YIfk9#kgdg}~$VUd+1=5s|)`v7$q>UrP0vSor;CuKv7kJ0j6DG}uV*mgE07*qo IM6N<$f=|0=$N&HU literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/erasing_text.png b/res-xxxhdpi/images/erasing_text.png new file mode 100644 index 0000000000000000000000000000000000000000..612e7a390d12b6e69a2603fa9709cd2e0607cdac GIT binary patch literal 85500 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 XI-TU)q>E00z#l7fj9Kv>&ny2AQc9#D literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/error_text.png b/res-xxxhdpi/images/error_text.png new file mode 100644 index 0000000000000000000000000000000000000000..50d2fadb5925bd66f87d47c9a6f516863b314cf1 GIT binary patch literal 40216 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