diff options
author | Nathan Yee <ny.nathan.yee@gmail.com> | 2015-07-03 11:09:48 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2015-07-03 13:49:20 +0200 |
commit | ba1d870abf1b12fd4ac4ba353d39d20bc9bb3a0e (patch) | |
tree | ee65280c6c4c019b1fb940dc71c06cc2282a45d5 /onlineupdate | |
parent | 05806f4603476dd150af7770543fea749cc6d10c (diff) |
online update: Remove unneeded files.
Change-Id: Id69448d893f7492e7321c6c6f84d6cccc9024220
Diffstat (limited to 'onlineupdate')
-rw-r--r-- | onlineupdate/README | 4 | ||||
-rw-r--r-- | onlineupdate/source/libmar/sign/moz.build | 24 | ||||
-rw-r--r-- | onlineupdate/source/libmar/src/moz.build | 30 | ||||
-rw-r--r-- | onlineupdate/source/libmar/tool/moz.build | 58 | ||||
-rw-r--r-- | onlineupdate/source/libmar/verify/moz.build | 32 | ||||
-rw-r--r-- | onlineupdate/source/update/common/moz.build | 29 | ||||
-rw-r--r-- | onlineupdate/source/update/src/moz.build | 30 | ||||
-rw-r--r-- | onlineupdate/source/update/updater/automounter_gonk.cxx | 251 | ||||
-rw-r--r-- | onlineupdate/source/update/updater/automounter_gonk.h | 48 | ||||
-rw-r--r-- | onlineupdate/source/update/updater/moz.build | 13 |
10 files changed, 2 insertions, 517 deletions
diff --git a/onlineupdate/README b/onlineupdate/README index 74012d4059a3..539e04ceb03c 100644 --- a/onlineupdate/README +++ b/onlineupdate/README @@ -3,5 +3,5 @@ Online update implementation based on Mozilla's MAR format + update mechanism Parts of this code are copied from the mozilla repository, and adapted to LibreOffice needs: -firefox/modules/libmar -> online-update/source/libmar -firefox/toolkit/mozapps/update -> online-update/source/update +firefox/modules/libmar -> onlineupdate/source/libmar +firefox/toolkit/mozapps/update -> onlineupdate/source/update diff --git a/onlineupdate/source/libmar/sign/moz.build b/onlineupdate/source/libmar/sign/moz.build deleted file mode 100644 index d7b8d1f8b30f..000000000000 --- a/onlineupdate/source/libmar/sign/moz.build +++ /dev/null @@ -1,24 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -Library('signmar') - -UNIFIED_SOURCES += [ - 'mar_sign.c', - 'nss_secutil.c', -] - -FORCE_STATIC_LIB = True - -LOCAL_INCLUDES += [ - '../src', - '../verify', -] - -DEFINES['MAR_NSS'] = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True diff --git a/onlineupdate/source/libmar/src/moz.build b/onlineupdate/source/libmar/src/moz.build deleted file mode 100644 index 2d25e0849af1..000000000000 --- a/onlineupdate/source/libmar/src/moz.build +++ /dev/null @@ -1,30 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -EXPORTS += [ - 'mar.h', - 'mar_cmdline.h', -] - -HOST_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] -HostLibrary('hostmar') - -Library('mar') - -UNIFIED_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] - -FORCE_STATIC_LIB = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True diff --git a/onlineupdate/source/libmar/tool/moz.build b/onlineupdate/source/libmar/tool/moz.build deleted file mode 100644 index 7cb27da298dc..000000000000 --- a/onlineupdate/source/libmar/tool/moz.build +++ /dev/null @@ -1,58 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -HOST_SOURCES += [ - 'mar.c', -] - -HostProgram('mar') - -HOST_USE_LIBS += [ - 'hostmar', -] - -if CONFIG['MOZ_ENABLE_SIGNMAR']: - Program('signmar') - - SOURCES += HOST_SOURCES - - USE_LIBS += [ - 'mar', - 'signmar', - 'verifymar', - ] - -for var in ('MAR_CHANNEL_ID', 'MOZ_APP_VERSION'): - DEFINES[var] = '"%s"' % CONFIG[var] - -if CONFIG['MOZ_ENABLE_SIGNMAR']: - USE_LIBS += [ - 'nspr', - 'nss', - ] -else: - DEFINES['NO_SIGN_VERIFY'] = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True - - OS_LIBS += [ - 'ws2_32', - ] - if CONFIG['MOZ_ENABLE_SIGNMAR']: - OS_LIBS += [ - 'crypt32', - 'advapi32', - ] -elif CONFIG['OS_ARCH'] == 'Darwin': - OS_LIBS += [ - '-framework Security', - ] - -if CONFIG['HOST_OS_ARCH'] == 'WINNT': - HOST_OS_LIBS += [ - 'ws2_32', - ] diff --git a/onlineupdate/source/libmar/verify/moz.build b/onlineupdate/source/libmar/verify/moz.build deleted file mode 100644 index 7a6a14227300..000000000000 --- a/onlineupdate/source/libmar/verify/moz.build +++ /dev/null @@ -1,32 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -Library('verifymar') - -UNIFIED_SOURCES += [ - 'cryptox.c', - 'mar_verify.c', -] - -FORCE_STATIC_LIB = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True -elif CONFIG['OS_ARCH'] == 'Darwin': - UNIFIED_SOURCES += [ - 'MacVerifyCrypto.cpp', - ] - OS_LIBS += [ - '-framework Security', - ] -else: - DEFINES['MAR_NSS'] = True - LOCAL_INCLUDES += ['../sign'] - -LOCAL_INCLUDES += [ - '../src', -] - diff --git a/onlineupdate/source/update/common/moz.build b/onlineupdate/source/update/common/moz.build deleted file mode 100644 index 044433696efc..000000000000 --- a/onlineupdate/source/update/common/moz.build +++ /dev/null @@ -1,29 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -EXPORTS += [ - 'readstrings.h', - 'updatedefines.h', - 'updatelogging.h', -] - -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': - EXPORTS += [ - 'pathhash.h', - 'uachelper.h', - 'updatehelper.cpp', - 'updatehelper.h', - ] - -Library('updatecommon') - -srcdir = '.' - -include('sources.mozbuild') - -FINAL_LIBRARY = 'xul' - -FAIL_ON_WARNINGS = True diff --git a/onlineupdate/source/update/src/moz.build b/onlineupdate/source/update/src/moz.build deleted file mode 100644 index 2d25e0849af1..000000000000 --- a/onlineupdate/source/update/src/moz.build +++ /dev/null @@ -1,30 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -EXPORTS += [ - 'mar.h', - 'mar_cmdline.h', -] - -HOST_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] -HostLibrary('hostmar') - -Library('mar') - -UNIFIED_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] - -FORCE_STATIC_LIB = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True diff --git a/onlineupdate/source/update/updater/automounter_gonk.cxx b/onlineupdate/source/update/updater/automounter_gonk.cxx deleted file mode 100644 index 3dff2a1337a1..000000000000 --- a/onlineupdate/source/update/updater/automounter_gonk.cxx +++ /dev/null @@ -1,251 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include <android/log.h> -#include <cutils/android_reboot.h> -#include <errno.h> -#include <stdlib.h> -#include <sys/mount.h> -#include <sys/reboot.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> - -#include "automounter_gonk.h" -#include "updatedefines.h" -#include "updatelogging.h" - -#define LOG_TAG "GonkAutoMounter" - -#define GONK_LOG(level, format, ...) \ - LOG((LOG_TAG ": " format "\n", ##__VA_ARGS__)); \ - __android_log_print(level, LOG_TAG, format, ##__VA_ARGS__) - -#define LOGI(format, ...) GONK_LOG(ANDROID_LOG_INFO, format, ##__VA_ARGS__) -#define LOGE(format, ...) GONK_LOG(ANDROID_LOG_ERROR, format, ##__VA_ARGS__) - -const char *kGonkMountsPath = "/proc/mounts"; -const char *kGonkSystemPath = "/system"; - -GonkAutoMounter::GonkAutoMounter() : mDevice(nullptr), mAccess(Unknown) -{ - if (!RemountSystem(ReadWrite)) { - LOGE("Could not remount %s as read-write.", kGonkSystemPath); - } -} - -GonkAutoMounter::~GonkAutoMounter() -{ - bool result = RemountSystem(ReadOnly); - free(mDevice); - - if (!result) { - // Don't take any chances when remounting as read-only fails, just reboot. - Reboot(); - } -} - -void -GonkAutoMounter::Reboot() -{ - // The android_reboot wrapper provides more safety, doing fancier read-only - // remounting and attempting to sync() the filesystem first. If this fails - // our only hope is to force a reboot directly without these protections. - // For more, see system/core/libcutils/android_reboot.c - LOGE("Could not remount %s as read-only, forcing a system reboot.", - kGonkSystemPath); - LogFlush(); - - if (android_reboot(ANDROID_RB_RESTART, 0, nullptr) != 0) { - LOGE("Safe system reboot failed, attempting to force"); - LogFlush(); - - if (reboot(RB_AUTOBOOT) != 0) { - LOGE("CRITICAL: Failed to force restart"); - } - } -} - -static const char * -MountAccessToString(MountAccess access) -{ - switch (access) { - case ReadOnly: return "read-only"; - case ReadWrite: return "read-write"; - default: return "unknown"; - } -} - -bool -GonkAutoMounter::RemountSystem(MountAccess access) -{ - if (!UpdateMountStatus()) { - return false; - } - - if (mAccess == access) { - return true; - } - - unsigned long flags = MS_REMOUNT; - if (access == ReadOnly) { - flags |= MS_RDONLY; - // Give the system a chance to flush file buffers - sync(); - } - - if (!MountSystem(flags)) { - return false; - } - - // Check status again to verify /system has been properly remounted - if (!UpdateMountStatus()) { - return false; - } - - if (mAccess != access) { - LOGE("Updated mount status %s should be %s", - MountAccessToString(mAccess), - MountAccessToString(access)); - return false; - } - - return true; -} - -bool -GonkAutoMounter::UpdateMountStatus() -{ - FILE *mountsFile = NS_tfopen(kGonkMountsPath, "r"); - - if (mountsFile == nullptr) { - LOGE("Error opening %s: %s", kGonkMountsPath, strerror(errno)); - return false; - } - - // /proc/mounts returns a 0 size from fstat, so we use the same - // pre-allocated buffer size that ADB does here - const int mountsMaxSize = 4096; - char mountData[mountsMaxSize]; - size_t read = fread(mountData, 1, mountsMaxSize - 1, mountsFile); - mountData[read + 1] = '\0'; - - if (ferror(mountsFile)) { - LOGE("Error reading %s, %s", kGonkMountsPath, strerror(errno)); - fclose(mountsFile); - return false; - } - - char *token, *tokenContext; - bool foundSystem = false; - - for (token = strtok_r(mountData, "\n", &tokenContext); - token; - token = strtok_r(nullptr, "\n", &tokenContext)) - { - if (ProcessMount(token)) { - foundSystem = true; - break; - } - } - - fclose(mountsFile); - - if (!foundSystem) { - LOGE("Couldn't find %s mount in %s", kGonkSystemPath, kGonkMountsPath); - } - return foundSystem; -} - -bool -GonkAutoMounter::ProcessMount(const char *mount) -{ - const int strSize = 256; - char mountDev[strSize]; - char mountDir[strSize]; - char mountAccess[strSize]; - - int rv = sscanf(mount, "%255s %255s %*s %255s %*d %*d\n", - mountDev, mountDir, mountAccess); - mountDev[strSize - 1] = '\0'; - mountDir[strSize - 1] = '\0'; - mountAccess[strSize - 1] = '\0'; - - if (rv != 3) { - return false; - } - - if (strcmp(kGonkSystemPath, mountDir) != 0) { - return false; - } - - free(mDevice); - mDevice = strdup(mountDev); - mAccess = Unknown; - - char *option, *optionContext; - for (option = strtok_r(mountAccess, ",", &optionContext); - option; - option = strtok_r(nullptr, ",", &optionContext)) - { - if (strcmp("ro", option) == 0) { - mAccess = ReadOnly; - break; - } else if (strcmp("rw", option) == 0) { - mAccess = ReadWrite; - break; - } - } - - return true; -} - -/* - * Mark the given block device as read-write or read-only, using the BLKROSET - * ioctl. - */ -static void SetBlockReadWriteStatus(const char *blockdev, bool setReadOnly) { - int fd; - int roMode = setReadOnly ? 1 : 0; - - fd = open(blockdev, O_RDONLY); - if (fd < 0) { - return; - } - - if (ioctl(fd, BLKROSET, &roMode) == -1) { - LOGE("Error setting read-only mode on %s to %s: %s", blockdev, - setReadOnly ? "true": "false", strerror(errno)); - } - close(fd); -} - - -bool -GonkAutoMounter::MountSystem(unsigned long flags) -{ - if (!mDevice) { - LOGE("No device was found for %s", kGonkSystemPath); - return false; - } - - // Without setting the block device ro mode to false, we get a permission - // denied error while trying to remount it in read-write. - SetBlockReadWriteStatus(mDevice, (flags & MS_RDONLY)); - - const char *readOnly = flags & MS_RDONLY ? "read-only" : "read-write"; - int result = mount(mDevice, kGonkSystemPath, "none", flags, nullptr); - - if (result != 0) { - LOGE("Error mounting %s as %s: %s", kGonkSystemPath, readOnly, - strerror(errno)); - return false; - } - - LOGI("Mounted %s partition as %s", kGonkSystemPath, readOnly); - return true; -} diff --git a/onlineupdate/source/update/updater/automounter_gonk.h b/onlineupdate/source/update/updater/automounter_gonk.h deleted file mode 100644 index 1300d39003aa..000000000000 --- a/onlineupdate/source/update/updater/automounter_gonk.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef AUTOMOUNTER_GONK_H__ -#define AUTOMOUNTER_GONK_H__ - -typedef enum { - ReadOnly, - ReadWrite, - Unknown -} MountAccess; - -/** - * This class will remount the /system partition as read-write in Gonk to allow - * the updater write access. Upon destruction, /system will be remounted back to - * read-only. If something causes /system to remain read-write, this class will - * reboot the device and allow the system to mount as read-only. - * - * Code inspired from AOSP system/core/adb/remount_service.c - */ -class GonkAutoMounter -{ -public: - GonkAutoMounter(); - ~GonkAutoMounter(); - - const MountAccess GetAccess() - { - return mAccess; - } - -private: - bool RemountSystem(MountAccess access); - bool ForceRemountReadOnly(); - bool UpdateMountStatus(); - bool ProcessMount(const char *mount); - bool MountSystem(unsigned long flags); - void Reboot(); - -private: - char *mDevice; - MountAccess mAccess; -}; - -#endif // AUTOMOUNTER_GONK_H__ diff --git a/onlineupdate/source/update/updater/moz.build b/onlineupdate/source/update/updater/moz.build deleted file mode 100644 index d5b1d5046062..000000000000 --- a/onlineupdate/source/update/updater/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -Program('updater') - -updater_rel_path = '' -include('updater-common.build') -if CONFIG['ENABLE_TESTS']: - DIRS += ['updater-xpcshell'] -FAIL_ON_WARNINGS = True |