Code Android 3.2+ (par inadvertance ?) empêchant l'accès en écriture au stockage externe

Il semblerait que Google ait un bug dans son code AOSP introduit autour d'Android 3.2, qui affecte la façon dont le système d'exploitation gère le stockage USB et peut empêcher l'accès en écriture aux cartes SD et aux clés USB. Développeur reconnu XDA Elite, modérateur principal et Rédacteur de nouvellesTir à la chaîne résume le problème dans son article de blog:

Dans le passé, une application demandait le "WRITE_EXTERNAL_STORAGE" autorisation, qui accorderait un accès en écriture à tous stockages externes (utilisateur/groupe "sdcard_rw"). Cela a apparemment été modifié pour accorder uniquement l'accès en écriture au primaire stockage externe. Une deuxième autorisation a été introduite appelée "WRITE_MEDIA_STORAGE", qui accorderait l'accès aux autres stockages externes (utilisateur/groupe "media_rw").

Le problème est qu'un tiers ne bénéficiera pas réellement de cette autorisation, seules les applications système et les applications fournies par le fabricant de l'appareil recevront normalement cette autorisation. Il existe des exceptions, apparemment sur certains appareils, les applications tierces bénéficieront de cette autorisation, mais selon les sources de l'AOSP, elles ne sont certainement pas censées le faire.

Alors que Chainfire enquêtait sur le problème, il est tombé sur du code dans le /system/vold/Volume.cpp qui déclare explicitement :

 si (stockageprimaire) {

// Cas particulier le carte SD principale.

// Pour cela, nous accordons l'accès en écriture au groupe SDCARD_RW.

gid = AID_SDCARD_RW ;

} autre {

// Pour le stockage externe secondaire, nous gardons les choses sous clé.

gid = AID_MEDIA_RW;

}

Sur de nombreux appareils, le flash interne est considéré comme la « carte SD principale ». Le réel La carte SD devient alors le stockage externe secondaire, et est verrouillée et protégée par l'inaccessible "WRITE_MEDIA_STORAGE" autorisation.

Chainfire a soumis sa question au Horaires de bureau des développeurs Android équipe, et ils ont fini par en discuter dans leur lieu de rencontre en direct le 11 avril. Malheureusement, les ingénieurs de Google présents dans le hangout n'ont pas été en mesure de fournir de véritables réponses, car il s'agit d'un problème complexe et la question n'a été soulevée qu'une heure avant la mise en ligne de l'émission. Ils ont cependant promis d'aller au fond de ce problème et de revenir vers Chainfire (et nous) plus tard.

Toujours selon Chainfire, le problème est également présent sur les versions ICS pour le SGS2, bien que Samsung "j'ai contourné ce problème en utilisant un hack d'autorisation très laid":

Ce que vous voyez ici, c'est Samsung ferroutage l'autorisation WRITE_MEDIA_STORAGE à l'autorisation WRITE_EXTERNAL_STORAGE, afin que les applications ne rencontrent pas le problème décrit.

Reste à savoir si Google envisageait ou non de limiter les cartes SD et les clés USB connectées à la lecture seule pour les applications tierces. Cela donne cependant naissance à une réflexion inquiétante: et si le code et les notes qui l'accompagnent étaient les premiers de Google? étapes de mise en œuvre d'une sorte de protection en écriture pour le stockage externe, limitant ainsi davantage notre mobile liberté? Nous ne pouvons qu'espérer qu'il s'agisse d'un véritable bug, car la liberté est l'une des raisons pour lesquelles nous évitons tous le Côté obscur.

[Un grand merci à Chainfire pour l'avertissement et l'aide !]