From 03a6ea8f7c7ae4de34cf4a9274d3ae131517f601 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Thu, 29 Dec 2016 14:36:58 -0800 Subject: [DO NOT MERGE] Don't allow permission change to runtime Prevent apps to change permission protection level to dangerous from any other type as this would allow a privilege escalation where an app adds a normal permission in other app's group and then redefines it as dangerous leading to the group auto-grant. Test: Added a CTS test which passes. Bug: 33860747 AOSP-Change-Id: I1ccf546f78ee79ff027cb98124be81c8e5265a82 (cherry picked from commit fe430be9f102893c95258cc81589df132b7d02b3) CVE-2017-0593 Change-Id: I6878332b5c4a38225efa8fc7ffa4b868b6b2917d --- .../com/android/server/pm/PackageManagerService.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 920a8500bea..21d3b4be1f5 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -415,6 +415,8 @@ public class PackageManagerService extends IPackageManager.Stub { */ private static final int DEFAULT_VERIFICATION_RESPONSE = PackageManager.VERIFICATION_ALLOW; + static final String PLATFORM_PACKAGE_NAME = "android"; + static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer"; static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName( @@ -13467,6 +13469,20 @@ public class PackageManagerService extends IPackageManager.Stub { + perm.info.name + "; ignoring new declaration"); pkg.permissions.remove(i); } + } else if (!PLATFORM_PACKAGE_NAME.equals(pkg.packageName)) { + // Prevent apps to change protection level to dangerous from any other + // type as this would allow a privilege escalation where an app adds a + // normal/signature permission in other app's group and later redefines + // it as dangerous leading to the group auto-grant. + if ((perm.info.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE) + == PermissionInfo.PROTECTION_DANGEROUS) { + if (bp != null && !bp.isRuntime()) { + Slog.w(TAG, "Package " + pkg.packageName + " trying to change a " + + "non-runtime permission " + perm.info.name + + " to runtime; keeping old protection level"); + perm.info.protectionLevel = bp.protectionLevel; + } + } } } } -- cgit v1.2.3 From a7f586deb1ea914e6797ccc8c20120442c0d9050 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Mon, 27 Feb 2017 17:33:18 -0800 Subject: [DO NOT MERGE] Check bounds in offsetToPtr Check whether specified offset belongs to mData. Also added a default argument bufferSize to check the end offset. Size of the ashmem descriptor can be modified between ashmem_get_size_region call and mmap. createFromParcel method was updated to check ashmem size again immediately after memory is mapped. Test: manual - using the test app from the bug Bug: 34128677 AOSP-Change-Id: I3ecd1616a870ce20941ce9b20a1843d2b4295750 (cherry picked from commit 45e2e95c2ffeb2d978e2cce80b729ef6ada3b8d2) (cherry picked from commit acede24109412a4c09e6e4e93d7b96bc9b1ad440) CVE-2017-0598 Change-Id: Icb8dfb99033eb9632818ee0f9b872b96d9af9caf --- include/androidfw/CursorWindow.h | 17 ++++++++++++++--- libs/androidfw/CursorWindow.cpp | 5 +++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/androidfw/CursorWindow.h b/include/androidfw/CursorWindow.h index 8a2979a3756..2eb349f5716 100644 --- a/include/androidfw/CursorWindow.h +++ b/include/androidfw/CursorWindow.h @@ -18,6 +18,7 @@ #define _ANDROID__DATABASE_WINDOW_H #include +#include #include #include @@ -128,12 +129,13 @@ public: inline const char* getFieldSlotValueString(FieldSlot* fieldSlot, size_t* outSizeIncludingNull) { *outSizeIncludingNull = fieldSlot->data.buffer.size; - return static_cast(offsetToPtr(fieldSlot->data.buffer.offset)); + return static_cast(offsetToPtr( + fieldSlot->data.buffer.offset, fieldSlot->data.buffer.size)); } inline const void* getFieldSlotValueBlob(FieldSlot* fieldSlot, size_t* outSize) { *outSize = fieldSlot->data.buffer.size; - return offsetToPtr(fieldSlot->data.buffer.offset); + return offsetToPtr(fieldSlot->data.buffer.offset, fieldSlot->data.buffer.size); } private: @@ -166,7 +168,16 @@ private: bool mReadOnly; Header* mHeader; - inline void* offsetToPtr(uint32_t offset) { + inline void* offsetToPtr(uint32_t offset, uint32_t bufferSize = 0) { + if (offset >= mSize) { + ALOGE("Offset %" PRIu32 " out of bounds, max value %zu", offset, mSize); + return NULL; + } + if (offset + bufferSize > mSize) { + ALOGE("End offset %" PRIu32 " out of bounds, max value %zu", + offset + bufferSize, mSize); + return NULL; + } return static_cast(mData) + offset; } diff --git a/libs/androidfw/CursorWindow.cpp b/libs/androidfw/CursorWindow.cpp index 166863c0d91..5694115f61a 100644 --- a/libs/androidfw/CursorWindow.cpp +++ b/libs/androidfw/CursorWindow.cpp @@ -98,9 +98,14 @@ status_t CursorWindow::createFromParcel(Parcel* parcel, CursorWindow** outCursor if (dupAshmemFd < 0) { result = -errno; } else { + // the size of the ashmem descriptor can be modified between ashmem_get_size_region + // call and mmap, so we'll check again immediately after memory is mapped void* data = ::mmap(NULL, size, PROT_READ, MAP_SHARED, dupAshmemFd, 0); if (data == MAP_FAILED) { result = -errno; + } else if (ashmem_get_size_region(dupAshmemFd) != size) { + ::munmap(data, size); + result = BAD_VALUE; } else { CursorWindow* window = new CursorWindow(name, dupAshmemFd, data, size, true /*readOnly*/); -- cgit v1.2.3 From 1ab4755f260f714e473933f887cde8cf043a8313 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Wed, 22 Feb 2017 14:12:50 -0800 Subject: [DO NOT MERGE] Throw exception if slot has invalid offset Previously the process would crash, which is OK, but complicates testing. Test: cts-tradefed run cts --module CtsContentTestCases --test android.content.cts.ContentProviderCursorWindowTest Bug: 34128677 AOSP-Change-Id: I5b50982d77ec65c442fbb973d14c85a5c29c43c7 (cherry picked from commit eb6de6f5f10148b9f81f9c0074d1e1f7af21bfb0) (cherry picked from commit 676f703f746391cfdf05bafd2289226f7a6e5255) CVE-2017-0598 Change-Id: If4df1645887525e00c2762d4c702efbccf2e0b5b --- core/jni/android_database_CursorWindow.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/jni/android_database_CursorWindow.cpp b/core/jni/android_database_CursorWindow.cpp index 580ac02789c..a86e57dc024 100644 --- a/core/jni/android_database_CursorWindow.cpp +++ b/core/jni/android_database_CursorWindow.cpp @@ -182,6 +182,10 @@ static jbyteArray nativeGetBlob(JNIEnv* env, jclass clazz, jlong windowPtr, if (type == CursorWindow::FIELD_TYPE_BLOB || type == CursorWindow::FIELD_TYPE_STRING) { size_t size; const void* value = window->getFieldSlotValueBlob(fieldSlot, &size); + if (!value) { + throw_sqlite3_exception(env, "Native could not read blob slot"); + return NULL; + } jbyteArray byteArray = env->NewByteArray(size); if (!byteArray) { env->ExceptionClear(); @@ -217,6 +221,10 @@ static jstring nativeGetString(JNIEnv* env, jclass clazz, jlong windowPtr, if (type == CursorWindow::FIELD_TYPE_STRING) { size_t sizeIncludingNull; const char* value = window->getFieldSlotValueString(fieldSlot, &sizeIncludingNull); + if (!value) { + throw_sqlite3_exception(env, "Native could not read string slot"); + return NULL; + } if (sizeIncludingNull <= 1) { return gEmptyString; } -- cgit v1.2.3 From 2e3eac841038309f2bc359cd735d545dd3536c9c Mon Sep 17 00:00:00 2001 From: Abhisek Devkota Date: Sat, 3 Jun 2017 18:42:07 -0700 Subject: Automatic translation import Change-Id: I62247418eac4a717ea4d69213c858f7eafebebe5 --- core/res/res/values-ast-rES/strings.xml | 5 +++ core/res/res/values-eo/strings.xml | 40 ++++++++++++++++++++++ core/res/res/values-es-rUS/cm_strings.xml | 4 +-- packages/Keyguard/res/values-ast-rES/strings.xml | 2 ++ .../SettingsLib/res/values-ast-rES/strings.xml | 1 + packages/SettingsLib/res/values-eo/strings.xml | 13 +++++++ packages/SystemUI/res/values-ast-rES/strings.xml | 5 +++ packages/SystemUI/res/values-es-rUS/cm_strings.xml | 2 +- packages/SystemUI/res/values-nb/cm_strings.xml | 4 +-- packages/SystemUI/res/values-zh-rCN/cm_strings.xml | 2 +- 10 files changed, 72 insertions(+), 6 deletions(-) diff --git a/core/res/res/values-ast-rES/strings.xml b/core/res/res/values-ast-rES/strings.xml index 0ef8300ca00..41c6670ee8b 100644 --- a/core/res/res/values-ast-rES/strings.xml +++ b/core/res/res/values-ast-rES/strings.xml @@ -310,6 +310,7 @@ for most appropriate textual indicator of "more than X". [CHAR LIMIT=4] --> + Mou seguru @@ -794,8 +795,10 @@ locked --> + Tarxeta SIM bloquiada col PUK. + Tarxeta SIM bloquiada. @@ -1572,8 +1575,10 @@ + Solicitú d\'allugamientu de %s + Solicitú d\'allugamientu diff --git a/core/res/res/values-eo/strings.xml b/core/res/res/values-eo/strings.xml index e4a6a8c5035..5b0d7b404e8 100644 --- a/core/res/res/values-eo/strings.xml +++ b/core/res/res/values-eo/strings.xml @@ -853,48 +853,87 @@ + attention|attn + province|region|other|provincia|bairro|suburb + company|business|organization|organisation|department|firma|firmenname|empresa|societe|société|ragione.?sociale|会社|название.?компании|单位|公司 + address.?line|address1|addr1|street|strasse|straße|hausnummer|housenumber|house.?name|direccion|dirección|adresse|indirizzo|住所1|morada|endereço|Адрес|地址 + address|adresse|indirizzo|住所|地址 + address.?line2|address2|addr2|street|suite|unit|adresszusatz|ergänzende.?angaben|direccion2|colonia|adicional|addresssuppl|complementnom|appartement|indirizzo2|住所2 + address.?line3|address3|addr3|street|line3|municipio|batiment|residence|indirizzo3 country|location|国|国家 + zip|postal|post code|pcode|^1z$|postleitzahl|cp|cdp|cap|郵便番号|codigo|codpos|cep|Почтовый.?Индекс|邮政编码|邮编|郵遞區號 + zip|^-$|post2|codpos2 + city|town|ort|stadt|suburb|ciudad|provincia|localidad|poblacion|ville|commune|localita|市区町村|cidade|Город|市|分區 + state|county|region|province|land|county|principality|都道府県|estado|provincia|область|省|地區 + same as + use my + bill + ship + e.?mail|メールアドレス|Электронной.?Почты|邮件|邮箱|電郵地址 user.?name|user.?id|vollständiger.?name|用户名 + ^name|full.?name|your.?name|customer.?name|firstandlastname|nombre.*y.*apellidos|^nom|お名前|氏名|^nome|姓名 + ^name|^nom|^nome + irst.*name|initials|fname|first$|vorname|nombre|forename|prénom|prenom|名|nome|Имя + middle.*initial|m\\.i\\.|mi$ + middle.*name|mname|middle$|apellido.?materno|lastlastname + last.*name|lname|surname|last$|nachname|apellidos|famille|^nom|cognome|姓|morada|apelidos|surename|sobrenome|Фамилия + phone|telefonnummer|telefono|teléfono|telfixe|電話|telefone|telemovel|телефон|电话 + area.*code|acode|area + prefix|preselection|ddd + suffix + ext|ramal + card.?holder|name.?on.?card|ccname|owner|karteninhaber|nombre.*tarjeta|nom.*carte|nome.*cart|名前|Имя.*карты|信用卡开户名|开户名|持卡人姓名|持卡人姓名 + name + verification|card identification|cvn|security code|cvv code|cvc + number|card.?#|card.?no|ccnum|nummer|credito|numero|número|numéro|カード番号|Номер.*карты|信用卡号|信用卡号码|信用卡卡號 + expir|exp.*month|exp.*date|ccmonth|gueltig|gültig|monat|fecha|date.*exp|scadenza|有効期限|validade|Срок действия карты|月 + exp|^/|year|ablaufdatum|gueltig|gültig|yahr|fecha|scadenza|有効期限|validade|Срок действия карты|年|有效期 + ^card + fax|télécopie|telecopie|ファックス|факс|传真|傳真 + country.*code|ccode|_cc + ^\\($ + ^-$|^\\)$ + ^-$ @@ -1310,6 +1349,7 @@ the user's notifications. --> + /data/eri.xml diff --git a/core/res/res/values-es-rUS/cm_strings.xml b/core/res/res/values-es-rUS/cm_strings.xml index 4c0897e18be..14f4ad66365 100644 --- a/core/res/res/values-es-rUS/cm_strings.xml +++ b/core/res/res/values-es-rUS/cm_strings.xml @@ -109,7 +109,7 @@ borrar contactos borrar mensajes MMS borrar mensajes SMS - dibujar ventanas encima + mostrar ventanas encima obtener estadísticas de uso de aplicaciones mantener el dispositivo encendido realizar una llamada @@ -165,7 +165,7 @@ encender pantalla obtener cuentas del dispositivo cambiar estado del Wi-Fi - obtener acceso administrativo + obtener acceso de Superusuario Para desanclar esta pantalla, mantén pulsado el botón Atrás. diff --git a/packages/Keyguard/res/values-ast-rES/strings.xml b/packages/Keyguard/res/values-ast-rES/strings.xml index d76eedf03b7..d93722ff6ad 100644 --- a/packages/Keyguard/res/values-ast-rES/strings.xml +++ b/packages/Keyguard/res/values-ast-rES/strings.xml @@ -54,7 +54,9 @@ + Tarxeta SIM bloquiada. + Tarxeta SIM bloquiada col PUK. diff --git a/packages/SettingsLib/res/values-ast-rES/strings.xml b/packages/SettingsLib/res/values-ast-rES/strings.xml index 08667604899..2aa779cf965 100644 --- a/packages/SettingsLib/res/values-ast-rES/strings.xml +++ b/packages/SettingsLib/res/values-ast-rES/strings.xml @@ -47,6 +47,7 @@ 802.1x EAP + Passpoint diff --git a/packages/SettingsLib/res/values-eo/strings.xml b/packages/SettingsLib/res/values-eo/strings.xml index 8af20e31648..714d8b02a54 100644 --- a/packages/SettingsLib/res/values-eo/strings.xml +++ b/packages/SettingsLib/res/values-eo/strings.xml @@ -21,19 +21,32 @@ + WEP + WPA + WPA2 + WPA/WPA2 + @string/wifi_security_short_wpa_wpa2 + 802.1x + WEP + WPA PSK + WPA2 PSK + WPA/WPA2 PSK + @string/wifi_security_wpa_wpa2 + 802.1x EAP + Passpoint Konservita diff --git a/packages/SystemUI/res/values-ast-rES/strings.xml b/packages/SystemUI/res/values-ast-rES/strings.xml index f9bf2c7192f..18ef8dc1966 100644 --- a/packages/SystemUI/res/values-ast-rES/strings.xml +++ b/packages/SystemUI/res/values-ast-rES/strings.xml @@ -299,6 +299,7 @@ [CHAR LIMIT=20] --> + Allugamientu afitáu pol GPS Llimpiar tolos avisos. @@ -378,6 +379,7 @@ AUTO + Invertir colores Mou de correición de color @@ -597,6 +599,9 @@ Caxella de tresmisión + + ¯\\_(ツ)_/¯ + diff --git a/packages/SystemUI/res/values-es-rUS/cm_strings.xml b/packages/SystemUI/res/values-es-rUS/cm_strings.xml index a3adbbe9a61..4cd9e42f091 100644 --- a/packages/SystemUI/res/values-es-rUS/cm_strings.xml +++ b/packages/SystemUI/res/values-es-rUS/cm_strings.xml @@ -173,7 +173,7 @@ Control dinámico Próxima alarma Selector IME - Acceso administrativo + Acceso de Superusuario Temas Ubicación por triangulación diff --git a/packages/SystemUI/res/values-nb/cm_strings.xml b/packages/SystemUI/res/values-nb/cm_strings.xml index 151785bf005..b51ec717018 100644 --- a/packages/SystemUI/res/values-nb/cm_strings.xml +++ b/packages/SystemUI/res/values-nb/cm_strings.xml @@ -31,7 +31,7 @@ Sveip til venstre for %1$s Trykk på ikonet til venstre eller høyre for å tilordne en låseskjermsnarvei. Standard - Velg applikasjon + Velg app Velg handling Ingen @@ -75,7 +75,7 @@ Topptekst Fliser Vis været - Vis lysstyrkeendrer + Vis lysstyrke-dimmer Forstørr første rad Dette holder den i syne inntill du løsner den. Trykk og hold på tilbake knappen for å løsne. diff --git a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml index 5fe55094ff2..0f4ced06843 100644 --- a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml @@ -196,7 +196,7 @@ 位置报告已修改为仅使用传感器模式。 位置报告已修改为准确度高模式。 - 系统磁块 + 系统瓷块 添加瓷块 -- cgit v1.2.3 From 56d9fec649b7fcad107f4732ca0dc03b71cb8ada Mon Sep 17 00:00:00 2001 From: Abhisek Devkota Date: Thu, 22 Jun 2017 22:40:24 -0700 Subject: Automatic translation import Change-Id: I97e9ddb5e8ca41a749dee48edaacc6519cbbd408 --- core/res/res/values-ast-rES/strings.xml | 1 + core/res/res/values-es-rUS/cm_strings.xml | 2 +- core/res/res/values-sr/cm_strings.xml | 140 ++++++++++----------- core/res/res/values-zh-rTW/cm_strings.xml | 2 +- packages/Keyguard/res/values-es-rUS/cm_strings.xml | 4 +- packages/SettingsLib/res/values-sr/cm_strings.xml | 4 +- packages/SystemUI/res/values-ast-rES/strings.xml | 6 + packages/SystemUI/res/values-es-rUS/cm_strings.xml | 2 +- packages/SystemUI/res/values-nb/cm_strings.xml | 4 +- 9 files changed, 86 insertions(+), 79 deletions(-) diff --git a/core/res/res/values-ast-rES/strings.xml b/core/res/res/values-ast-rES/strings.xml index 41c6670ee8b..ae2da1bfda8 100644 --- a/core/res/res/values-ast-rES/strings.xml +++ b/core/res/res/values-ast-rES/strings.xml @@ -1506,6 +1506,7 @@ + Una o más aplicaciones de darréu soliciten permisu p\'acceder a la to cuenta, agora y nel futuru. ¿Quies permitir esta solicitú? Solicitú d\'accesu Permitir diff --git a/core/res/res/values-es-rUS/cm_strings.xml b/core/res/res/values-es-rUS/cm_strings.xml index 14f4ad66365..2eada358885 100644 --- a/core/res/res/values-es-rUS/cm_strings.xml +++ b/core/res/res/values-es-rUS/cm_strings.xml @@ -165,7 +165,7 @@ encender pantalla obtener cuentas del dispositivo cambiar estado del Wi-Fi - obtener acceso de Superusuario + obtener acceso de superusuario Para desanclar esta pantalla, mantén pulsado el botón Atrás. diff --git a/core/res/res/values-sr/cm_strings.xml b/core/res/res/values-sr/cm_strings.xml index b15b557dba4..b394d33d3fd 100644 --- a/core/res/res/values-sr/cm_strings.xml +++ b/core/res/res/values-sr/cm_strings.xml @@ -46,16 +46,16 @@ Рестартуј - Тренутно + Тренутни Рестартуј - Опоравак + Режим опоравка - Bootloader + Покретач система - Преузимање + Preuzimanje Рестартуј интерфејс @@ -69,11 +69,11 @@ Апликација је затворена - ADB преко мреже омогућен + ADB преко мреже је омогућен ADB преко USB & мреже омогућен - Додирни да онемогућиш отклањање грешака. + Додирните да бисте онемогућили отклањање грешака. ADB - %1$s USB & мрежа @@ -91,87 +91,87 @@ Искључи Wi-Fi - омогући или онемогући заштиту приватности - Дозвољава апликацији да промени да ли се друга апликација покреће са заштитом приватности. Када је апликација покренута са заштитом приватности, она неће имати приступ личним подацима, као што су контакти, евиденција позива или поруке. + омогућавање или онемогућавање заштите приватности + Апликација може да промени стање заштите приватности за друге апликације. Када је апликација покренута под заштитом приватности, она неће имати приступ личним подацима као што су контакти, евиденције позива или поруке. Заштита приватности је активна - %1$s неће бити у могућности да приступи личним подацима + %1$s неће моћи да приступи личним подацима Заштита приватности %1$s жели да %2$s. Запамти мој избор приступ камери - приступ твојој локацији - прочитај твоја обавештења - aктивирај VPN - покрени при укључивању - избриши свој дневник позива - избриши своје контакте - избриши своје MMS поруке - избриши своје SMS поруке - исцртај windows на врху - добиј статистику коришћења апликација - држи уређај будним - обави телефонски позив - ажурирај твој календар - ажурирај евиденцију позива - модификуј привремену меморију - ажурирај твоје контакте - ажурирај подешавања система - искључи/укључи микрофон - пусти аудио - постави обавештење + приступ локацији + читање обавештења + активирање VPN-а + покретање при подизању система + брисање евиденције позива + брисање контаката + брисање MMS порука + брисање SMS порука + приказивање преко других апликација + преузимање статистике коришћења апликација + одржавање уређаја будним + обављање телефонског позива + ажурирање календара + ажурирање евиденције позива + модификација привремене меморије + ажурирање контаката + ажурирање подешавања система + укључивање/искључивање микрофона + репродуковање звука + приказ обавештења пројектовање медија - прочитај твој календар - прочитај евиденцију позива - прочитај привремену меморију - прочитај твоје контакте - прочитај твоје MMS поруке - прочитај твоје SMS поруке - прими SMS поруку - сними звук - пошаљи MMS поруку - пошаљи SMS поруку - покрени при укључивању - прикажи искачуће поруке - пребаци Bluetooth - Укључи/искључи мобилне податке - пребацуј NFC - Wi-FI прекидач - контрола јачине аларма - контрола аудио фокуса - контрола Bluetooth јачине - контрола главне јачине - користи дугмиће за медије - контрола јачине за медије - контрола јачине обавештења - контрола јачине звона - користи повратне информације - контрола јачине гласовног позива - напиши MMS поруку - напиши SMS поруку + читање из календара + читање евиденције позива + читање из привремене меморије + читање контаката + читање ММС порука + читање СМС порука + пријем СМС порука + снима аудио снимка + слање ММС поруке + слање СМС поруке + покретање при подизању система + приказ искачућих обавештења + укључивање/искључивање Bluetooth-а + укључивање/искључивање мобилних података + укључивање/искључивање NFC-а + укључивање/искључивање Wi-Fi-а + управљање јачином звука аларма + управљање фокусом звука + управљање јачином звука Bluetooth уређаја + контрола главне јачине звука + коришћење дугмади за медије + управљање јачином звука медија + управљање јачином звука обавештења + управљање јачином звука звона + коришћење додирних повратних информација + управљање јачином звука при разговору + писање MMS поруке + писање SMS поруке користи отисак прста - додај говорну поруку + додавање говорне поште приступ стању телефона - Скенирај Wi-Fi мреже + скенирање Wi-Fi мрежа промени тапет користи помоћну структуру - направи снимак екрана - користи сензоре уређаја + прављење снимка екрана + коришћење сензора покрета читај ћелију емитовања лажирај своју локацију - читај спољно складиште - пиши на спољно складиште - укључи екран - добави налог уређаја - промени Wi-Fi стање + читање са спољног складишта + писање на спољно складиште + укључивање екрана + информације о налозима на уређају + промена стања Wi-Fi-а дај root приступ - Да искључиш овај екран додирни и држи дугме за назад. + Да бисте откачили екран, додирните и држите дугме „Назад“. - Нема повезаног уређаја - %1$s конектован уређај - %1$s конектовани уређаји + Нема повезаних уређаја + %1$s повезани уређај + %1$s повезани уређаји diff --git a/core/res/res/values-zh-rTW/cm_strings.xml b/core/res/res/values-zh-rTW/cm_strings.xml index b3ab2aabd02..947db8549ad 100644 --- a/core/res/res/values-zh-rTW/cm_strings.xml +++ b/core/res/res/values-zh-rTW/cm_strings.xml @@ -146,7 +146,7 @@ 控制媒體音量 控制通知音量 控制鈴聲音量 - 使用觸覺回饋 + 使用觸控震動 控制語音通話音量 撰寫多媒體訊息 撰寫簡訊訊息 diff --git a/packages/Keyguard/res/values-es-rUS/cm_strings.xml b/packages/Keyguard/res/values-es-rUS/cm_strings.xml index 078fc604a0d..f892d20423d 100644 --- a/packages/Keyguard/res/values-es-rUS/cm_strings.xml +++ b/packages/Keyguard/res/values-es-rUS/cm_strings.xml @@ -22,8 +22,8 @@ Tarjeta no válida. - Introduce el código PIN. Tienes %d intento restante antes de tener que contactar a tu operador para desbloquear el dispositivo. - Introduce el código PIN. Tienes %d intentos restantes antes de tener que contactar a tu operador para desbloquear el dispositivo. + Ingresa el código PIN. Tienes %d intento restante antes de tener que contactar a tu operador para desbloquear el dispositivo. + Ingresa el código PIN. Tienes %d intentos restantes antes de tener que contactar a tu operador para desbloquear el dispositivo. Error: La entrada es más corta que la longitud mínima diff --git a/packages/SettingsLib/res/values-sr/cm_strings.xml b/packages/SettingsLib/res/values-sr/cm_strings.xml index 8078426880b..7c0f361bc58 100644 --- a/packages/SettingsLib/res/values-sr/cm_strings.xml +++ b/packages/SettingsLib/res/values-sr/cm_strings.xml @@ -22,6 +22,6 @@ Апликације Активности Изабери прилагођену апликацију - Изабери прилагођену активност - Пречица закључаног екрана + Избор прилагођене активности + Пречице закључаног екрана diff --git a/packages/SystemUI/res/values-ast-rES/strings.xml b/packages/SystemUI/res/values-ast-rES/strings.xml index 18ef8dc1966..ae352e81095 100644 --- a/packages/SystemUI/res/values-ast-rES/strings.xml +++ b/packages/SystemUI/res/values-ast-rES/strings.xml @@ -310,8 +310,11 @@ for its own notifications [CHAR LIMIT=NONE] --> Axustes de %s + La pantalla voltiará automáticamente. + La pantalla ta bloquiada en mou horizontal. + La pantalla ta bloquiada en mou vertical. @@ -456,8 +459,11 @@ + Silenciu\ntotal + Namái\nprioridá + Namái\nalarmes diff --git a/packages/SystemUI/res/values-es-rUS/cm_strings.xml b/packages/SystemUI/res/values-es-rUS/cm_strings.xml index 4cd9e42f091..a01c08607fc 100644 --- a/packages/SystemUI/res/values-es-rUS/cm_strings.xml +++ b/packages/SystemUI/res/values-es-rUS/cm_strings.xml @@ -173,7 +173,7 @@ Control dinámico Próxima alarma Selector IME - Acceso de Superusuario + Acceso de superusuario Temas Ubicación por triangulación diff --git a/packages/SystemUI/res/values-nb/cm_strings.xml b/packages/SystemUI/res/values-nb/cm_strings.xml index b51ec717018..7097ab3d7bc 100644 --- a/packages/SystemUI/res/values-nb/cm_strings.xml +++ b/packages/SystemUI/res/values-nb/cm_strings.xml @@ -65,8 +65,8 @@ Profil endret til %s. Initialiserer\u2026 - Lys innstillinger - LED lyset aktiveres av innstillingene + Lysinnstillinger + LED-lys aktivert av innstillingene Trykk og hold fliser for å omorganisere Rediger fliser Kan ikke slette Rediger-flisen -- cgit v1.2.3 From 044bf266b575598e0e9bdca3358afdb0d850e8b6 Mon Sep 17 00:00:00 2001 From: Abhisek Devkota Date: Mon, 3 Jul 2017 20:41:50 -0700 Subject: Automatic translation import Change-Id: I51cc7301e5d371079df345714474326e7bad1ee2 --- core/res/res/values-sr/cm_strings.xml | 100 ++++++++++----------- packages/Keyguard/res/values-es-rUS/cm_strings.xml | 2 +- packages/SystemUI/res/values-es-rUS/cm_strings.xml | 2 +- packages/SystemUI/res/values-sr/cm_strings.xml | 4 +- 4 files changed, 54 insertions(+), 54 deletions(-) diff --git a/core/res/res/values-sr/cm_strings.xml b/core/res/res/values-sr/cm_strings.xml index b394d33d3fd..5e73cd78480 100644 --- a/core/res/res/values-sr/cm_strings.xml +++ b/core/res/res/values-sr/cm_strings.xml @@ -20,7 +20,7 @@ Снимак екрана - прими заштићени SMS + пријем заштићених SMS порука Дозволи да апликације приме долазећи заштићени SMS. @@ -40,22 +40,22 @@ Омогућава апликацији да промени бројеве телефона које су блокирани за долазне позиве или поруке. - постави позадину закључаног екрана + постављање позадине закључаног екрана Омогућава апликацији да промени позадину на закључаном екрану. - Рестартуј + Поново покрени Тренутни - Рестартуј + Поново покрени Режим опоравка Покретач система - Preuzimanje + Режим ажурирања система Рестартуј интерфејс @@ -63,11 +63,11 @@ Tаблет ће се рестартовати. - Tелефон ће се рестартовати. + Телефон ће бити поново покренут. - Рестартовање\u2026 + Поново покрећем\u2026 - Апликација је затворена + Апликација је окончана. ADB преко мреже је омогућен @@ -104,68 +104,68 @@ приступ локацији читање обавештења активирање VPN-а - покретање при подизању система + покретање са системом брисање евиденције позива брисање контаката брисање MMS порука брисање SMS порука - приказивање преко других апликација - преузимање статистике коришћења апликација - одржавање уређаја будним - обављање телефонског позива - ажурирање календара - ажурирање евиденције позива - модификација привремене меморије - ажурирање контаката - ажурирање подешавања система - укључивање/искључивање микрофона - репродуковање звука - приказ обавештења - пројектовање медија - читање из календара + повлачење прозора на врх + преузимање статистике о коришћењу апликација + задржавање ван стања спавања + позивање телефона + мењање календара + мењање евиденције позива + мењање меморије + мењање контаката + мењање подешавања система + искључивање/укључивање звука микрофона + пуштање аудио-записа + постављање обавештења + медије за пројекат + читање календара читање евиденције позива - читање из привремене меморије + читање меморије читање контаката - читање ММС порука - читање СМС порука - пријем СМС порука - снима аудио снимка - слање ММС поруке - слање СМС поруке - покретање при подизању система - приказ искачућих обавештења + читање MMS порука + читање SMS порука + пријем SMS порука + снимање аудио-записа + слање MMS порука + слање SMS порука + покретање са системом + приказивање искачућих порука укључивање/искључивање Bluetooth-а укључивање/искључивање мобилних података укључивање/искључивање NFC-а укључивање/искључивање Wi-Fi-а управљање јачином звука аларма - управљање фокусом звука - управљање јачином звука Bluetooth уређаја - контрола главне јачине звука + управљање аудио-фокусом + управљање јачином звука Bluetooth-а + управљање главном јачином звука коришћење дугмади за медије управљање јачином звука медија управљање јачином звука обавештења управљање јачином звука звона - коришћење додирних повратних информација - управљање јачином звука при разговору - писање MMS поруке - писање SMS поруке - користи отисак прста + коришћење вибрације + управљање јачином звука позива + писање MMS порука + писање SMS порука + коришћење отиска прста додавање говорне поште приступ стању телефона скенирање Wi-Fi мрежа - промени тапет - користи помоћну структуру + мењање позадине + коришћење структуре помоћи прављење снимка екрана - коришћење сензора покрета - читај ћелију емитовања - лажирај своју локацију - читање са спољног складишта - писање на спољно складиште + коришћење сензора за тело + читање порука за мобилне уређаје на локалитету + лажирање локације + читање екстерног меморијског простора + упис података у екстерни меморијски простор укључивање екрана - информације о налозима на уређају - промена стања Wi-Fi-а - дај root приступ + приступ налозима на уређају + мењање стања Wi-Fi-а + приступ правима суперкорисника Да бисте откачили екран, додирните и држите дугме „Назад“. diff --git a/packages/Keyguard/res/values-es-rUS/cm_strings.xml b/packages/Keyguard/res/values-es-rUS/cm_strings.xml index f892d20423d..1f11c8ff3cd 100644 --- a/packages/Keyguard/res/values-es-rUS/cm_strings.xml +++ b/packages/Keyguard/res/values-es-rUS/cm_strings.xml @@ -19,7 +19,7 @@ La tarjeta SIM tiene un bloqueo personalizado - Tarjeta no válida. + Tarjeta inválida. Ingresa el código PIN. Tienes %d intento restante antes de tener que contactar a tu operador para desbloquear el dispositivo. diff --git a/packages/SystemUI/res/values-es-rUS/cm_strings.xml b/packages/SystemUI/res/values-es-rUS/cm_strings.xml index a01c08607fc..3d67e90bfb3 100644 --- a/packages/SystemUI/res/values-es-rUS/cm_strings.xml +++ b/packages/SystemUI/res/values-es-rUS/cm_strings.xml @@ -212,7 +212,7 @@ Sin datos SIM - Batería del dock al %d %. + Batería de la base al %d por ciento. Mostrar la cola de reproducción diff --git a/packages/SystemUI/res/values-sr/cm_strings.xml b/packages/SystemUI/res/values-sr/cm_strings.xml index 8bf4c5e6e99..17d835ce9e6 100644 --- a/packages/SystemUI/res/values-sr/cm_strings.xml +++ b/packages/SystemUI/res/values-sr/cm_strings.xml @@ -31,7 +31,7 @@ Превуци лево за %1$s Додирни икону лево или десно да доделиш пречицу за закључани екран. Подразумевано - Изабери апликацију + Избор апликације Изабери акцију Ниједан @@ -173,7 +173,7 @@ Динамичне плочице Следећи аларм IME бирач - Root приступ + Приступ правима суперкорисника Теме Локација три-државе -- cgit v1.2.3 From ea52f1177a63a9728faccd499db5cc7f9971ae85 Mon Sep 17 00:00:00 2001 From: Phil Weaver Date: Thu, 6 Apr 2017 17:40:51 -0700 Subject: Make a11y node info parceling more robust Fix a bug where a malformed Parceled representation of an AccessibilityNodeInfo could be used to mess with Bundles as they get reparceled. Bug: 36491278 Test: Verified that POC no longer works, a11y cts still passes. AOSP-Change-Id: I10f24747e3ab87d77cd1deba56db4526e3aa5441 (cherry picked from commit 687bb44b437f7bb24dd3dddf072c2f646308e2ca) (cherry picked from commit 487d8697333b1e7784394b9cd96cb590b047c513) CVE-2017-0664 Change-Id: I1dfcc4af5112a372ede1608e10d956553436e8f2 --- .../view/accessibility/AccessibilityNodeInfo.java | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 86ed499cabc..b7094912569 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -2670,16 +2670,19 @@ public class AccessibilityNodeInfo implements Parcelable { if (mActions != null && !mActions.isEmpty()) { final int actionCount = mActions.size(); - parcel.writeInt(actionCount); + int nonLegacyActionCount = 0; int defaultLegacyStandardActions = 0; for (int i = 0; i < actionCount; i++) { AccessibilityAction action = mActions.get(i); if (isDefaultLegacyStandardAction(action)) { defaultLegacyStandardActions |= action.getId(); + } else { + nonLegacyActionCount++; } } parcel.writeInt(defaultLegacyStandardActions); + parcel.writeInt(nonLegacyActionCount); for (int i = 0; i < actionCount; i++) { AccessibilityAction action = mActions.get(i); @@ -2690,6 +2693,7 @@ public class AccessibilityNodeInfo implements Parcelable { } } else { parcel.writeInt(0); + parcel.writeInt(0); } parcel.writeInt(mMaxTextLength); @@ -2853,16 +2857,13 @@ public class AccessibilityNodeInfo implements Parcelable { mBoundsInScreen.left = parcel.readInt(); mBoundsInScreen.right = parcel.readInt(); - final int actionCount = parcel.readInt(); - if (actionCount > 0) { - final int legacyStandardActions = parcel.readInt(); - addLegacyStandardActions(legacyStandardActions); - final int nonLegacyActionCount = actionCount - Integer.bitCount(legacyStandardActions); - for (int i = 0; i < nonLegacyActionCount; i++) { - final AccessibilityAction action = new AccessibilityAction( - parcel.readInt(), parcel.readCharSequence()); - addActionUnchecked(action); - } + final int legacyStandardActions = parcel.readInt(); + addLegacyStandardActions(legacyStandardActions); + final int nonLegacyActionCount = parcel.readInt(); + for (int i = 0; i < nonLegacyActionCount; i++) { + final AccessibilityAction action = new AccessibilityAction( + parcel.readInt(), parcel.readCharSequence()); + addActionUnchecked(action); } mMaxTextLength = parcel.readInt(); -- cgit v1.2.3 From 52a095471c639d5076d731d9f06554d08bda5c25 Mon Sep 17 00:00:00 2001 From: Abhisek Devkota Date: Thu, 27 Jul 2017 21:20:09 -0700 Subject: Automatic translation import Change-Id: I427cbc94d42b4c9be2e7f0412e6a8cba1610f844 --- core/res/res/values-ast-rES/strings.xml | 1 + core/res/res/values-ru/cm_strings.xml | 2 +- core/res/res/values-sr/cm_strings.xml | 36 +++++++++++----------- core/res/res/values-tr/cm_strings.xml | 28 ++++++++--------- packages/SystemUI/res/values-es-rUS/cm_strings.xml | 10 +++--- packages/SystemUI/res/values-ja/cm_strings.xml | 10 +++--- packages/SystemUI/res/values-nl/cm_strings.xml | 2 +- packages/SystemUI/res/values-tr/cm_strings.xml | 24 +++++++-------- 8 files changed, 57 insertions(+), 56 deletions(-) diff --git a/core/res/res/values-ast-rES/strings.xml b/core/res/res/values-ast-rES/strings.xml index ae2da1bfda8..a558b1c31ca 100644 --- a/core/res/res/values-ast-rES/strings.xml +++ b/core/res/res/values-ast-rES/strings.xml @@ -513,6 +513,7 @@ + Nun pudo procesase la buelga. Volvi tentalo. diff --git a/core/res/res/values-ru/cm_strings.xml b/core/res/res/values-ru/cm_strings.xml index 38f6a599239..83c4be7214c 100644 --- a/core/res/res/values-ru/cm_strings.xml +++ b/core/res/res/values-ru/cm_strings.xml @@ -57,7 +57,7 @@ Режим обновления ПО - Перезапуск интерфейса + Перезапуск оболочки Перезагрузка пријем заштићених SMS порука - Дозволи да апликације приме долазећи заштићени SMS. + Апликација може да прима долазне заштићене SMS поруке. - измените заштићену SMS листу + мењање списка заштићених SMS порука - Дозвољава апликацији да мења заштићену SMS листу адреса. + Апликација може да мења списак адреса заштићених SMS порука. Безбедност - Дозволе које се односе на безбедносне информације уређаја. + Дозволе које се односе на информације о безбедности уређаја. - читај црну листу телефона + читање списка блокираних бројева - Омогућава апликацији да чита информације о телефонским бројевима који су блокирани за долазне позиве или поруке. + Дозвољава апликацији да чита информације о телефонским бројевима чији су долазни позиви или поруке блокирани. - мењај црну листу телефона + мењање списка блокираних бројева - Омогућава апликацији да промени бројеве телефона које су блокирани за долазне позиве или поруке. + Дозвољава апликацији да мења телефонске бројеве чији су долазни позиви или поруке блокирани. постављање позадине закључаног екрана - Омогућава апликацији да промени позадину на закључаном екрану. + Дозвољава апликацији да мења позадину закључаног екрана. Поново покрени @@ -57,13 +57,13 @@ Режим ажурирања система - Рестартуј интерфејс + Поново покрени интерфејс - Рестартуј + Поново покрени - Tаблет ће се рестартовати. - Телефон ће бити поново покренут. + Таблет ће се поново покренути. + Телефон ће се поново покренути. Поново покрећем\u2026 @@ -71,23 +71,23 @@ ADB преко мреже је омогућен - ADB преко USB & мреже омогућен + ADB преко USB-а и мреже је омогућен Додирните да бисте онемогућили отклањање грешака. - ADB - %1$s - USB & мрежа + ADB – %1$s + USB и мрежа USB Мрежа пресретни подизање апликације - %s није инсталирано + Апликација %s није инсталирана Приоритет Ниједан - Онемогућен Wi-Fi hotspot због промене SIM претплате + Wi-Fi хотспот је онемогућен због промене SIM претплате Искључи Wi-Fi diff --git a/core/res/res/values-tr/cm_strings.xml b/core/res/res/values-tr/cm_strings.xml index 7e315851dda..11ded495f94 100644 --- a/core/res/res/values-tr/cm_strings.xml +++ b/core/res/res/values-tr/cm_strings.xml @@ -20,25 +20,25 @@ Ekran görüntüsü - korumalı SMS al + korunan SMS al - Uygulamaya korumalı bir SMS alma izni verir. + Uygulamaya korunan bir SMS\'i alma izni verir. - korumalı SMS listesini değiştir + korunan SMS listesini değiştir - Uygulamaya korumalı SMS adres listesini değiştirme izni verir. + Uygulamaya korunan SMS adres listesini değiştirme izin verir. Güvenlik - Cihaz güvenlik bilgisi ile ilgili izinler. + Cihaz güvenlik bilgileri ile ilgili izinler. telefon kara listesini oku - Bir uygulamanın gelen çağrıları ya da mesajları engellenmiş telefon numaralarını okumasına izin verir. + Bir uygulamanın gelen aramaları ya da mesajları engellenmiş telefon numaralarını okumasına izin verir. telefon kara listesini değiştir - Bir uygulamanın gelen çağrıları ya da mesajları engellenmiş telefon numaralarını değiştirmesine izin verir. + Bir uygulamanın gelen aramaları ya da mesajları engellenmiş telefon numaralarını değiştirmesine izin verir. tuş kilidi duvar kağıdını ayarla @@ -46,7 +46,7 @@ Yeniden başlat - Şimdiki + Mevcut Yeniden başlat @@ -59,7 +59,7 @@ Yazılımsal yeniden başlatma - Yeniden Başlat + Yeniden başlat Tabletiniz yeniden başlatılacak. @@ -103,7 +103,7 @@ kameraya eriş konuma erişim bildirimleri oku - VPN\'yi etkinleştir + VPN\'i etkinleştir açılışta başla arama kaydını sil kişileri sil @@ -165,9 +165,9 @@ ekranı aç cihaz hesaplarını al Wi-Fi durumunu değiştir - root erişimi al + kök erişimi al - Bu ekranı kaldırmak için Geri tuşuna dokunun ve tutun. + Bu ekranı silmek için Geri tuşuna dokunup basılı tutun. Bağlı cihaz yok %1$s cihaz bağlı @@ -179,8 +179,8 @@ Etkinlik başlatma engellendi %1$s başlatılmadan önce sistem korumaya alındı. Uygulamayı doğrulamak ve başlatmak için dokunun. - Batarya tam olarak şarj edildi - Aygıtınızın pil ömrünü artırmak için şarjdan çıkarın. + Pil tamamen şarj edildi + Cihazınızın pil ömrünü artırmak için şarjdan çıkarın. pil istatistiklerini sıfırla diff --git a/packages/SystemUI/res/values-es-rUS/cm_strings.xml b/packages/SystemUI/res/values-es-rUS/cm_strings.xml index 3d67e90bfb3..d482343d975 100644 --- a/packages/SystemUI/res/values-es-rUS/cm_strings.xml +++ b/packages/SystemUI/res/values-es-rUS/cm_strings.xml @@ -65,8 +65,8 @@ Perfil cambiado a %s. Inicializando\u2026 - Ajustes de luz de notificación - Luz LED activada por ajustes + Configuración de la luz de notificación + Luz LED activada por los ajustes Mantén pulsado los mosaicos para reorganizarlos Editar mosaicos No se puede borrar el mosaico Editar @@ -179,7 +179,7 @@ Informes de ubicación: modo de ahorro de batería. - Informes de ubicación: modo de solo sensores. + Informes de ubicación: modo sólo dispositivo. Informes de ubicación: modo de alta precisión. @@ -187,13 +187,13 @@ Ahorro de batería - Solo dispositivo + Sólo dispositivo Alta precisión Informes de ubicación cambiados a modo de ahorro de batería. - Informes de ubicación cambiados a modo solo dispositivo. + Informes de ubicación cambiados a modo sólo dispositivo. Informes de ubicación cambiados a modo de gran precisión. Mosaicos del sistema diff --git a/packages/SystemUI/res/values-ja/cm_strings.xml b/packages/SystemUI/res/values-ja/cm_strings.xml index 8f28f9380f1..61f834589a7 100644 --- a/packages/SystemUI/res/values-ja/cm_strings.xml +++ b/packages/SystemUI/res/values-ja/cm_strings.xml @@ -104,7 +104,7 @@ USBテザリング 画面のタイムアウト ロック画面 - 常に画面表示ディスプレイ + アンビエント表示 ロック画面強制 プロファイルによって無効になっています @@ -142,13 +142,13 @@ ロック画面がONになりました。 - 常に画面表示ディスプレイはOFFです。 + アンビエント表示は OFF です。 - 常に画面表示ディスプレイはONです。 + アンビエント表示は ON です。 - 常に画面表示ディスプレイがOFFになりました。 + アンビエント表示が OFF になりました。 - 常に画面表示ディスプレイがONになりました。 + アンビエント表示が ON になりました。 ヘッドアップはOFFです。 diff --git a/packages/SystemUI/res/values-nl/cm_strings.xml b/packages/SystemUI/res/values-nl/cm_strings.xml index eb58814872f..8c0e4ba4a3b 100644 --- a/packages/SystemUI/res/values-nl/cm_strings.xml +++ b/packages/SystemUI/res/values-nl/cm_strings.xml @@ -52,7 +52,7 @@ Nu stoppen - Verwijderen + Deïnstalleren Verlichtingshelderheid diff --git a/packages/SystemUI/res/values-tr/cm_strings.xml b/packages/SystemUI/res/values-tr/cm_strings.xml index ae49a53572e..84274e43fc1 100644 --- a/packages/SystemUI/res/values-tr/cm_strings.xml +++ b/packages/SystemUI/res/values-tr/cm_strings.xml @@ -29,11 +29,11 @@ %1$s için sağa kaydırın %1$s için sola kaydırın - Kilit ekranı kısayollarını ayarlamak için sağ ya da soldaki simgeye dokunun. + Kilit ekranı kısayolunu atamak için sol veya sağdaki bir simgeye dokunun. Varsayılan Uygulama seçin Eylem seçin - Yok + Hiçbiri Atamak için işlev seçin Ana ekran tuşu @@ -41,8 +41,8 @@ Arama tuşu Geri tuşu Boş tuş - Menü (otoGizle) tuşu - Menü (hepGöster) tuşu + Menü (otomatik gizle) tuşu + Menü (herzaman göster) tuşu Menü tuşu Sol imleç Sağ imleç @@ -78,7 +78,7 @@ Parlaklık kaydırıcısını göster İlk satırı büyüt - Ekrandan kaldırana kadar görünümde tutar. Kaldırmak için Geri tuşuna dokunun ve tutun. + Bu, siz sabitleyene kadar onu korur. Sabitlemek için Geri düğmesine dokunun ve basılı tutun. Özel kare Kareyi kaldır Ağ üzerinden ADB @@ -89,7 +89,7 @@ Bildirim pencereleri Pil tasarrufu - Batarya kurtarıcı (şarj ediliyor) + Pil koruyucu (şarj ediliyor) Kafein Eşitleme kapalı. @@ -108,7 +108,7 @@ Kilit ekranı zorunlu Profil tarafından devre dışı - Ekran zaman aşımı : %s. + Ekran zaman aşımı: %s. Ekran zaman aşımı %s olarak ayarlandı. Pil modu @@ -172,8 +172,8 @@ Dinamik kare Sonraki alarm - IME seçici - Root erişimi + Klavye seçici + Kök erişimi Temalar 3-durumlu konum @@ -202,12 +202,12 @@ Uçak modu etkinken hücresel ağlarla bağlantı kurulamıyor. Uçak modunu devre dışı bırakın ve tekrar deneyin. - Flaş ışığı açık + El feneri açık Kapatmak için dokunun - %1$d istemci - %1$d istemci + %1$d cihaz + %1$d cihaz SIM verisi yok -- cgit v1.2.3 From f579e002869f3d066b848eb5525bba0dd76f92a1 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Fri, 2 Jun 2017 12:16:44 -0700 Subject: Close connection before retrying Otherwise the (CTS) server might run out of connections. Bug: 38391487 Bug: 22771132 Test: build, run CTS, stream music Change-Id: I92c782a6799ab36eec8df3f7c3217bea667b838a (cherry picked from commit 46132afee7783665ae12538edd024770dbd93ecb) --- media/java/android/media/MediaHTTPConnection.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java index 59eaeef1e29..dbd5b41ae0e 100644 --- a/media/java/android/media/MediaHTTPConnection.java +++ b/media/java/android/media/MediaHTTPConnection.java @@ -157,7 +157,13 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { private void teardownConnection() { if (mConnection != null) { - mInputStream = null; + if (mInputStream != null) { + try { + mInputStream.close(); + } catch (IOException e) { + } + mInputStream = null; + } mConnection.disconnect(); mConnection = null; @@ -346,8 +352,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { mCurrentOffset = offset; } catch (IOException e) { mTotalSize = -1; - mInputStream = null; - mConnection = null; + teardownConnection(); mCurrentOffset = -1; throw e; -- cgit v1.2.3 From 0ef6da6baee73c4e951fb43c1afd7e07f8223cc5 Mon Sep 17 00:00:00 2001 From: Gabriele M Date: Tue, 25 Jul 2017 18:47:06 +0200 Subject: AppOps: Prevent deadlock when making note of applications If noteOperation() is called with ActivityManagerService locked, AppOpsService won't be able to show the PermissionDialog, causing noteOperation() to wait indefinitely. Keep a reference to the current ActivityManagerService instance so that we can check whether showing the PermissionDialog is safe or not. Even though there's currently no code path that causes startOperation() to be called with ActivityManagerService locked, add the same check there to prevent the same from happening in future. BUGBASH-17 Change-Id: I118aac6ddf91774a038d73047162cfdb8395e58d --- services/core/java/com/android/server/AppOpsService.java | 9 ++++++--- .../core/java/com/android/server/am/ActivityManagerService.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index b205d24fb90..f599250e433 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -76,6 +76,7 @@ import com.android.internal.os.Zygote; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.XmlUtils; +import com.android.server.am.ActivityManagerService; import com.android.server.PermissionDialogReqQueue.PermissionDialogReq; import libcore.util.EmptyArray; @@ -100,6 +101,7 @@ public class AppOpsService extends IAppOpsService.Stub { final boolean mStrictEnable; AppOpsPolicy mPolicy; private PowerManager mPowerManager; + private final ActivityManagerService mActivityManagerService; private static final int[] PRIVACY_GUARD_OP_STATES = new int[] { AppOpsManager.OP_COARSE_LOCATION, @@ -278,11 +280,12 @@ public class AppOpsService extends IAppOpsService.Stub { } } - public AppOpsService(File storagePath, Handler handler) { + public AppOpsService(File storagePath, Handler handler, ActivityManagerService service) { mFile = new AtomicFile(storagePath); mHandler = handler; mLooper = Looper.myLooper(); mStrictEnable = AppOpsManager.isStrictEnable(); + mActivityManagerService = service; readState(); } @@ -1097,7 +1100,7 @@ public class AppOpsService extends IAppOpsService.Stub { return AppOpsManager.MODE_ALLOWED; } else { - if (Looper.myLooper() == mLooper) { + if (Looper.myLooper() == mLooper || Thread.holdsLock(mActivityManagerService)) { Log.e(TAG, "noteOperation: This method will deadlock if called from the main thread. (Code: " + code @@ -1217,7 +1220,7 @@ public class AppOpsService extends IAppOpsService.Stub { broadcastOpIfNeeded(code); return AppOpsManager.MODE_ALLOWED; } else { - if (Looper.myLooper() == mLooper) { + if (Looper.myLooper() == mLooper || Thread.holdsLock(mActivityManagerService)) { Log.e(TAG, "startOperation: This method will deadlock if called from the main thread. (Code: " + code diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 37156204e30..6c076d06f21 100755 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -2561,7 +2561,7 @@ public final class ActivityManagerService extends ActivityManagerNative mProcessStats = new ProcessStatsService(this, new File(systemDir, "procstats")); - mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler); + mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler, this); mGrantFile = new AtomicFile(new File(systemDir, "urigrants.xml")); -- cgit v1.2.3 From 032b20262e5982251ec6d7391bd7ef7e72eac8e3 Mon Sep 17 00:00:00 2001 From: Gabriele M Date: Thu, 27 Jul 2017 20:18:53 +0200 Subject: AppOps: Fix yet another deadlock A = AppOpsService.this B = PowerManagerService.mLock Thread 1: AppOpsService.noteOperation() (lock A) -> PowerManagerService.isInteractive() (lock B) Thread 2: PowerManagerService.acquireWakeLockInternal() (lock B) -> AppOpsService.startOperation() (lock A) Move PowerManagerService.isInteractive() so that 'Thread 1' becomes: PowerManagerService.isInteractive() (lock and release B) -> AppOpsService.noteOperation() (lock A) Change-Id: I6b2050bf6deaf6db94b9243c1a81c37e25ad55a2 --- services/core/java/com/android/server/AppOpsService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index f599250e433..9412213de32 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -1049,6 +1049,7 @@ public class AppOpsService extends IAppOpsService.Stub { private int noteOperationUnchecked(int code, int uid, String packageName, int proxyUid, String proxyPackageName) { final PermissionDialogReq req; + final boolean isInteractive = mPowerManager != null ? mPowerManager.isInteractive() : false; synchronized (this) { Ops ops = getOpsLocked(uid, packageName, true); if (ops == null) { @@ -1133,7 +1134,6 @@ public class AppOpsService extends IAppOpsService.Stub { // we move them to the back of the line. NOTE: these values are magic, and may need // tuning. Ideally we'd want a ringbuffer or token bucket here to do proper rate // limiting. - final boolean isInteractive = mPowerManager.isInteractive(); if (isInteractive && (ops.uidState.pkgOps.size() < AppOpsPolicy.RATE_LIMIT_OPS_TOTAL_PKG_COUNT && op.noteOpCount < AppOpsPolicy.RATE_LIMIT_OP_COUNT -- cgit v1.2.3