diff --git a/assets/translations/de.json b/assets/translations/de.json index 3dafa2b..69ce123 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -4,6 +4,7 @@ "noVersionFound": "Release-Version nicht ermittelbar", "urlMatchesNoSource": "URL stimmt mit keiner bekannten Quelle überein", "cantInstallOlderVersion": "Installation einer älteren App-Version nicht möglich", + "appIdMismatch": "Die heruntergeladene Paket-ID stimmt nicht mit der vorhandenen App-ID überein", "functionNotImplemented": "Diese Klasse hat diese Funktion nicht implementiert", "placeholder": "Platzhalter", "someErrors": "Es traten einige Fehler auf", diff --git a/assets/translations/en.json b/assets/translations/en.json index 15c8498..95a41ef 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -4,6 +4,7 @@ "noVersionFound": "Could not determine release version", "urlMatchesNoSource": "URL does not match a known source", "cantInstallOlderVersion": "Cannot install an older version of an App", + "appIdMismatch": "Downloaded package ID does not match existing App ID", "functionNotImplemented": "This class has not implemented this function", "placeholder": "Placeholder", "someErrors": "Some Errors Occurred", diff --git a/assets/translations/hu.json b/assets/translations/hu.json index a7e3e1b..9126c61 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -4,6 +4,7 @@ "noVersionFound": "Nem sikerült meghatározni a kiadás verzióját", "urlMatchesNoSource": "Az URL nem egyezik ismert forrással", "cantInstallOlderVersion": "Nem telepíthető egy app régebbi verziója", + "appIdMismatch": "A letöltött csomagazonosító nem egyezik a meglévő app azonosítóval", "functionNotImplemented": "Ez az osztály nem valósította meg ezt a függvényt", "placeholder": "Helykitöltő", "someErrors": "Néhány hiba történt", diff --git a/assets/translations/it.json b/assets/translations/it.json index a8f4cb8..fab4c95 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -4,6 +4,7 @@ "noVersionFound": "Impossibile determinare la versione della release", "urlMatchesNoSource": "L'URL non corrisponde ad alcuna fonte conosciuta", "cantInstallOlderVersion": "Impossibile installare una versione precedente di un'App", + "appIdMismatch": "L'ID del pacchetto scaricato non corrisponde all'ID dell'App esistente", "functionNotImplemented": "Questa classe non ha implementato questa funzione", "placeholder": "Segnaposto", "someErrors": "Si sono verificati degli errori", diff --git a/assets/translations/ja.json b/assets/translations/ja.json index e7c8f34..7804ded 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -4,6 +4,7 @@ "noVersionFound": "リリースバージョンを特定できませんでした", "urlMatchesNoSource": "URLが既知のソースと一致しません", "cantInstallOlderVersion": "旧バージョンのアプリをインストールできません", + "appIdMismatch": "ダウンロードしたパッケージのIDが既存のApp IDと一致しません", "functionNotImplemented": "このクラスはこの機能を実装していません", "placeholder": "プレースホルダー", "someErrors": "何らかのエラーが発生しました", diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 82ae514..89b6ea6 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -4,6 +4,7 @@ "noVersionFound": "无法确定更新版本", "urlMatchesNoSource": "URL 与已知来源不符", "cantInstallOlderVersion": "无法安装旧版应用程序", + "appIdMismatch": "下载的软件包名与现有的应用程序包名不一致", "functionNotImplemented": "该类没有实现此功能", "placeholder": "占位符", "someErrors": "出现了一些错误", diff --git a/lib/custom_errors.dart b/lib/custom_errors.dart index beef068..a049170 100644 --- a/lib/custom_errors.dart +++ b/lib/custom_errors.dart @@ -44,6 +44,10 @@ class DowngradeError extends ObtainiumError { DowngradeError() : super(tr('cantInstallOlderVersion')); } +class IDChangedError extends ObtainiumError { + IDChangedError() : super(tr('appIdMismatch')); +} + class NotImplementedError extends ObtainiumError { NotImplementedError() : super(tr('functionNotImplemented')); } diff --git a/lib/main.dart b/lib/main.dart index 0938de6..06291e4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart'; // ignore: implementation_imports import 'package:easy_localization/src/localization.dart'; -const String currentVersion = '0.10.8'; +const String currentVersion = '0.10.9'; const String currentReleaseTag = 'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 0673458..2fc89a3 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -179,9 +179,12 @@ class AppsProvider with ChangeNotifier { } } // If the APK package ID is different from the App ID, it is either new (using a placeholder ID) or the ID has changed - // In either case, the app should be given the new ID + // The former case should be handled (give the App its real ID), the latter is a security issue var newInfo = await PackageArchiveInfo.fromPath(downloadedFile.path); if (app.id != newInfo.packageName) { + if (apps[app.id] != null && !SourceProvider().isTempId(app.id)) { + throw IDChangedError(); + } var originalAppId = app.id; app.id = newInfo.packageName; downloadedFile = downloadedFile.renameSync( diff --git a/pubspec.yaml b/pubspec.yaml index ae50a6a..94707b5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.10.8+114 # When changing this, update the tag in main() accordingly +version: 0.10.9+115 # When changing this, update the tag in main() accordingly environment: sdk: '>=2.18.2 <3.0.0'