/* * Copyright (C) 2015 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. */ /* * Read configuration files in the OTA package to determine which files, if any, will trigger errors. * * OTA packages can be modified to trigger errors by adding a top-level * directory called .libotafault, which may optionally contain up to three * files called READ, WRITE, and FSYNC. Each one of these optional files * contains the name of a single file on the device disk which will cause * an IO error on the first call of the appropriate I/O action to that file. * * Example: * ota.zip * <normal package contents> * .libotafault * WRITE * * If the contents of the file WRITE were /system/build.prop, the first write * action to /system/build.prop would fail with EIO. Note that READ and * FSYNC files are absent, so these actions will not cause an error. */ #ifndef _UPDATER_OTA_IO_CFG_H_ #define _UPDATER_OTA_IO_CFG_H_ #include <string> #include <stdbool.h> #include "minzip/Zip.h" #define OTAIO_BASE_DIR ".libotafault" #define OTAIO_READ "READ" #define OTAIO_WRITE "WRITE" #define OTAIO_FSYNC "FSYNC" #define OTAIO_CACHE "CACHE" /* * Initialize libotafault by providing a reference to the OTA package. */ void ota_io_init(ZipArchive* za); /* * Return true if a config file is present for the given IO type. */ bool should_fault_inject(const char* io_type); /* * Return true if an EIO should occur on the next hit to /cache/saved.file * instead of the next hit to the specified file. */ bool should_hit_cache(); /* * Return the name of the file that should cause an error for the * given IO type. */ std::string fault_fname(const char* io_type); #endif