From 63bc9a2e42959f78432226fce7234b3664e8b909 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 14 Jul 2023 12:57:23 +0200 Subject: [PATCH] IosDeployStep: Add return value to checkProvisioningProfile() Change-Id: If5829daae851a4af06bcff7dcd60ecd6004b5bdb Reviewed-by: Qt CI Bot Reviewed-by: Eike Ziller --- src/plugins/ios/iosdeploystep.cpp | 43 ++++++++++++++++--------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/plugins/ios/iosdeploystep.cpp b/src/plugins/ios/iosdeploystep.cpp index 764cb907f23..b77345c5b52 100644 --- a/src/plugins/ios/iosdeploystep.cpp +++ b/src/plugins/ios/iosdeploystep.cpp @@ -137,7 +137,7 @@ private: IosSimulator::ConstPtr iossimulator() const; QString deviceId() const; - void checkProvisioningProfile(); + bool checkProvisioningProfile(); TransferStatus m_transferStatus = NoTransfer; IosToolHandler *m_toolHandler = nullptr; @@ -207,7 +207,7 @@ void IosDeployStep::doRun() this, &IosDeployStep::handleFinished); connect(m_toolHandler, &IosToolHandler::errorMsg, this, &IosDeployStep::handleErrorMsg); - checkProvisioningProfile(); + m_expectFail = !checkProvisioningProfile(); m_toolHandler->requestTransferApp(m_bundlePath, m_deviceType.identifier); } @@ -297,53 +297,54 @@ QString IosDeployStep::deviceId() const return iosdevice()->uniqueDeviceID(); } -void IosDeployStep::checkProvisioningProfile() +bool IosDeployStep::checkProvisioningProfile() { IosDevice::ConstPtr device = iosdevice(); if (device.isNull()) - return; + return true; const FilePath provisioningFilePath = m_bundlePath.pathAppended("embedded.mobileprovision"); - // the file is a signed plist stored in DER format // we simply search for start and end of the plist instead of decoding the DER payload if (!provisioningFilePath.exists()) - return; + return true; + QFile provisionFile(provisioningFilePath.toString()); if (!provisionFile.open(QIODevice::ReadOnly)) - return; - QByteArray provisionData = provisionFile.readAll(); - int start = provisionData.indexOf(""); + return true; + + const QByteArray provisionData = provisionFile.readAll(); + const int start = provisionData.indexOf(""); int end = provisionData.indexOf(""); if (start == -1 || end == -1) - return; - end += 8; + return true; + end += 8; TemporaryFile f("iosdeploy"); if (!f.open()) - return; + return true; + f.write(provisionData.mid(start, end - start)); f.flush(); - QSettings provisionPlist(f.fileName(), QSettings::NativeFormat); - + const QSettings provisionPlist(f.fileName(), QSettings::NativeFormat); if (!provisionPlist.contains(QLatin1String("ProvisionedDevices"))) - return; + return true; + const QStringList deviceIds = provisionPlist.value("ProvisionedDevices").toStringList(); const QString targetId = device->uniqueDeviceID(); for (const QString &deviceId : deviceIds) { if (deviceId == targetId) - return; + return true; } - m_expectFail = true; const QString provisioningProfile = provisionPlist.value(QLatin1String("Name")).toString(); const QString provisioningUid = provisionPlist.value(QLatin1String("UUID")).toString(); - CompileTask task(Task::Warning, + const CompileTask task(Task::Warning, Tr::tr("The provisioning profile \"%1\" (%2) used to sign the application " - "does not cover the device %3 (%4). Deployment to it will fail.") - .arg(provisioningProfile, provisioningUid, device->displayName(), - targetId)); + "does not cover the device %3 (%4). Deployment to it will fail.") + .arg(provisioningProfile, provisioningUid, device->displayName(), targetId)); emit addTask(task); + return false; } IosDevice::ConstPtr IosDeployStep::iosdevice() const