mirror of
https://github.com/openharmony/customization_config_policy.git
synced 2026-06-29 16:43:21 -04:00
master
fix UAF Created-by: kirby Commit-by: kirby Merged-by: openharmony_ci Description: ### 相关的Issue https://gitcode.com/openharmony/customization_config_policy/issues/164 ### 原因(目的、解决的问题等) 修复UAF问题 ### 描述(做了什么,变更了什么) 修复UAF问题 ### 测试用例(新增、改动、可能影响的功能) ### L0新增用例自检结果 - [ ] 是,有新增L0用例,且完成自检 - [√ ] 否 See merge request: openharmony/customization_config_policy!186
Configuration Policy Component
Introduction
The configuration policy component, namely, customization_config_policy, provides APIs for each service module to obtain the configuration directories at different levels or the configuration file paths.
System Architecture
Figure 1 Architecture of the configuration policy component
The architecture is described as follows:
- interfaces provides the path of the file with the highest priority and all-level paths of the specified file.
- frameworks initializes the configuration directory and queries the file path.
Directory Structure
The code directory structure of the configuration policy component is as follows:
/base/customization/
├── config_policy # Code repository for the configuration policy component
│ ├── frameworks # Core code of the configuration policy component
│ │ ├── config_policy # Configuration policy module
│ │ │ └── src # Implementation code
│ ├── interfaces # APIs of the configuration policy component
│ │ ├── inner_api # APIs for internal subsystems
│ │ └── kits # JavaScript APIs of the configurationpolicy component
│ └── test # Test code
Usage
Call the APIs of the configuration policy component to obtain the configuration directories at different levels or the configuration file paths.
#include "config_policy_utils.h"
CfgDir *cfgDir = GetCfgDirList(); // Obtain the configuration directory list.
FreeCfgDirList(cfgDir); // Release the memory after the list is obtained.
const char *cfgPath = "etc/xml/cfg.xml"; // Set the relative path and name of the configuration file.
CfgFiles *cfgFiles = GetCfgFiles(cfgPath); // Obtain the configuration file paths of all configuration levels.
FreeCfgFiles(cfgFiles); // Release the memory after the information is obtained.
const char *userPath = "etc/xml/user.xml"; // Set the relative path and name of the configuration file.
char buf[MAX_PATH_LEN] = {0};
char *filePath = GetOneCfgFile(userPath, buf, MAX_PATH_LEN); // Obtain the path of the configuration file with the highest priority.
Constraints
Programming language: C/C++
Repositories Involved
customization_config_policy
Description
Languages
C++
74.5%
C
25.5%
