@@ -519,10 +519,10 @@ int main(int argc, char *argv[])
519519
520520 if ((fd = open ("rom0:ROMVER" , O_RDONLY )) >= 0 ) {
521521 ssize_t len = read (fd , ROMVER , sizeof (ROMVER ) - 1 );
522- if (len > 0 && len < (ssize_t )sizeof (ROMVER ))
523- ROMVER [len ] = '\0' ;
524- else
522+ if (len < 0 )
525523 ROMVER [0 ] = '\0' ;
524+ else
525+ ROMVER [len ] = '\0' ;
526526 close (fd );
527527 }
528528 j = SifLoadModule ("rom0:ADDDRV" , 0 , NULL ); // Load ADDDRV. The OSD has it listed in rom0:OSDCNF/IOPBTCONF, but it is otherwise not loaded automatically.
@@ -1028,22 +1028,13 @@ static int __attribute__((unused)) LocateExternalIRXPath(const char *filename, c
10281028
10291029 for (i = 0 ; i < (sizeof (search_templates ) / sizeof (search_templates [0 ])); i ++ ) {
10301030 const char * tmpl = search_templates [i ];
1031- const char * placeholder = strstr (tmpl , "%s" );
1032- if (placeholder == NULL )
1031+ if (strstr (tmpl , "%s" ) == NULL )
10331032 continue ;
10341033
1035- size_t prefix_len = (size_t )(placeholder - tmpl );
1036- size_t suffix_len = strlen (placeholder + 2 );
1037- size_t filename_len = strlen (filename );
1038- size_t required = prefix_len + filename_len + suffix_len + 1 ;
1039- if (required > resolved_size )
1034+ int ret = util_snprintf (resolved_path , resolved_size , tmpl , filename );
1035+ if (ret < 0 || (size_t )ret >= resolved_size )
10401036 continue ;
10411037
1042- memcpy (resolved_path , tmpl , prefix_len );
1043- memcpy (resolved_path + prefix_len , filename , filename_len );
1044- memcpy (resolved_path + prefix_len + filename_len , placeholder + 2 , suffix_len );
1045- resolved_path [required - 1 ] = '\0' ;
1046-
10471038 const char * checked_path = CheckPath (resolved_path );
10481039 if (checked_path != NULL && exist (checked_path )) {
10491040 return 0 ;
0 commit comments