Skip to content

Commit 41dd7ea

Browse files
committed
fix: not compare the arch during install layer/uab
- Log:
1 parent ca6551e commit 41dd7ea

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

libs/linglong/src/linglong/package_manager/package_manager.cpp

+22-5
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,20 @@ QVariantMap PackageManager::installFromLayer(const QDBusUnixFileDescriptor &fd)
180180
}
181181

182182
const auto &packageInfo = *packageInfoRet;
183+
184+
auto architectureRet = package::Architecture::parse(packageInfo.arch[0]);
185+
if (!architectureRet) {
186+
return toDBusReply(architectureRet);
187+
}
188+
189+
auto currentArch = package::Architecture::currentCPUArchitecture();
190+
Q_ASSERT(currentArch.has_value());
191+
if (*architectureRet != *currentArch) {
192+
return toDBusReply(-1,
193+
"app arch:" + architectureRet->toString()
194+
+ " not match host architecture");
195+
}
196+
183197
auto versionRet = package::Version::parse(QString::fromStdString(packageInfo.version));
184198
if (!versionRet) {
185199
return toDBusReply(versionRet);
@@ -201,11 +215,6 @@ QVariantMap PackageManager::installFromLayer(const QDBusUnixFileDescriptor &fd)
201215
}
202216
}
203217

204-
auto architectureRet = package::Architecture::parse(packageInfo.arch[0]);
205-
if (!architectureRet) {
206-
return toDBusReply(architectureRet);
207-
}
208-
209218
auto packageRefRet = package::Reference::create(QString::fromStdString(packageInfo.channel),
210219
QString::fromStdString(packageInfo.id),
211220
*versionRet,
@@ -331,6 +340,14 @@ QVariantMap PackageManager::installFromUAB(const QDBusUnixFileDescriptor &fd) no
331340
return toDBusReply(architectureRet);
332341
}
333342

343+
auto currentArch = package::Architecture::currentCPUArchitecture();
344+
Q_ASSERT(currentArch.has_value());
345+
if (*architectureRet != *currentArch) {
346+
return toDBusReply(-1,
347+
"app arch:" + architectureRet->toString()
348+
+ " not match host architecture");
349+
}
350+
334351
auto appRefRet = package::Reference::create(QString::fromStdString(appLayer.info.channel),
335352
QString::fromStdString(appLayer.info.id),
336353
*versionRet,

0 commit comments

Comments
 (0)