fix: 修复fatfs中GetLdPath无法正常返回结果

fix: #I4XBJ6

Signed-off-by: xiexg-dc <xiexg@digitalchina.com>
Change-Id: I919d48de744f01f56b6fb7376b8b770386380197
This commit is contained in:
xiexg-dc 2022-04-02 14:56:14 +08:00
parent e34c4050f9
commit 46546688c9
1 changed files with 4 additions and 3 deletions

View File

@ -236,6 +236,7 @@ static int FatfsErrno(int result)
char * GetLdPath(const char *source)
{
#define LDPATH_PAD 2 // 2 means: strlen("/") + len of '\0'
int ret;
int partId = GetPartIdByPartName(source);
if ((partId < 0) || (partId >= MAX_PARTITION_NUM)) {
@ -243,16 +244,16 @@ char * GetLdPath(const char *source)
}
char *volPath = g_volPath[partId];
char *ldPath = (char *)malloc(strlen(volPath) + 1);
char *ldPath = (char *)malloc(strlen(volPath) + LDPATH_PAD);
if (ldPath == NULL) {
return NULL;
}
(void)memset_s(ldPath, strlen(volPath) + 1, 0, strlen(volPath) + 1);
(void)memset_s(ldPath, strlen(volPath) + LDPATH_PAD, 0, strlen(volPath) + LDPATH_PAD);
/* Convert volPath to ldpath, for example, convert "inner" to "/inner" */
*ldPath = '/';
ret = strcpy_s(ldPath + 1, strlen(volPath), volPath);
ret = strcpy_s(ldPath + 1, strlen(volPath)+1, volPath);
if (ret != EOK) {
free(ldPath);
return NULL;