Date
1 - 4 of 4
[PATCH v2 7/8] CryptoPkg/CrtLibSupport: fix strcpy
Gerd Hoffmann
strcpy() returns a pointer to the destination string, AsciiStrCpyS()
does not. So a simple #define does not work. Create a inline function instead. Signed-off-by: Gerd Hoffmann <kraxel@...> --- CryptoPkg/Library/Include/CrtLibSupport.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CryptoPkg/Library/Include/CrtLibSupport.h b/CryptoPkg/Library/Include/CrtLibSupport.h index 287d7f76bfb3..7c1bc7755b1c 100644 --- a/CryptoPkg/Library/Include/CrtLibSupport.h +++ b/CryptoPkg/Library/Include/CrtLibSupport.h @@ -395,6 +395,16 @@ inet_pton ( void * ); +static inline char * +strcpy ( + char *restrict strDest, + const char *strSource + ) +{ + AsciiStrCpyS (strDest, MAX_STRING_SIZE, strSource); + return strDest; +} + // // Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions // @@ -404,7 +414,6 @@ inet_pton ( #define memcmp(buf1, buf2, count) (int)(CompareMem(buf1,buf2,(UINTN)(count))) #define memmove(dest, source, count) CopyMem(dest,source,(UINTN)(count)) #define strlen(str) (size_t)(AsciiStrnLenS(str,MAX_STRING_SIZE)) -#define strcpy(strDest, strSource) AsciiStrCpyS(strDest,MAX_STRING_SIZE,strSource) #define strncpy(strDest, strSource, count) AsciiStrnCpyS(strDest,MAX_STRING_SIZE,strSource,(UINTN)count) #define strcat(strDest, strSource) AsciiStrCatS(strDest,MAX_STRING_SIZE,strSource) #define strncmp(string1, string2, count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count))) -- 2.35.1
|
|
Yao, Jiewen
Can we remove inline keyword?
toggle quoted messageShow quoted text
I don't think it is really needed in EDKII project. Thank you Yao Jiewen
-----Original Message-----
|
|
Gerd Hoffmann
On Fri, Apr 08, 2022 at 12:18:17PM +0000, Yao, Jiewen wrote:
Can we remove inline keyword?Well, in the header file it is, otherwise we'll get duplicate symbol errors. We could probably move the implementation from CryptoPkg/Library/Include/CrtLibSupport.h to CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c, then drop the inline keyword. take care, Gerd
|
|
Yao, Jiewen
OK. Having implementation in .h is not allowed in EDKII. Sorry, I missed that.
toggle quoted messageShow quoted text
Please move it to CrtWrapper.c and drop inline.
-----Original Message-----
|
|