已开启
fd_test_1 #20358
xhz-sz创建于 8 天前
fd_test_1 #20358
已开启
共 3 个文件变更+82-16
| @@ -14,6 +14,7 @@ | |||
| 14 | */ | 14 | */ |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | + | ||
| 17 | 18 | ||
| 18 | 19 | ||
| 19 | 20 | ||
| @@ -1287,6 +1288,7 @@ int AbilityManagerStub::TerminateAbilityInner(MessageParcel &data, MessageParcel | |||
| 1287 | } | 1288 | } |
| 1288 | reply.WriteInt32(result); | 1289 | reply.WriteInt32(result); |
| 1289 | if (resultWant != nullptr) { | 1290 | if (resultWant != nullptr) { |
| 1291 | + resultWant->CloseAllFd(); | ||
| 1290 | delete resultWant; | 1292 | delete resultWant; |
| 1291 | } | 1293 | } |
| 1292 | return NO_ERROR; | 1294 | return NO_ERROR; |
| @@ -1307,6 +1309,7 @@ int AbilityManagerStub::BackToCallerInner(MessageParcel &data, MessageParcel &re | |||
| 1307 | int32_t result = BackToCallerAbilityWithResult(token, resultCode, resultWant, callerRequestCode); | 1309 | int32_t result = BackToCallerAbilityWithResult(token, resultCode, resultWant, callerRequestCode); |
| 1308 | reply.WriteInt32(result); | 1310 | reply.WriteInt32(result); |
| 1309 | if (resultWant != nullptr) { | 1311 | if (resultWant != nullptr) { |
| 1312 | + resultWant->CloseAllFd(); | ||
| 1310 | delete resultWant; | 1313 | delete resultWant; |
| 1311 | } | 1314 | } |
| 1312 | return NO_ERROR; | 1315 | return NO_ERROR; |
| @@ -1341,6 +1344,7 @@ int AbilityManagerStub::TerminateUIExtensionAbilityInner(MessageParcel &data, Me | |||
| 1341 | } | 1344 | } |
| 1342 | reply.WriteInt32(result); | 1345 | reply.WriteInt32(result); |
| 1343 | if (resultWant != nullptr) { | 1346 | if (resultWant != nullptr) { |
| 1347 | + resultWant->CloseAllFd(); | ||
| 1344 | delete resultWant; | 1348 | delete resultWant; |
| 1345 | } | 1349 | } |
| 1346 | return NO_ERROR; | 1350 | return NO_ERROR; |
| @@ -1371,6 +1375,7 @@ int AbilityManagerStub::SendResultToAbilityInner(MessageParcel &data, MessagePar | |||
| 1371 | int32_t result = SendResultToAbility(requestCode, resultCode, *resultWant); | 1375 | int32_t result = SendResultToAbility(requestCode, resultCode, *resultWant); |
| 1372 | reply.WriteInt32(result); | 1376 | reply.WriteInt32(result); |
| 1373 | if (resultWant != nullptr) { | 1377 | if (resultWant != nullptr) { |
| 1378 | + resultWant->CloseAllFd(); | ||
| 1374 | delete resultWant; | 1379 | delete resultWant; |
| 1375 | } | 1380 | } |
| 1376 | return NO_ERROR; | 1381 | return NO_ERROR; |
| @@ -1574,6 +1579,7 @@ int AbilityManagerStub::StartAbilityInner(MessageParcel &data, MessageParcel &re | |||
| 1574 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1579 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1575 | return ERR_INVALID_VALUE; | 1580 | return ERR_INVALID_VALUE; |
| 1576 | } | 1581 | } |
| 1582 | + WantFdScope fdScope(*want); | ||
| 1577 | SanitizeWantParams(*want); | 1583 | SanitizeWantParams(*want); |
| 1578 | int32_t userId = data.ReadInt32(); | 1584 | int32_t userId = data.ReadInt32(); |
| 1579 | int requestCode = data.ReadInt32(); | 1585 | int requestCode = data.ReadInt32(); |
| @@ -1590,6 +1596,7 @@ int AbilityManagerStub::StartAbilityInnerSpecifyTokenId(MessageParcel &data, Mes | |||
| 1590 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1596 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1591 | return ERR_INVALID_VALUE; | 1597 | return ERR_INVALID_VALUE; |
| 1592 | } | 1598 | } |
| 1599 | + WantFdScope fdScope(*want); | ||
| 1593 | SanitizeWantParams(*want); | 1600 | SanitizeWantParams(*want); |
| 1594 | 1601 | ||
| 1595 | sptr<IRemoteObject> callerToken = nullptr; | 1602 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -1611,6 +1618,7 @@ int AbilityManagerStub::StartAbilityByUIContentSessionAddCallerInner(MessageParc | |||
| 1611 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1618 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1612 | return ERR_INVALID_VALUE; | 1619 | return ERR_INVALID_VALUE; |
| 1613 | } | 1620 | } |
| 1621 | + WantFdScope fdScope(*want); | ||
| 1614 | SanitizeWantParams(*want); | 1622 | SanitizeWantParams(*want); |
| 1615 | 1623 | ||
| 1616 | sptr<IRemoteObject> callerToken = nullptr; | 1624 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -1645,6 +1653,7 @@ int AbilityManagerStub::StartAbilityByUIContentSessionForOptionsInner(MessagePar | |||
| 1645 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1653 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1646 | return ERR_INVALID_VALUE; | 1654 | return ERR_INVALID_VALUE; |
| 1647 | } | 1655 | } |
| 1656 | + WantFdScope fdScope(*want); | ||
| 1648 | SanitizeWantParams(*want); | 1657 | SanitizeWantParams(*want); |
| 1649 | std::unique_ptr<StartOptions> startOptions(data.ReadParcelable<StartOptions>()); | 1658 | std::unique_ptr<StartOptions> startOptions(data.ReadParcelable<StartOptions>()); |
| 1650 | if (startOptions == nullptr) { | 1659 | if (startOptions == nullptr) { |
| @@ -1683,6 +1692,7 @@ int AbilityManagerStub::StartExtensionAbilityInner(MessageParcel &data, MessageP | |||
| 1683 | TAG_LOGE(AAFwkTag::SERVICE_EXT, "want null"); | 1692 | TAG_LOGE(AAFwkTag::SERVICE_EXT, "want null"); |
| 1684 | return ERR_INVALID_VALUE; | 1693 | return ERR_INVALID_VALUE; |
| 1685 | } | 1694 | } |
| 1695 | + WantFdScope fdScope(*want); | ||
| 1686 | SanitizeWantParams(*want); | 1696 | SanitizeWantParams(*want); |
| 1687 | sptr<IRemoteObject> callerToken = nullptr; | 1697 | sptr<IRemoteObject> callerToken = nullptr; |
| 1688 | if (data.ReadBool()) { | 1698 | if (data.ReadBool()) { |
| @@ -1703,6 +1713,7 @@ int AbilityManagerStub::RequestModalUIExtensionInner(MessageParcel &data, Messag | |||
| 1703 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1713 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1704 | return ERR_INVALID_VALUE; | 1714 | return ERR_INVALID_VALUE; |
| 1705 | } | 1715 | } |
| 1716 | + WantFdScope fdScope(*want); | ||
| 1706 | SanitizeWantParams(*want); | 1717 | SanitizeWantParams(*want); |
| 1707 | int32_t result = RequestModalUIExtension(*want); | 1718 | int32_t result = RequestModalUIExtension(*want); |
| 1708 | reply.WriteInt32(result); | 1719 | reply.WriteInt32(result); |
| @@ -1716,6 +1727,7 @@ int AbilityManagerStub::RequestModalUIExtensionWithAccountInner(MessageParcel &d | |||
| 1716 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1727 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1717 | return ERR_INVALID_VALUE; | 1728 | return ERR_INVALID_VALUE; |
| 1718 | } | 1729 | } |
| 1730 | + WantFdScope fdScope(*want); | ||
| 1719 | SanitizeWantParams(*want); | 1731 | SanitizeWantParams(*want); |
| 1720 | int32_t accountId = data.ReadInt32(); | 1732 | int32_t accountId = data.ReadInt32(); |
| 1721 | int32_t result = RequestModalUIExtensionWithAccount(*want, accountId); | 1733 | int32_t result = RequestModalUIExtensionWithAccount(*want, accountId); |
| @@ -1730,6 +1742,7 @@ int AbilityManagerStub::PreloadUIExtensionAbilityInner(MessageParcel &data, Mess | |||
| 1730 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 1742 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 1731 | return ERR_INVALID_VALUE; | 1743 | return ERR_INVALID_VALUE; |
| 1732 | } | 1744 | } |
| 1745 | + WantFdScope fdScope(*want); | ||
| 1733 | SanitizeWantParams(*want); | 1746 | SanitizeWantParams(*want); |
| 1734 | std::string hostBundleName = Str16ToStr8(data.ReadString16()); | 1747 | std::string hostBundleName = Str16ToStr8(data.ReadString16()); |
| 1735 | int32_t userId = data.ReadInt32(); | 1748 | int32_t userId = data.ReadInt32(); |
| @@ -1861,6 +1874,7 @@ int AbilityManagerStub::StopExtensionAbilityInner(MessageParcel& data, MessagePa | |||
| 1861 | TAG_LOGE(AAFwkTag::SERVICE_EXT, "null want"); | 1874 | TAG_LOGE(AAFwkTag::SERVICE_EXT, "null want"); |
| 1862 | return ERR_INVALID_VALUE; | 1875 | return ERR_INVALID_VALUE; |
| 1863 | } | 1876 | } |
| 1877 | + WantFdScope fdScope(*want); | ||
| 1864 | SanitizeWantParams(*want); | 1878 | SanitizeWantParams(*want); |
| 1865 | sptr<IRemoteObject> callerToken = nullptr; | 1879 | sptr<IRemoteObject> callerToken = nullptr; |
| 1866 | if (data.ReadBool()) { | 1880 | if (data.ReadBool()) { |
| @@ -1881,6 +1895,7 @@ int AbilityManagerStub::StartAbilityAddCallerInner(MessageParcel &data, MessageP | |||
| 1881 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 1895 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 1882 | return ERR_INVALID_VALUE; | 1896 | return ERR_INVALID_VALUE; |
| 1883 | } | 1897 | } |
| 1898 | + WantFdScope fdScope(*want); | ||
| 1884 | SanitizeWantParams(*want); | 1899 | SanitizeWantParams(*want); |
| 1885 | 1900 | ||
| 1886 | sptr<IRemoteObject> callerToken = nullptr; | 1901 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -1903,6 +1918,7 @@ int AbilityManagerStub::StartAbilityAsCallerByTokenInner(MessageParcel &data, Me | |||
| 1903 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 1918 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 1904 | return ERR_INVALID_VALUE; | 1919 | return ERR_INVALID_VALUE; |
| 1905 | } | 1920 | } |
| 1921 | + WantFdScope fdScope(*want); | ||
| 1906 | SanitizeWantParams(*want); | 1922 | SanitizeWantParams(*want); |
| 1907 | 1923 | ||
| 1908 | sptr<IRemoteObject> callerToken = nullptr; | 1924 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -1927,6 +1943,7 @@ int AbilityManagerStub::StartAbilityAsCallerForOptionInner(MessageParcel &data, | |||
| 1927 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 1943 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 1928 | return ERR_INVALID_VALUE; | 1944 | return ERR_INVALID_VALUE; |
| 1929 | } | 1945 | } |
| 1946 | + WantFdScope fdScope(*want); | ||
| 1930 | SanitizeWantParams(*want); | 1947 | SanitizeWantParams(*want); |
| 1931 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); | 1948 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); |
| 1932 | if (startOptions == nullptr) { | 1949 | if (startOptions == nullptr) { |
| @@ -1957,6 +1974,7 @@ int AbilityManagerStub::ConnectAbilityInner(MessageParcel &data, MessageParcel & | |||
| 1957 | TAG_LOGE(AAFwkTag::SERVICE_EXT, "null want"); | 1974 | TAG_LOGE(AAFwkTag::SERVICE_EXT, "null want"); |
| 1958 | return ERR_INVALID_VALUE; | 1975 | return ERR_INVALID_VALUE; |
| 1959 | } | 1976 | } |
| 1977 | + WantFdScope fdScope(*want); | ||
| 1960 | SanitizeWantParams(*want); | 1978 | SanitizeWantParams(*want); |
| 1961 | sptr<IAbilityConnection> callback = nullptr; | 1979 | sptr<IAbilityConnection> callback = nullptr; |
| 1962 | sptr<IRemoteObject> token = nullptr; | 1980 | sptr<IRemoteObject> token = nullptr; |
| @@ -1979,6 +1997,7 @@ int AbilityManagerStub::ConnectAbilityWithTypeInner(MessageParcel &data, Message | |||
| 1979 | TAG_LOGE(AAFwkTag::ABILITYMGR, "%{public}s, null want", __func__); | 1997 | TAG_LOGE(AAFwkTag::ABILITYMGR, "%{public}s, null want", __func__); |
| 1980 | return ERR_INVALID_VALUE; | 1998 | return ERR_INVALID_VALUE; |
| 1981 | } | 1999 | } |
| 2000 | + WantFdScope fdScope(*want); | ||
| 1982 | SanitizeWantParams(*want); | 2001 | SanitizeWantParams(*want); |
| 1983 | sptr<IAbilityConnection> callback = nullptr; | 2002 | sptr<IAbilityConnection> callback = nullptr; |
| 1984 | sptr<IRemoteObject> token = nullptr; | 2003 | sptr<IRemoteObject> token = nullptr; |
| @@ -2007,6 +2026,7 @@ int AbilityManagerStub::ConnectUIExtensionAbilityInner(MessageParcel &data, Mess | |||
| 2007 | TAG_LOGE(AAFwkTag::ABILITYMGR, "%{public}s, null want", __func__); | 2026 | TAG_LOGE(AAFwkTag::ABILITYMGR, "%{public}s, null want", __func__); |
| 2008 | return ERR_INVALID_VALUE; | 2027 | return ERR_INVALID_VALUE; |
| 2009 | } | 2028 | } |
| 2029 | + WantFdScope fdScope(*want); | ||
| 2010 | SanitizeWantParams(*want); | 2030 | SanitizeWantParams(*want); |
| 2011 | sptr<IAbilityConnection> callback = nullptr; | 2031 | sptr<IAbilityConnection> callback = nullptr; |
| 2012 | if (data.ReadBool()) { | 2032 | if (data.ReadBool()) { |
| @@ -2052,6 +2072,7 @@ int AbilityManagerStub::StopServiceAbilityInner(MessageParcel &data, MessageParc | |||
| 2052 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 2072 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 2053 | return ERR_INVALID_VALUE; | 2073 | return ERR_INVALID_VALUE; |
| 2054 | } | 2074 | } |
| 2075 | + WantFdScope fdScope(*want); | ||
| 2055 | SanitizeWantParams(*want); | 2076 | SanitizeWantParams(*want); |
| 2056 | int32_t userId = data.ReadInt32(); | 2077 | int32_t userId = data.ReadInt32(); |
| 2057 | sptr<IRemoteObject> token = nullptr; | 2078 | sptr<IRemoteObject> token = nullptr; |
| @@ -2108,6 +2129,7 @@ int AbilityManagerStub::StartAbilityForSettingsInner(MessageParcel &data, Messag | |||
| 2108 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 2129 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 2109 | return ERR_INVALID_VALUE; | 2130 | return ERR_INVALID_VALUE; |
| 2110 | } | 2131 | } |
| 2132 | + WantFdScope fdScope(*want); | ||
| 2111 | SanitizeWantParams(*want); | 2133 | SanitizeWantParams(*want); |
| 2112 | AbilityStartSetting *abilityStartSetting = data.ReadParcelable<AbilityStartSetting>(); | 2134 | AbilityStartSetting *abilityStartSetting = data.ReadParcelable<AbilityStartSetting>(); |
| 2113 | if (abilityStartSetting == nullptr) { | 2135 | if (abilityStartSetting == nullptr) { |
| @@ -2133,6 +2155,7 @@ int AbilityManagerStub::StartAbilityForOptionsInner(MessageParcel &data, Message | |||
| 2133 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 2155 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 2134 | return ERR_INVALID_VALUE; | 2156 | return ERR_INVALID_VALUE; |
| 2135 | } | 2157 | } |
| 2158 | + WantFdScope fdScope(*want); | ||
| 2136 | SanitizeWantParams(*want); | 2159 | SanitizeWantParams(*want); |
| 2137 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); | 2160 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); |
| 2138 | if (startOptions == nullptr) { | 2161 | if (startOptions == nullptr) { |
| @@ -2367,6 +2390,7 @@ int AbilityManagerStub::GetPendingRequestWantInner(MessageParcel &data, MessageP | |||
| 2367 | TAG_LOGE(AAFwkTag::ABILITYMGR, "read wanr parcel failed"); | 2390 | TAG_LOGE(AAFwkTag::ABILITYMGR, "read wanr parcel failed"); |
| 2368 | return ERR_INVALID_VALUE; | 2391 | return ERR_INVALID_VALUE; |
| 2369 | } | 2392 | } |
| 2393 | + WantFdScope fdScope(*want); | ||
| 2370 | SanitizeWantParams(*want); | 2394 | SanitizeWantParams(*want); |
| 2371 | int32_t result = GetPendingRequestWant(wantSender, want); | 2395 | int32_t result = GetPendingRequestWant(wantSender, want); |
| 2372 | if (result != NO_ERROR) { | 2396 | if (result != NO_ERROR) { |
| @@ -2391,6 +2415,7 @@ int AbilityManagerStub::GetPendingRequestWantFromProxyInner(MessageParcel &data, | |||
| 2391 | TAG_LOGE(AAFwkTag::ABILITYMGR, "read wanr parcel failed"); | 2415 | TAG_LOGE(AAFwkTag::ABILITYMGR, "read wanr parcel failed"); |
| 2392 | return ERR_INVALID_VALUE; | 2416 | return ERR_INVALID_VALUE; |
| 2393 | } | 2417 | } |
| 2418 | + WantFdScope fdScope(*want); | ||
| 2394 | SanitizeWantParams(*want); | 2419 | SanitizeWantParams(*want); |
| 2395 | int32_t result = GetPendingRequestWantFromProxy(wantSender, want); | 2420 | int32_t result = GetPendingRequestWantFromProxy(wantSender, want); |
| 2396 | if (result != NO_ERROR) { | 2421 | if (result != NO_ERROR) { |
| @@ -2509,6 +2534,7 @@ int AbilityManagerStub::StartContinuationInner(MessageParcel &data, MessageParce | |||
| 2509 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 2534 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 2510 | return ERR_NULL_OBJECT; | 2535 | return ERR_NULL_OBJECT; |
| 2511 | } | 2536 | } |
| 2537 | + WantFdScope fdScope(*want); | ||
| 2512 | SanitizeWantParams(*want); | 2538 | SanitizeWantParams(*want); |
| 2513 | 2539 | ||
| 2514 | sptr<IRemoteObject> abilityToken = data.ReadRemoteObject(); | 2540 | sptr<IRemoteObject> abilityToken = data.ReadRemoteObject(); |
| @@ -2743,6 +2769,7 @@ int AbilityManagerStub::StartAbilityByCallInner(MessageParcel &data, MessageParc | |||
| 2743 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 2769 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 2744 | return ERR_INVALID_VALUE; | 2770 | return ERR_INVALID_VALUE; |
| 2745 | } | 2771 | } |
| 2772 | + WantFdScope fdScope(*want); | ||
| 2746 | SanitizeWantParams(*want); | 2773 | SanitizeWantParams(*want); |
| 2747 | 2774 | ||
| 2748 | auto callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject()); | 2775 | auto callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject()); |
| @@ -2780,6 +2807,7 @@ int AbilityManagerStub::StartAbilityForPrelaunchInner(MessageParcel &data, Messa | |||
| 2780 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 2807 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 2781 | return ERR_INVALID_VALUE; | 2808 | return ERR_INVALID_VALUE; |
| 2782 | } | 2809 | } |
| 2810 | + WantFdScope fdScope(*want); | ||
| 2783 | SanitizeWantParams(*want); | 2811 | SanitizeWantParams(*want); |
| 2784 | int32_t frameNum = data.ReadInt32(); | 2812 | int32_t frameNum = data.ReadInt32(); |
| 2785 | int32_t result = StartAbilityForPrelaunch(*want, frameNum); | 2813 | int32_t result = StartAbilityForPrelaunch(*want, frameNum); |
| @@ -3117,6 +3145,7 @@ int AbilityManagerStub::StartUserTestInner(MessageParcel &data, MessageParcel &r | |||
| 3117 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 3145 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 3118 | return ERR_INVALID_VALUE; | 3146 | return ERR_INVALID_VALUE; |
| 3119 | } | 3147 | } |
| 3148 | + WantFdScope fdScope(*want); | ||
| 3120 | SanitizeWantParams(*want); | 3149 | SanitizeWantParams(*want); |
| 3121 | auto observer = data.ReadRemoteObject(); | 3150 | auto observer = data.ReadRemoteObject(); |
| 3122 | int32_t result = StartUserTest(*want, observer); | 3151 | int32_t result = StartUserTest(*want, observer); |
| @@ -3515,6 +3544,7 @@ int AbilityManagerStub::ScheduleRecoverAbilityInner(MessageParcel &data, Message | |||
| 3515 | } | 3544 | } |
| 3516 | ScheduleRecoverAbility(token, reason, want); | 3545 | ScheduleRecoverAbility(token, reason, want); |
| 3517 | if (want != nullptr) { | 3546 | if (want != nullptr) { |
| 3547 | + want->CloseAllFd(); | ||
| 3518 | delete want; | 3548 | delete want; |
| 3519 | } | 3549 | } |
| 3520 | return NO_ERROR; | 3550 | return NO_ERROR; |
| @@ -3732,6 +3762,7 @@ int AbilityManagerStub::SendDialogResultInner(MessageParcel &data, MessageParcel | |||
| 3732 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 3762 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 3733 | return ERR_INVALID_VALUE; | 3763 | return ERR_INVALID_VALUE; |
| 3734 | } | 3764 | } |
| 3765 | + WantFdScope fdScope(*want); | ||
| 3735 | SanitizeWantParams(*want); | 3766 | SanitizeWantParams(*want); |
| 3736 | std::string dialogSessionId = data.ReadString(); | 3767 | std::string dialogSessionId = data.ReadString(); |
| 3737 | bool isAllow = data.ReadBool(); | 3768 | bool isAllow = data.ReadBool(); |
| @@ -3970,6 +4001,7 @@ int32_t AbilityManagerStub::StartSpecifiedAbilityBySCBInner(MessageParcel &data, | |||
| 3970 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4001 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 3971 | return ERR_INVALID_VALUE; | 4002 | return ERR_INVALID_VALUE; |
| 3972 | } | 4003 | } |
| 4004 | + WantFdScope fdScope(*want); | ||
| 3973 | SanitizeWantParams(*want); | 4005 | SanitizeWantParams(*want); |
| 3974 | std::unique_ptr<StartSpecifiedAbilityParams> params(data.ReadParcelable<StartSpecifiedAbilityParams>()); | 4006 | std::unique_ptr<StartSpecifiedAbilityParams> params(data.ReadParcelable<StartSpecifiedAbilityParams>()); |
| 3975 | if (params == nullptr) { | 4007 | if (params == nullptr) { |
| @@ -3988,6 +4020,7 @@ int AbilityManagerStub::NotifySaveAsResultInner(MessageParcel &data, MessageParc | |||
| 3988 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4020 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 3989 | return ERR_INVALID_VALUE; | 4021 | return ERR_INVALID_VALUE; |
| 3990 | } | 4022 | } |
| 4023 | + WantFdScope fdScope(*want); | ||
| 3991 | SanitizeWantParams(*want); | 4024 | SanitizeWantParams(*want); |
| 3992 | int resultCode = data.ReadInt32(); | 4025 | int resultCode = data.ReadInt32(); |
| 3993 | int requestCode = data.ReadInt32(); | 4026 | int requestCode = data.ReadInt32(); |
| @@ -4352,6 +4385,7 @@ int32_t AbilityManagerStub::IsAbilityControllerStartInner(MessageParcel &data, M | |||
| 4352 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4385 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4353 | return true; | 4386 | return true; |
| 4354 | } | 4387 | } |
| 4388 | + WantFdScope fdScope(*want); | ||
| 4355 | SanitizeWantParams(*want); | 4389 | SanitizeWantParams(*want); |
| 4356 | bool result = IsAbilityControllerStart(*want); | 4390 | bool result = IsAbilityControllerStart(*want); |
| 4357 | reply.WriteBool(result); | 4391 | reply.WriteBool(result); |
| @@ -4407,6 +4441,7 @@ int32_t AbilityManagerStub::ExecuteIntentForDistributedInner(MessageParcel &data | |||
| 4407 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4441 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4408 | return ERR_INVALID_VALUE; | 4442 | return ERR_INVALID_VALUE; |
| 4409 | } | 4443 | } |
| 4444 | + WantFdScope fdScope(*want); | ||
| 4410 | 4445 | ||
| 4411 | std::string srcDeviceId = data.ReadString(); | 4446 | std::string srcDeviceId = data.ReadString(); |
| 4412 | if (srcDeviceId.empty()) { | 4447 | if (srcDeviceId.empty()) { |
| @@ -4464,6 +4499,7 @@ int AbilityManagerStub::StartAbilityForResultAsCallerInner(MessageParcel &data, | |||
| 4464 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4499 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4465 | return ERR_INVALID_VALUE; | 4500 | return ERR_INVALID_VALUE; |
| 4466 | } | 4501 | } |
| 4502 | + WantFdScope fdScope(*want); | ||
| 4467 | SanitizeWantParams(*want); | 4503 | SanitizeWantParams(*want); |
| 4468 | sptr<IRemoteObject> callerToken = nullptr; | 4504 | sptr<IRemoteObject> callerToken = nullptr; |
| 4469 | if (data.ReadBool()) { | 4505 | if (data.ReadBool()) { |
| @@ -4485,6 +4521,7 @@ int32_t AbilityManagerStub::StartUIAbilitiesInSplitWindowModeInner(MessageParcel | |||
| 4485 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4521 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4486 | return ERR_INVALID_VALUE; | 4522 | return ERR_INVALID_VALUE; |
| 4487 | } | 4523 | } |
| 4524 | + WantFdScope fdScope(*want); | ||
| 4488 | SanitizeWantParams(*want); | 4525 | SanitizeWantParams(*want); |
| 4489 | sptr<IRemoteObject> callerToken = data.ReadRemoteObject(); | 4526 | sptr<IRemoteObject> callerToken = data.ReadRemoteObject(); |
| 4490 | if (callerToken == nullptr) { | 4527 | if (callerToken == nullptr) { |
| @@ -4512,6 +4549,7 @@ int32_t AbilityManagerStub::StartUIAbilitiesInner(MessageParcel &data, MessagePa | |||
| 4512 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 4549 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
A | |||
| 4513 | return ERR_NATIVE_IPC_PARCEL_FAILED; | 4550 | return ERR_NATIVE_IPC_PARCEL_FAILED; |
| 4514 | } | 4551 | } |
| 4552 | + WantFdScope fdScope(*want); | ||
| 4515 | SanitizeWantParams(*want); | 4553 | SanitizeWantParams(*want); |
| 4516 | wantList.emplace_back(*want); | 4554 | wantList.emplace_back(*want); |
| 4517 | } | 4555 | } |
| @@ -4552,6 +4590,7 @@ int AbilityManagerStub::StartAbilityForResultAsCallerForOptionsInner(MessageParc | |||
| 4552 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4590 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4553 | return ERR_INVALID_VALUE; | 4591 | return ERR_INVALID_VALUE; |
| 4554 | } | 4592 | } |
| 4593 | + WantFdScope fdScope(*want); | ||
| 4555 | SanitizeWantParams(*want); | 4594 | SanitizeWantParams(*want); |
| 4556 | std::unique_ptr<StartOptions> startOptions(data.ReadParcelable<StartOptions>()); | 4595 | std::unique_ptr<StartOptions> startOptions(data.ReadParcelable<StartOptions>()); |
| 4557 | if (startOptions == nullptr) { | 4596 | if (startOptions == nullptr) { |
| @@ -4577,6 +4616,7 @@ int32_t AbilityManagerStub::StartAbilityOnlyUIAbilityInner(MessageParcel &data, | |||
| 4577 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 4616 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 4578 | return ERR_INVALID_VALUE; | 4617 | return ERR_INVALID_VALUE; |
| 4579 | } | 4618 | } |
| 4619 | + WantFdScope fdScope(*want); | ||
| 4580 | SanitizeWantParams(*want); | 4620 | SanitizeWantParams(*want); |
| 4581 | 4621 | ||
| 4582 | sptr<IRemoteObject> callerToken = nullptr; | 4622 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -4598,6 +4638,7 @@ int32_t AbilityManagerStub::StartAbilityByInsightIntentInner(MessageParcel &data | |||
| 4598 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4638 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4599 | return ERR_INVALID_VALUE; | 4639 | return ERR_INVALID_VALUE; |
| 4600 | } | 4640 | } |
| 4641 | + WantFdScope fdScope(*want); | ||
| 4601 | 4642 | ||
| 4602 | sptr<IRemoteObject> callerToken = nullptr; | 4643 | sptr<IRemoteObject> callerToken = nullptr; |
| 4603 | if (!data.ReadBool()) { | 4644 | if (!data.ReadBool()) { |
| @@ -4619,6 +4660,7 @@ int32_t AbilityManagerStub::StartAbilityByOEExtInner(MessageParcel &data, Messag | |||
| 4619 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4660 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4620 | return ERR_INVALID_VALUE; | 4661 | return ERR_INVALID_VALUE; |
| 4621 | } | 4662 | } |
| 4663 | + WantFdScope fdScope(*want); | ||
| 4622 | SanitizeWantParams(*want); | 4664 | SanitizeWantParams(*want); |
| 4623 | 4665 | ||
| 4624 | sptr<IRemoteObject> callerToken = nullptr; | 4666 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -4882,6 +4924,7 @@ int32_t AbilityManagerStub::OpenAtomicServiceInner(MessageParcel &data, MessageP | |||
| 4882 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4924 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4883 | return ERR_INVALID_VALUE; | 4925 | return ERR_INVALID_VALUE; |
| 4884 | } | 4926 | } |
| 4927 | + WantFdScope fdScope(*want); | ||
| 4885 | SanitizeWantParams(*want); | 4928 | SanitizeWantParams(*want); |
| 4886 | std::unique_ptr<StartOptions> options(data.ReadParcelable<StartOptions>()); | 4929 | std::unique_ptr<StartOptions> options(data.ReadParcelable<StartOptions>()); |
| 4887 | if (options == nullptr) { | 4930 | if (options == nullptr) { |
| @@ -4947,6 +4990,7 @@ int32_t AbilityManagerStub::StartShortcutInner(MessageParcel &data, MessageParce | |||
| 4947 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 4990 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4948 | return ERR_INVALID_VALUE; | 4991 | return ERR_INVALID_VALUE; |
| 4949 | } | 4992 | } |
| 4993 | + WantFdScope fdScope(*want); | ||
| 4950 | SanitizeWantParams(*want); | 4994 | SanitizeWantParams(*want); |
| 4951 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); | 4995 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); |
| 4952 | if (startOptions == nullptr) { | 4996 | if (startOptions == nullptr) { |
| @@ -4984,6 +5028,7 @@ int32_t AbilityManagerStub::TransferAbilityResultForExtensionInner(MessageParcel | |||
| 4984 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5028 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 4985 | return ERR_INVALID_VALUE; | 5029 | return ERR_INVALID_VALUE; |
| 4986 | } | 5030 | } |
| 5031 | + WantFdScope fdScope(*want); | ||
| 4987 | SanitizeWantParams(*want); | 5032 | SanitizeWantParams(*want); |
| 4988 | int32_t result = TransferAbilityResultForExtension(callerToken, resultCode, *want); | 5033 | int32_t result = TransferAbilityResultForExtension(callerToken, resultCode, *want); |
| 4989 | reply.WriteInt32(result); | 5034 | reply.WriteInt32(result); |
| @@ -5030,6 +5075,7 @@ int32_t AbilityManagerStub::OpenLinkInner(MessageParcel &data, MessageParcel &re | |||
| 5030 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5075 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5031 | return ERR_INVALID_VALUE; | 5076 | return ERR_INVALID_VALUE; |
| 5032 | } | 5077 | } |
| 5078 | + WantFdScope fdScope(*want); | ||
| 5033 | SanitizeWantParams(*want); | 5079 | SanitizeWantParams(*want); |
| 5034 | sptr<IRemoteObject> callerToken = data.ReadRemoteObject(); | 5080 | sptr<IRemoteObject> callerToken = data.ReadRemoteObject(); |
| 5035 | int32_t userId = data.ReadInt32(); | 5081 | int32_t userId = data.ReadInt32(); |
| @@ -5223,13 +5269,13 @@ int32_t AbilityManagerStub::StartSelfUIAbilityInner(MessageParcel &data, Message | |||
| 5223 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5269 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5224 | return ERR_INVALID_VALUE; | 5270 | return ERR_INVALID_VALUE; |
| 5225 | } | 5271 | } |
| 5272 | + WantFdScope fdScope(*want); | ||
| 5226 | SanitizeWantParams(*want); | 5273 | SanitizeWantParams(*want); |
| 5227 | int32_t result = StartSelfUIAbility(*want); | 5274 | int32_t result = StartSelfUIAbility(*want); |
| 5228 | if (!reply.WriteInt32(result)) { | 5275 | if (!reply.WriteInt32(result)) { |
| 5229 | TAG_LOGE(AAFwkTag::ABILITYMGR, "reply write fail"); | 5276 | TAG_LOGE(AAFwkTag::ABILITYMGR, "reply write fail"); |
| 5230 | return INNER_ERR; | 5277 | return INNER_ERR; |
| 5231 | } | 5278 | } |
| 5232 | - want->CloseAllFd(); | ||
| 5233 | return NO_ERROR; | 5279 | return NO_ERROR; |
| 5234 | } | 5280 | } |
| 5235 | 5281 | ||
| @@ -5240,6 +5286,7 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithStartOptionsInner(MessageParce | |||
| 5240 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5286 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5241 | return ERR_READ_WANT; | 5287 | return ERR_READ_WANT; |
| 5242 | } | 5288 | } |
| 5289 | + WantFdScope fdScope(*want); | ||
| 5243 | SanitizeWantParams(*want); | 5290 | SanitizeWantParams(*want); |
| 5244 | sptr<StartOptions> options = data.ReadParcelable<StartOptions>(); | 5291 | sptr<StartOptions> options = data.ReadParcelable<StartOptions>(); |
| 5245 | if (options == nullptr) { | 5292 | if (options == nullptr) { |
| @@ -5252,7 +5299,6 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithStartOptionsInner(MessageParce | |||
| 5252 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write StartSelfUIAbilityWithStartOptions result fail"); | 5299 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write StartSelfUIAbilityWithStartOptions result fail"); |
| 5253 | return ERR_WRITE_START_SELF_UI_ABILITY_RESULT; | 5300 | return ERR_WRITE_START_SELF_UI_ABILITY_RESULT; |
| 5254 | } | 5301 | } |
| 5255 | - want->CloseAllFd(); | ||
| 5256 | return NO_ERROR; | 5302 | return NO_ERROR; |
| 5257 | } | 5303 | } |
| 5258 | 5304 | ||
| @@ -5263,6 +5309,7 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithTokenInner(MessageParcel &data | |||
| 5263 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5309 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5264 | return ERR_READ_WANT; | 5310 | return ERR_READ_WANT; |
| 5265 | } | 5311 | } |
| 5312 | + WantFdScope fdScope(*want); | ||
| 5266 | SanitizeWantParams(*want); | 5313 | SanitizeWantParams(*want); |
| 5267 | sptr<IRemoteObject> callerToken = nullptr; | 5314 | sptr<IRemoteObject> callerToken = nullptr; |
| 5268 | if (data.ReadBool()) { | 5315 | if (data.ReadBool()) { |
| @@ -5273,7 +5320,6 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithTokenInner(MessageParcel &data | |||
| 5273 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write result fail"); | 5320 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write result fail"); |
| 5274 | return INNER_ERR; | 5321 | return INNER_ERR; |
| 5275 | } | 5322 | } |
| 5276 | - want->CloseAllFd(); | ||
| 5277 | return NO_ERROR; | 5323 | return NO_ERROR; |
| 5278 | } | 5324 | } |
| 5279 | 5325 | ||
| @@ -5284,6 +5330,7 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithStartOptionsAndTokenInner(Mess | |||
| 5284 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5330 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5285 | return ERR_READ_WANT; | 5331 | return ERR_READ_WANT; |
| 5286 | } | 5332 | } |
| 5333 | + WantFdScope fdScope(*want); | ||
| 5287 | SanitizeWantParams(*want); | 5334 | SanitizeWantParams(*want); |
| 5288 | sptr<StartOptions> options = data.ReadParcelable<StartOptions>(); | 5335 | sptr<StartOptions> options = data.ReadParcelable<StartOptions>(); |
| 5289 | if (options == nullptr) { | 5336 | if (options == nullptr) { |
| @@ -5300,7 +5347,6 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithStartOptionsAndTokenInner(Mess | |||
| 5300 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write result fail"); | 5347 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write result fail"); |
| 5301 | return INNER_ERR; | 5348 | return INNER_ERR; |
| 5302 | } | 5349 | } |
| 5303 | - want->CloseAllFd(); | ||
| 5304 | return NO_ERROR; | 5350 | return NO_ERROR; |
| 5305 | } | 5351 | } |
| 5306 | 5352 | ||
| @@ -5311,6 +5357,7 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithPidResultInner(MessageParcel & | |||
| 5311 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5357 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5312 | return ERR_READ_WANT; | 5358 | return ERR_READ_WANT; |
| 5313 | } | 5359 | } |
| 5360 | + WantFdScope fdScope(*want); | ||
| 5314 | SanitizeWantParams(*want); | 5361 | SanitizeWantParams(*want); |
| 5315 | sptr<StartOptions> options = data.ReadParcelable<StartOptions>(); | 5362 | sptr<StartOptions> options = data.ReadParcelable<StartOptions>(); |
| 5316 | if (options == nullptr) { | 5363 | if (options == nullptr) { |
| @@ -5324,7 +5371,6 @@ int32_t AbilityManagerStub::StartSelfUIAbilityWithPidResultInner(MessageParcel & | |||
| 5324 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write StartSelfUIAbilityWithPidResult result fail"); | 5371 | TAG_LOGE(AAFwkTag::ABILITYMGR, "write StartSelfUIAbilityWithPidResult result fail"); |
| 5325 | return ERR_WRITE_START_SELF_UI_ABILITY_RESULT; | 5372 | return ERR_WRITE_START_SELF_UI_ABILITY_RESULT; |
| 5326 | } | 5373 | } |
| 5327 | - want->CloseAllFd(); | ||
| 5328 | return NO_ERROR; | 5374 | return NO_ERROR; |
| 5329 | } | 5375 | } |
| 5330 | 5376 | ||
| @@ -5441,6 +5487,7 @@ int32_t AbilityManagerStub::StartAbilityWithWaitInner(MessageParcel &data, Messa | |||
| 5441 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); | 5487 | TAG_LOGE(AAFwkTag::ABILITYMGR, "null want"); |
| 5442 | return ERR_NULL_OBJECT; | 5488 | return ERR_NULL_OBJECT; |
| 5443 | } | 5489 | } |
| 5490 | + WantFdScope fdScope(*want); | ||
| 5444 | SanitizeWantParams(*want); | 5491 | SanitizeWantParams(*want); |
| 5445 | 5492 | ||
| 5446 | auto callback = iface_cast<IAbilityStartWithWaitObserver>(data.ReadRemoteObject()); | 5493 | auto callback = iface_cast<IAbilityStartWithWaitObserver>(data.ReadRemoteObject()); |
| @@ -5464,6 +5511,7 @@ int32_t AbilityManagerStub::StartUIAbilityWithCallbackInner(MessageParcel &data, | |||
| 5464 | TAG_LOGE(AAFwkTag::ABILITYMGR, "read want failed"); | 5511 | TAG_LOGE(AAFwkTag::ABILITYMGR, "read want failed"); |
| 5465 | return ERR_READ_WANT; | 5512 | return ERR_READ_WANT; |
| 5466 | } | 5513 | } |
| 5514 | + WantFdScope fdScope(*want); | ||
| 5467 | SanitizeWantParams(*want); | 5515 | SanitizeWantParams(*want); |
| 5468 | 5516 | ||
| 5469 | sptr<IRemoteObject> callerToken = nullptr; | 5517 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -5756,6 +5804,7 @@ int AbilityManagerStub::StartSelfUIAbilityInCurrentProcessInner(MessageParcel &d | |||
| 5756 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5804 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5757 | return ERR_INVALID_VALUE; | 5805 | return ERR_INVALID_VALUE; |
| 5758 | } | 5806 | } |
| 5807 | + WantFdScope fdScope(*want); | ||
| 5759 | SanitizeWantParams(*want); | 5808 | SanitizeWantParams(*want); |
| 5760 | std::string specifiedFlag = data.ReadString(); | 5809 | std::string specifiedFlag = data.ReadString(); |
| 5761 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); | 5810 | StartOptions *startOptions = data.ReadParcelable<StartOptions>(); |
| @@ -5783,6 +5832,7 @@ int AbilityManagerStub::StartSelfUIAbilityInChildProcessInner(MessageParcel &dat | |||
| 5783 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 5832 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 5784 | return ERR_INVALID_VALUE; | 5833 | return ERR_INVALID_VALUE; |
| 5785 | } | 5834 | } |
| 5835 | + WantFdScope fdScope(*want); | ||
| 5786 | SanitizeWantParams(*want); | 5836 | SanitizeWantParams(*want); |
| 5787 | std::string specifiedFlag = data.ReadString(); | 5837 | std::string specifiedFlag = data.ReadString(); |
| 5788 | sptr<IRemoteObject> callerToken = nullptr; | 5838 | sptr<IRemoteObject> callerToken = nullptr; |
| @@ -6017,6 +6067,7 @@ int32_t AbilityManagerStub::StartSelfUIAbilityByAppContextInner(MessageParcel &d | |||
| 6017 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 6067 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 6018 | return ERR_INVALID_VALUE; | 6068 | return ERR_INVALID_VALUE; |
| 6019 | } | 6069 | } |
| 6070 | + WantFdScope fdScope(*want); | ||
| 6020 | SanitizeWantParams(*want); | 6071 | SanitizeWantParams(*want); |
| 6021 | int32_t result = StartSelfUIAbilityByAppContext(*want); | 6072 | int32_t result = StartSelfUIAbilityByAppContext(*want); |
| 6022 | reply.WriteInt32(result); | 6073 | reply.WriteInt32(result); |
| @@ -6031,6 +6082,7 @@ int32_t AbilityManagerStub::StartSandboxCloneAbilityInner(MessageParcel &data, M | |||
| 6031 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); | 6082 | TAG_LOGE(AAFwkTag::ABILITYMGR, "want null"); |
| 6032 | return ERR_INVALID_VALUE; | 6083 | return ERR_INVALID_VALUE; |
| 6033 | } | 6084 | } |
| 6085 | + WantFdScope fdScope(*want); | ||
| 6034 | SanitizeWantParams(*want); | 6086 | SanitizeWantParams(*want); |
| 6035 | std::shared_ptr<SandboxCloneParams> params(data.ReadParcelable<SandboxCloneParams>()); | 6087 | std::shared_ptr<SandboxCloneParams> params(data.ReadParcelable<SandboxCloneParams>()); |
| 6036 | if (params == nullptr) { | 6088 | if (params == nullptr) { |


🤖 AI 代码检视意见(回复本评论可解决检视意见,点击被检视代码行左侧的小头像可收起检视意见)
🟡 WantFdScope与wantList的浅拷贝并存可能导致Fd被意外关闭
位置:
L4549-L4551| 严重程度: Medium❓ 问题描述
在StartUIAbilitiesInner的循环中,通过WantFdScope fdScope(*want)接管了当前want的Fd关闭职责。同时通过wantList.emplace_back(*want)将want存入列表。如果Want的拷贝构造是浅拷贝(未对Fd进行dup),当循环结束临时want被销毁时,WantFdScope会调用CloseAllFd(),这会导致wantList中所有Want持有的Fd被提前关闭,后续使用该列表的StartUIAbilities将获取到无效的Fd。
💡 修复建议
修改建议:确认wantList是否需要保留Fd。如果需要,应对want进行深拷贝(如调用AssignDup)后再加入列表,以避免在循环结束时Fd被WantFdScope提前关闭。
4549: WantFdScope fdScope(*want); 4550: SanitizeWantParams(*want); 4551: wantList.emplace_back(); 4552: wantList.back().AssignDup(*want);