diff --git a/services/etc/fms_service.cfg b/services/etc/fms_service.cfg index 7f957887669bbec2a76f6ceb88949f7658fc2cde..a271b4155f7b1275160ab535e80443b972899335 100644 --- a/services/etc/fms_service.cfg +++ b/services/etc/fms_service.cfg @@ -2,7 +2,7 @@ "services" : [{ "name" : "fms_service", "path" : ["/system/bin/sa_main", "/system/profile/fms_service.xml"], - "uid" : "file_manager", + "uid" : "1006", "gid" : ["system", "shell"] } ] diff --git a/services/src/client/file_manager_proxy.cpp b/services/src/client/file_manager_proxy.cpp index 663efaa91bb5f57bc73165c2509afe40893bc78e..0c15b609f7cdeb7e79115a1c865568ade14a77d6 100644 --- a/services/src/client/file_manager_proxy.cpp +++ b/services/src/client/file_manager_proxy.cpp @@ -46,6 +46,7 @@ int FileManagerProxy::GetRoot(const CmdOptions &option, vector> &fileRes) { - MessageParcel data; CmdOptions op(option); std::string devName(op.GetDevInfo().GetName()); std::string devPath(op.GetDevInfo().GetPath()); int64_t offset = op.GetOffset(); int64_t count = op.GetCount(); - + MessageParcel data; + data.WriteInterfaceToken(GetDescriptor()); data.WriteString(devName); data.WriteString(devPath); data.WriteString(type); @@ -145,6 +147,7 @@ int FileManagerProxy::ListFile(const std::string &type, const std::string &path, int FileManagerProxy::Mkdir(const string &name, const string &path) { MessageParcel data; + data.WriteInterfaceToken(GetDescriptor()); data.WriteString(name); data.WriteString(path); MessageParcel reply; diff --git a/services/src/fileoper/media_file_utils.cpp b/services/src/fileoper/media_file_utils.cpp index 4169a7488cfffd377cd7548d8d3b4575f6898a58..c60ec96053be48ce210bd8aeadd0ce97362c995b 100644 --- a/services/src/fileoper/media_file_utils.cpp +++ b/services/src/fileoper/media_file_utils.cpp @@ -308,8 +308,7 @@ shared_ptr MediaFileUtils::DoQuery(const string & NativeRdb::DataAbilityPredicates predicates; predicates.SetWhereClause(selection); predicates.SetWhereArgs(selectionArgs); - predicates.Limit(count); - predicates.Offset(offset); + predicates.SetOrder("date_taken DESC LIMIT " + ToString(offset) + "," + ToString(count)); DEBUG_LOG("limit %{public}d, offset %{public}d", count, offset); Uri uri = Uri(Media::MEDIALIBRARY_DATA_URI); vector columns; diff --git a/services/src/server/file_manager_service_stub.cpp b/services/src/server/file_manager_service_stub.cpp index 0ebdd02f6125925ba070dfd61ef34dd00f460863..ebb5e27c2c17f188d8e2f41743921460ee57b34d 100644 --- a/services/src/server/file_manager_service_stub.cpp +++ b/services/src/server/file_manager_service_stub.cpp @@ -55,6 +55,12 @@ int FileManagerServiceStub::OperProcess(uint32_t code, MessageParcel &data, return errCode; } +static bool GetClientUid(int &uid) +{ + uid = IPCSkeleton::GetCallingUid(); + return true; +} + static sptr GetSysBundleManager() { auto bundleObj = @@ -67,22 +73,12 @@ static sptr GetSysBundleManager() return bms; } -static bool GetClientUid(int &uid) -{ - auto bms = GetSysBundleManager(); - if (bms == nullptr) { - ERR_LOG("GetClientBundleName bms is %{public}d", (bms == nullptr)); - return false; - } - uid = IPCSkeleton::GetCallingUid(); - return true; -} - static string GetClientBundleName(int uid) { std::string bundleName = ""; auto bms = GetSysBundleManager(); if (bms == nullptr) { + ERR_LOG("failed to get bundle manager service bms == nullptr"); return bundleName; } auto result = bms->GetBundleNameForUid(uid, bundleName); @@ -120,19 +116,23 @@ bool CheckClientPermission(const std::string& permissionStr) int FileManagerServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + // check whether request from fms proxy + if (data.ReadInterfaceToken() != GetDescriptor()) { + ERR_LOG("reject error remote request"); + reply.WriteInt32(FAIL); + return FAIL; + } // change permission string after finishing accessToken string permission = "permission"; if (!CheckClientPermission(permission)) { ERR_LOG("checkpermission error FAIL"); - reply.WriteInt32(FAIL); - return FAIL; } if (!MediaFileUtils::InitHelper(AsObject())) { - ERR_LOG("InitHelper error %{public}d", FAIL); + ERR_LOG("Init MediaLibraryDataAbility Helper error"); reply.WriteInt32(FAIL); return FAIL; } - // do file process + // do request process int32_t errCode = OperProcess(code, data, reply); reply.WriteInt32(errCode); return errCode;