Kod systemu Android 3.2+ (nieumyślnie?) Uniemożliwiający dostęp do zapisu w pamięci zewnętrznej

Wygląda na to, że Google ma błąd w kodzie AOSP, który został wprowadzony w systemie Android 3.2, który wpływa na sposób, w jaki system operacyjny obsługuje pamięć USB i może uniemożliwiać dostęp do zapisu na kartach SD i pamięciach USB. Uznany programista XDA Elite, starszy moderator i Pisarz wiadomościŁańcuchowy Ogień podsumowuje tę kwestię w swoim post na blogu:

W przeszłości aplikacja prosiła o „ZAPISZ_EXTERNAL_STORAGE" uprawnienie, które zapewniłoby dostęp do zapisu Wszystko pamięci zewnętrzne (użytkownik/grupa „sdcard_rw"). Najwyraźniej zostało to zmienione, aby zapewnić dostęp tylko do zapisu do pliku podstawowy dysk zewnętrzny. Wprowadzono drugie zezwolenie zwane „ZAPISZ_MEDIA_STORAGE", co zapewniłoby dostęp do innych zewnętrznych magazynów (użytkownik/grupa "media_rw").

Problem w tym, że osoba trzecia tak naprawdę nie otrzyma tego uprawnienia, jedynie aplikacje systemowe i aplikacje dostarczone przez producenta urządzenia zwykle otrzymają to pozwolenie. Istnieją wyjątki. Najwyraźniej na niektórych urządzeniach aplikacje innych firm otrzymają to pozwolenie, ale według źródeł AOSP z pewnością nie powinny.

Gdy Chainfire badał problem, natknął się na kod w pliku /system/vold/Volume.cpp który wyraźnie stwierdza:

 if (primaryStorage) {

// Specjalny przypadek podstawowa karta SD.

// W tym celu przyznajemy uprawnienia do zapisu grupie SDCARD_RW.

gid = AID_SDCARD_RW;

} w przeciwnym razie {

// W przypadku dodatkowej pamięci zewnętrznej przechowujemy rzeczy w zamknięciu.

gid = AID_MEDIA_RW;

}

Na wielu urządzeniach wewnętrzna pamięć flash jest uważana za „podstawową kartę SD”. The prawdziwy Karta SD staje się wówczas dodatkową pamięcią zewnętrzną i jest blokowana przez nieosiągalne „ZAPISZ_MEDIA_STORAGE" pozwolenie.

Chainfire przesłał swoje pytanie do Godziny pracy programistów Androida zespołu i ostatecznie omówili to w swoim spotkanie na żywo 11 kwietnia. Niestety inżynierowie Google obecni na hangoucie nie byli w stanie udzielić żadnych konkretnych odpowiedzi, ponieważ jest to skomplikowany problem, a pytanie zostało zadane zaledwie godzinę przed rozpoczęciem programu. Obiecali jednak dotrzeć do sedna tej kwestii i wrócić do Chainfire (i nas) w późniejszym czasie.

Również według Chainfire problem występuje również w wersjach ICS dla SGS2, chociaż Samsung „obejść to, używając bardzo brzydkiego hackowania uprawnień":

To co tu widzicie to Samsung na baranach uprawnienia WRITE_MEDIA_STORAGE do uprawnienia WRITE_EXTERNAL_STORAGE, aby w aplikacjach nie występował opisany problem.

Nie wiadomo, czy Google zamierzał ograniczyć podłączone karty SD i pamięci USB do trybu tylko do odczytu dla aplikacji innych firm. Rodzi to jednak niepokojącą myśl: co się stanie, jeśli kod i towarzyszące mu notatki będą pierwszymi produktami Google? etapy wdrażania pewnego rodzaju ochrony przed zapisem w pamięci zewnętrznej, a tym samym dalsze ograniczanie naszego telefonu komórkowego wolność? Możemy mieć tylko nadzieję, że jest to prawdziwy błąd, ponieważ wolność jest jednym z powodów, dla których wszyscy tego unikamy Ciemna strona.

[Ogromne podziękowania dla Chainfire za informację i pomoc!]