Commit 7b887f9d authored by Jouni Paulus's avatar Jouni Paulus
Browse files

Merge branch...

Merge branch '889-mismatch-of-the-expected-and-provided-function-argument-size-in-masafilewriter_open' into 'main'

Resolve "Mismatch of the expected and provided function argument size in MasaFileWriter_open"

See merge request !1199
parents 7c96d882 62945f36
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@
#define FIX_879_USAN_ERROR_IN_MASA_DECODING             /* FhG: Issue 879 : avoid arithmetic with NULL pointer in the DirAC decoder to fix USAN error */
#define FIX_740_MASA_PREREND_VALIDITY_CHECK             /* Nokia: issue 740: fix incorrect validity check in lib_rend to allow use of MASA prerenderer */
#define FIX_865_MOVE_TD_DECORR                          /* VA: issue 865: Move ivas_td_decorr.c from lib_com to lib_rend */
#define FIX_889_MASA_FILE_WRITER_OPEN                   /* Nokia: issue #889: mismatch in function definition and use */


/* #################### End BE switches ################################## */
+20 −1
Original line number Diff line number Diff line
@@ -67,12 +67,26 @@ struct MasaFileWriter

static void getExtMasaMetadataFileName(
    const char *outputWavFilename, /* i  : name of the output audio file         */
#ifdef FIX_889_MASA_FILE_WRITER_OPEN
    char *metadata_filename, /* o  : name of the output MASA metadata file */
    int32_t max_name_len     /* i  : size of metadata_filename in chars    */
#else
    char metadata_filename[IVAS_MAX_NUM_OBJECTS][FILENAME_MAX - 12] /* o  : name of the output masa metadata file */
#endif
)
{
    char ext_meta[5];

    /* sizeof( ext_meta ) accounts for terminating NULL, don't subtract extra 1 */
#ifdef FIX_889_MASA_FILE_WRITER_OPEN
    const int32_t maxNameLenWithoutExt = max_name_len - (int32_t) sizeof( ext_meta );
    strncpy( metadata_filename, outputWavFilename, maxNameLenWithoutExt );
    snprintf( ext_meta, sizeof( ext_meta ), ".met" );

    /* strlen( metadata_filename[0] ) doesn't account for terminating NULL, subtract extra 1 */
    const int32_t maxNumCharactersToAppend = max_name_len - (int32_t) strlen( metadata_filename ) - 1;
    strncat( metadata_filename, ext_meta, maxNumCharactersToAppend );
#else
    const int32_t maxNameLenWithoutExt = sizeof( metadata_filename[0] ) - sizeof( ext_meta );
    strncpy( metadata_filename[0], outputWavFilename, maxNameLenWithoutExt );
    snprintf( ext_meta, sizeof( ext_meta ), ".met" );
@@ -80,6 +94,7 @@ static void getExtMasaMetadataFileName(
    /* strlen( metadata_filename[0] ) doesn't account for terminating NULL, subtract extra 1 */
    const int32_t maxNumCharactersToAppend = (int32_t) ( sizeof( metadata_filename[0] ) - strlen( metadata_filename[0] ) - 1 );
    strncat( metadata_filename[0], ext_meta, maxNumCharactersToAppend );
#endif

    return;
}
@@ -164,7 +179,11 @@ ivas_error MasaFileWriter_open(
        return IVAS_ERR_FAILED_FILE_OPEN;
    }

#ifdef FIX_889_MASA_FILE_WRITER_OPEN
    getExtMasaMetadataFileName( outputWavFilename, filePath, FILENAME_MAX - 12 );
#else
    getExtMasaMetadataFileName( outputWavFilename, &filePath );
#endif

    file = fopen( filePath, "wb" );