Android 3.2+-kode (utilsiktet?) Hindrer skrivetilgang til ekstern lagring

Det ser ut til at Google har en feil i AOSP-koden som ble introdusert rundt Android 3.2, som påvirker hvordan operativsystemet håndterer USB-lagring og kan forhindre skrivetilgang til SD-kort og USB-pinner. XDA Elite anerkjent utvikler, seniormoderator og NyhetsskribentKjedebrann oppsummerer problemet i sin blogg innlegg:

Tidligere ville en app be om "WRITE_EXTERNAL_STORAGE" tillatelse, som vil gi skrivetilgang til alle eksterne lagringer (bruker/gruppe "sdcard_rw"). Dette har tilsynelatende blitt endret til kun å gi skrivetilgang til hoved ekstern lagring. En andre tillatelse har blitt introdusert kalt "WRITE_MEDIA_STORAGE", som ville gi tilgang til de andre eksterne lagringene (bruker/gruppe "media_rw").

Problemet er at en tredjepart faktisk ikke vil få denne tillatelsen, bare systemapper og apper levert av enhetsprodusenten vil normalt få denne tillatelsen. Det er unntak, tilsynelatende vil tredjepartsapper på enkelte enheter få denne tillatelsen, men ifølge AOSP-kildene skal de absolutt ikke det.

Da Chainfire undersøkte problemet, kom han over kode i /system/vold/Volume.cpp som uttrykkelig sier:

 if (primaryStorage) {

// Spesialtilfelle den primært SD-kort.

// For dette gir vi skrivetilgang til SDCARD_RW-gruppen.

gid = AID_SDCARD_RW;

} annet {

// For sekundær ekstern lagring holder vi ting låst.

gid = AID_MEDIA_RW;

}

På mange enheter regnes den interne flashen som "primært SD-kort". De ekte SD-kortet blir deretter den sekundære eksterne lagringen, og er låst nedbeskyttet av den uoppnåelige "WRITE_MEDIA_STORAGE"tillatelse.

Chainfire sendte spørsmålet sitt til Kontortid for Android-utviklere team, og de endte opp med å diskutere det i deres live hangout den 11. april. Dessverre var ikke Google-ingeniørene som var tilstede i hangouten i stand til å gi noen reelle svar, siden dette er en komplisert sak og spørsmålet ble stilt bare en time før showet gikk live. De har imidlertid lovet å komme til bunns i denne saken, og komme tilbake til Chainfire (og oss) på et senere tidspunkt.

Også ifølge Chainfire er problemet faktisk til stede på ICS-bygg for SGS2 også, selv om Samsung "jobbet rundt det ved å bruke et veldig stygt tillatelseshack":

Det du ser her er Samsung piggybacking WRITE_MEDIA_STORAGE-tillatelsen til WRITE_EXTERNAL_STORAGE-tillatelsen, slik at apper ikke opplever det beskrevne problemet.

Hvorvidt Google har tiltenkt at tilkoblede SD-kort og USB-pinner skal begrenses til å være skrivebeskyttet for tredjepartsapper, gjenstår å se. Det vekker imidlertid en urovekkende tanke: Hva om koden og de tilhørende notatene er Googles første stadier for å implementere en slags skrivebeskyttelse for ekstern lagring, og dermed begrense mobilen vår ytterligere frihet? Vi kan bare håpe at dette er en ekte feil, siden frihet er en av grunnene til at vi alle unngår det Mørk side.

[Stor takk til Chainfire for heads up og hjelp!]