public: crtlib: add safe COM_DefaultExtension and COM_ReplaceExtension

This commit is contained in:
Alibek Omarov 2023-04-26 04:57:04 +03:00
parent cfdfdd5c93
commit ff436ae100
2 changed files with 6 additions and 7 deletions

View File

@ -714,7 +714,7 @@ void COM_StripExtension( char *path )
COM_DefaultExtension COM_DefaultExtension
================== ==================
*/ */
void COM_DefaultExtension( char *path, const char *extension ) void COM_DefaultExtension( char *path, const char *extension, size_t size )
{ {
const char *src; const char *src;
size_t len; size_t len;
@ -731,7 +731,7 @@ void COM_DefaultExtension( char *path, const char *extension )
src--; src--;
} }
Q_strcpy( &path[len], extension ); Q_strncpy( &path[len], extension, size - len );
} }
/* /*
@ -739,10 +739,10 @@ void COM_DefaultExtension( char *path, const char *extension )
COM_ReplaceExtension COM_ReplaceExtension
================== ==================
*/ */
void COM_ReplaceExtension( char *path, const char *extension ) void COM_ReplaceExtension( char *path, const char *extension, size_t size )
{ {
COM_StripExtension( path ); COM_StripExtension( path );
COM_DefaultExtension( path, extension ); COM_DefaultExtension( path, extension, size );
} }
/* /*

View File

@ -79,15 +79,14 @@ const byte *Q_memmem( const byte *haystack, size_t haystacklen, const byte *need
const char *Q_timestamp( int format ); const char *Q_timestamp( int format );
int Q_vsnprintf( char *buffer, size_t buffersize, const char *format, va_list args ); int Q_vsnprintf( char *buffer, size_t buffersize, const char *format, va_list args );
int Q_snprintf( char *buffer, size_t buffersize, const char *format, ... ) _format( 3 ); int Q_snprintf( char *buffer, size_t buffersize, const char *format, ... ) _format( 3 );
int Q_sprintf( char *buffer, const char *format, ... ) _format( 2 );
#define Q_strpbrk strpbrk #define Q_strpbrk strpbrk
void COM_StripColors( const char *in, char *out ); void COM_StripColors( const char *in, char *out );
#define Q_memprint( val ) Q_pretifymem( val, 2 ) #define Q_memprint( val ) Q_pretifymem( val, 2 )
char *Q_pretifymem( float value, int digitsafterdecimal ); char *Q_pretifymem( float value, int digitsafterdecimal );
void COM_FileBase( const char *in, char *out, size_t size ); void COM_FileBase( const char *in, char *out, size_t size );
const char *COM_FileExtension( const char *in ); const char *COM_FileExtension( const char *in );
void COM_DefaultExtension( char *path, const char *extension ); void COM_DefaultExtension( char *path, const char *extension, size_t size );
void COM_ReplaceExtension( char *path, const char *extension ); void COM_ReplaceExtension( char *path, const char *extension, size_t size );
void COM_ExtractFilePath( const char *path, char *dest ); void COM_ExtractFilePath( const char *path, char *dest );
const char *COM_FileWithoutPath( const char *in ); const char *COM_FileWithoutPath( const char *in );
void COM_StripExtension( char *path ); void COM_StripExtension( char *path );