Android 3.2+ kod (nenamjerno?) koji sprječava pristup pisanja vanjskoj memoriji

Čini se da Google ima grešku u svom AOSP kodu koji je uveden oko Androida 3.2, što utječe na način na koji OS rukuje USB pohranom i može spriječiti pristup pisanju na SD kartice i USB stickove. XDA Elite priznati programer, viši moderator i Pisac vijestiLančana vatra sažima problem u svom post na blogu:

U prošlosti bi aplikacija zahtijevala "WRITE_EXTERNAL_STORAGE" dopuštenje, koje bi omogućilo pristup za pisanje svi vanjska pohrana (korisnik/grupa "sdcard_rw"). Ovo je očito promijenjeno da samo odobri pristup za pisanje na primarni vanjska pohrana. Uvedeno je drugo dopuštenje pod nazivom "WRITE_MEDIA_STORAGE", koji bi omogućio pristup drugim vanjskim pohranama (korisnik/grupa "media_rw").

Problem je u tome što treća strana zapravo neće dobiti ovo dopuštenje, samo će sistemske aplikacije i aplikacije koje pruža proizvođač uređaja obično dobiti ovo dopuštenje. Postoje iznimke, očito će na nekim uređajima aplikacije trećih strana dobiti ovo dopuštenje, ali prema izvorima AOSP-a, to sigurno ne bi trebale.

Dok je Chainfire istraživao problem, naišao je na kod u /system/vold/Volume.cpp koji izričito kaže:

 if (primaryStorage) {

// Poseban slučaj the primarna SD kartica.

// Za ovo odobravamo pristup za pisanje SDCARD_RW grupi.

gid = AID_SDCARD_RW;

} inače {

// Za sekundarnu vanjsku pohranu stvari držimo zaključane.

gid = AID_MEDIA_RW;

}

Na mnogim se uređajima unutarnja bljeskalica smatra "primarnom SD karticom". The stvaran SD kartica tada postaje sekundarna vanjska pohrana i zaključava se zaštićena nedostižnim "WRITE_MEDIA_STORAGE" dopuštenje.

Chainfire je svoje pitanje poslao Radno vrijeme programera za Android tima, a na kraju su o tome raspravljali u svom druženje uživo 11. travnja. Nažalost, Googleovi inženjeri prisutni u hangoutu nisu bili u mogućnosti pružiti nikakve prave odgovore, budući da je ovo komplicirano pitanje i pitanje je postavljeno samo sat vremena prije emitiranja emisije. Međutim, obećali su da će doći do dna ovog problema i vratiti se Chainfireu (i nama) kasnije.

Također prema Chainfireu, problem je zapravo prisutan i na ICS verzijama za SGS2, iako Samsung "zaobišao je to koristeći vrlo ružno hakiranje dozvola":

Ono što vidite ovdje je Samsung piggybacking dopuštenje WRITE_MEDIA_STORAGE na dopuštenje WRITE_EXTERNAL_STORAGE, tako da aplikacije nemaju opisani problem.

Ostaje za vidjeti je li Google namjeravao da povezane SD kartice i USB memorije budu samo za čitanje za aplikacije trećih strana. Međutim, rađa uznemirujuću misao: Što ako su kôd i popratne bilješke prvi Googleovi faze implementacije neke vrste zaštite od pisanja za vanjsku pohranu, čime se dodatno ograničava naš mobilni telefon sloboda? Možemo se samo nadati da je ovo pravi bug, jer je sloboda jedan od razloga zašto je svi izbjegavamo Tamna strana.

[Veliko hvala Chainfireu na upozorenju i pomoći!]