Android 3.2+ -koodi (vahingossa?) Estää kirjoitusoikeuden ulkoiseen tallennustilaan

Vaikuttaa siltä, ​​​​että Googlella on virhe AOSP-koodissaan, joka otettiin käyttöön Android 3.2:n ympärillä, mikä vaikuttaa siihen, miten käyttöjärjestelmä käsittelee USB-tallennustilaa ja voi estää kirjoitusoikeuden SD-korteille ja USB-tikuille. XDA Elite -tunnustettu kehittäjä, vanhempi moderaattori ja Uutisten kirjoittajaKetjutuli tiivistää asian kirjassaan blogipostaus:

Aiemmin sovellus pyysi "WRITE_EXTERNAL_STORAGE"-lupa, joka antaisi kirjoitusoikeuden kaikki ulkoiset tallennustilat (käyttäjä/ryhmä "sdcard_rw"). Tämä on ilmeisesti muutettu antamaan vain kirjoitusoikeudet ensisijainen ulkoinen tallennustila. Toinen lupa on otettu käyttöön "WRITE_MEDIA_STORAGE", joka antaisi pääsyn muille ulkoisille tallennusvälineille (käyttäjä/ryhmä"media_rw").

Ongelmana on, että kolmannelle osapuolelle ei todellisuudessa myönnetä tätä lupaa, vaan tämä lupa myönnetään yleensä vain järjestelmäsovelluksille ja laitteen valmistajan toimittamille sovelluksille. Poikkeuksiakin on, ilmeisesti joissakin laitteissa kolmannen osapuolen sovelluksille myönnetään tämä lupa, mutta AOSP-lähteiden mukaan niiden ei todellakaan pitäisi olla.

Kun Chainfire tutki ongelmaa, hän törmäsi koodiin /system/vold/Volume.cpp jossa sanotaan suoraan:

 if (primaryStorage) {

// Erikoistapaus ensisijainen SD-kortti.

// Tätä varten myönnämme kirjoitusoikeudet SDARD_RW-ryhmälle.

gid = AID_SDCARD_RW;

} muu {

// Toissijaista ulkoista tallennustilaa varten pidämme asiat lukittuna.

gid = AID_MEDIA_RW;

}

Monissa laitteissa sisäistä salamaa pidetään "ensisijaisena SD-korttina". The todellinen SD-kortista tulee sitten toissijainen ulkoinen tallennustila, ja se lukitaan saavuttamattoman suojassa.WRITE_MEDIA_STORAGE" lupa.

Chainfire esitti kysymyksensä Android-kehittäjien aukioloajat tiimi, ja he päätyivät keskustelemaan siitä omassa live hangout huhtikuun 11 päivänä. Valitettavasti hangoutissa läsnä olleet Googlen insinöörit eivät pystyneet antamaan todellisia vastauksia, koska tämä on monimutkainen ongelma ja kysymys esitettiin vain tuntia ennen ohjelman alkamista. He ovat kuitenkin luvanneet päästä tämän ongelman ytimeen ja palata Chainfireen (ja meihin) myöhemmin.

Myös Chainfiren mukaan ongelma esiintyy itse asiassa myös SGS2:n ICS-versioissa, vaikka Samsung "kiertänyt sen käyttämällä erittäin rumaa lupahakkerointia":

Tässä näet Samsungin reppuselkä WRITE_MEDIA_STORAGE-lupa WRITE_EXTERNAL_STORAGE-lupaan, joten sovellukset eivät kohtaa kuvattua ongelmaa.

Nähtäväksi jää, aikooko Google rajoittaa liitettyjen SD-korttien ja USB-tikkujen vain luku -ominaisuuden kolmansien osapuolien sovelluksille. Se kuitenkin synnyttää huolestuttavan ajatuksen: entä jos koodi ja siihen liittyvät huomautukset ovat Googlen ensimmäinen vaiheita jonkinlaisen kirjoitussuojauksen toteuttamisessa ulkoiselle tallennustilalle, mikä rajoittaa edelleen matkapuhelintamme vapaus? Voimme vain toivoa, että tämä on aito bugi, koska vapaus on yksi niistä syistä, miksi me kaikki välttelemme sitä Pimeä puoli.

[Suuri kiitos Chainfirelle ohjeesta ja avusta!]