From 70ff3c72f18585781990ad00ed70c6cfc51061aa Mon Sep 17 00:00:00 2001
From: shinyquagsire23 <mtinc2@gmail.com>
Date: Mon, 20 Nov 2017 20:45:21 -0700
Subject: [PATCH] Services/AM: Detect encrypted CIAs

---
 src/core/hle/service/am/am.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index b677ef6b4..da6acdd80 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -297,6 +297,14 @@ InstallStatus InstallCIA(const std::string& path,
         Service::AM::CIAFile installFile(
             Service::AM::GetTitleMediaType(container.GetTitleMetadata().GetTitleID()));
 
+        for (size_t i = 0; i < container.GetTitleMetadata().GetContentCount(); i++) {
+            if (container.GetTitleMetadata().GetContentTypeByIndex(i) &
+                FileSys::TMDContentTypeFlag::Encrypted) {
+                LOG_ERROR(Service_AM, "File %s is encrypted! Aborting...", path.c_str());
+                return InstallStatus::ErrorEncrypted;
+            }
+        }
+
         FileUtil::IOFile file(path, "rb");
         if (!file.IsOpen())
             return InstallStatus::ErrorFailedToOpenFile;