@@ -180,6 +180,20 @@ QVariantMap PackageManager::installFromLayer(const QDBusUnixFileDescriptor &fd)
180
180
}
181
181
182
182
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
+
183
197
auto versionRet = package::Version::parse (QString::fromStdString (packageInfo.version ));
184
198
if (!versionRet) {
185
199
return toDBusReply (versionRet);
@@ -201,11 +215,6 @@ QVariantMap PackageManager::installFromLayer(const QDBusUnixFileDescriptor &fd)
201
215
}
202
216
}
203
217
204
- auto architectureRet = package::Architecture::parse (packageInfo.arch [0 ]);
205
- if (!architectureRet) {
206
- return toDBusReply (architectureRet);
207
- }
208
-
209
218
auto packageRefRet = package::Reference::create (QString::fromStdString (packageInfo.channel ),
210
219
QString::fromStdString (packageInfo.id ),
211
220
*versionRet,
@@ -331,6 +340,14 @@ QVariantMap PackageManager::installFromUAB(const QDBusUnixFileDescriptor &fd) no
331
340
return toDBusReply (architectureRet);
332
341
}
333
342
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
+
334
351
auto appRefRet = package::Reference::create (QString::fromStdString (appLayer.info .channel ),
335
352
QString::fromStdString (appLayer.info .id ),
336
353
*versionRet,
0 commit comments