diff --git a/core/java/android/os/incremental/IncrementalFileStorages.java b/core/java/android/os/incremental/IncrementalFileStorages.java index 3f8c0fedc7a66..ab224a2c0b51b 100644 --- a/core/java/android/os/incremental/IncrementalFileStorages.java +++ b/core/java/android/os/incremental/IncrementalFileStorages.java @@ -101,8 +101,7 @@ public final class IncrementalFileStorages { } catch (IOException e) { // TODO(b/146080380): add incremental-specific error code throw new IOException( - "Failed to add file to IncFS: " + file.getName() + ", reason: " - + e.getMessage(), e.getCause()); + "Failed to add file to IncFS: " + file.getName() + ", reason: ", e); } } else { throw new IOException("Unknown file location: " + file.getLocation()); @@ -117,6 +116,7 @@ public final class IncrementalFileStorages { return result; } catch (IOException e) { + Slog.e(TAG, "Failed to initialize Incremental file storages. Cleaning up...", e); if (result != null) { result.cleanUp(); } diff --git a/core/java/android/os/incremental/IncrementalStorage.java b/core/java/android/os/incremental/IncrementalStorage.java index dea495bf93277..bf31bc206278e 100644 --- a/core/java/android/os/incremental/IncrementalStorage.java +++ b/core/java/android/os/incremental/IncrementalStorage.java @@ -424,14 +424,18 @@ public final class IncrementalStorage { */ private static IncrementalSignature parseV4Signature(@Nullable byte[] v4signatureBytes) throws IOException { - if (v4signatureBytes == null) { + if (v4signatureBytes == null || v4signatureBytes.length == 0) { return null; } final V4Signature signature; try (DataInputStream input = new DataInputStream( new ByteArrayInputStream(v4signatureBytes))) { - signature = V4Signature.readFrom(input); + try { + signature = V4Signature.readFrom(input); + } catch (IOException e) { + throw new IOException("Failed to read v4 signature:", e); + } } if (!signature.isVersionSupported()) { diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp index f445aa8107533..0487028e7cbca 100644 --- a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp +++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp @@ -16,22 +16,17 @@ #define ATRACE_TAG ATRACE_TAG_ADB #define LOG_TAG "PackageManagerShellCommandDataLoader-jni" -#include - #include +#include #include #include +#include #include +#include +#include #include #include -#include - -#include -#include - -#include "dataloader.h" - #include #include #include @@ -40,6 +35,8 @@ #include #include +#include "dataloader.h" + namespace android { namespace { @@ -681,7 +678,7 @@ private: auto& writeFd = writeFds[fileIdx]; if (writeFd < 0) { - writeFd = this->mIfs->openWrite(fileId); + writeFd.reset(this->mIfs->openWrite(fileId)); if (writeFd < 0) { ALOGE("Failed to open file %d for writing (%d). Aboring.", header.fileIdx, -writeFd);