Skip to content

Commit ce3fa83

Browse files
committed
webMAN MOD 1.47.47g
- Updated add_xmb_entry() in games_xml.h to prevent entries out of boundary - Replaced BUFFER_SIZE - _4KB_ with BUFFER_SIZE_PS3 - Identified end loop braces in games_html.h and games_xml.h
1 parent f74195f commit ce3fa83

File tree

8 files changed

+46
-34
lines changed

8 files changed

+46
-34
lines changed
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

include/init/buffer_size.h

+3
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ static void get_meminfo(void)
5757
static u32 BUFFER_SIZE_FTP;
5858

5959
static u32 BUFFER_SIZE;
60+
static u32 BUFFER_SIZE_PS3;
6061
static u32 BUFFER_SIZE_PSX;
6162
static u32 BUFFER_SIZE_PSP;
6263
static u32 BUFFER_SIZE_PS2;
@@ -224,4 +225,6 @@ static void set_buffer_sizes(u8 footprint)
224225
#else
225226
BUFFER_SIZE = BUFFER_SIZE_ALL - (BUFFER_SIZE_PSX + BUFFER_SIZE_PSP + BUFFER_SIZE_PS2 + BUFFER_SIZE_DVD);
226227
#endif
228+
229+
BUFFER_SIZE_PS3 = (BUFFER_SIZE - _4KB_);
227230
}

include/scan/games_html.h

+5-6
Original file line numberDiff line numberDiff line change
@@ -986,20 +986,19 @@ static bool game_listing(char *buffer, char *templn, char *param, char *tempstr,
986986
tlen += (flen + div_size);
987987
}
988988
//////////////////////////////
989-
continue_loop:
989+
continue_loop:
990990
if(subfolder) goto next_html_entry;
991991
//////////////////////////////
992992
}
993-
}
993+
} //while
994994

995995
if(!is_net) cellFsClosedir(fd); cellFsClosedir(fd2);
996996

997997
#ifdef NET_SUPPORT
998998
if(data2) {sys_memory_free(data2); data2 = NULL;}
999999
#endif
1000-
10011000
//
1002-
continue_reading_folder_html:
1001+
continue_reading_folder_html:
10031002
if(IS_ROMS_FOLDER || (f1 < id_ISO && !IS_NTFS))
10041003
{
10051004
if(uprofile > 0) {subfolder = 0; if(all_profiles && (uprofile < 4)) ++uprofile; else uprofile = 0; goto read_folder_html;}
@@ -1009,12 +1008,12 @@ static bool game_listing(char *buffer, char *templn, char *param, char *tempstr,
10091008
}
10101009
}
10111010
//
1012-
}
1011+
} //f1
10131012

10141013
#ifdef NET_SUPPORT
10151014
if(is_net && (ns >= 0) && (ns!=g_socket)) sclose(&ns);
10161015
#endif
1017-
}
1016+
} //f0
10181017

10191018
#ifdef SLAUNCH_FILE
10201019
close_slaunch_file(fdsl);

include/scan/games_xml.h

+38-28
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ static void add_tag(char *tags, u16 code)
285285
}
286286
#endif
287287

288-
static void add_info(char *table_xml, char *folder_name, u8 roms_index, char *filename, char *title_id, u8 f0, u8 f1, u8 s)
288+
static int add_info(char *table_xml, char *folder_name, u8 roms_index, char *filename, char *title_id, u8 f0, u8 f1, u8 s)
289289
{
290290
char tags[20]; *tags = '\0'; u8 info = webman_config->info & 0xF;
291291

@@ -391,25 +391,28 @@ static void add_info(char *table_xml, char *folder_name, u8 roms_index, char *fi
391391
}
392392
#endif
393393

394+
int len = 0;
395+
394396
// info level: 0=Path, 1=Path | titleid, 2=titleid | drive, 3=none, 0x10 = tags, 0x20 = version
395397
if(info <= INFO_PATH_ID)
396398
{
397399
if((info == INFO_PATH_ID) & HAS_TITLE_ID) {strcat(folder_name, " | "); strcat(folder_name, title_id);}
398-
sprintf(table_xml, XML_PAIR("info","%s/%s%s%s"), drives[f0] + s, (f1 == id_NPDRM) ? "game" : paths[f1], folder_name, tags);
400+
len = sprintf(table_xml, XML_PAIR("info","%s/%s%s%s"), drives[f0] + s, (f1 == id_NPDRM) ? "game" : paths[f1], folder_name, tags);
399401
}
400402
else if(info == INFO_ID)
401403
{
402404
if(HAS_TITLE_ID)
403-
sprintf(table_xml, XML_PAIR("info","%s%s"), title_id, tags);
405+
len = sprintf(table_xml, XML_PAIR("info","%s%s"), title_id, tags);
404406
else
405-
sprintf(table_xml, XML_PAIR("info","%s"), tags);
407+
len = sprintf(table_xml, XML_PAIR("info","%s"), tags);
406408
}
407409
else if(webman_config->info & INFO_TAGS_ONLY)
408410
{
409-
sprintf(table_xml, XML_PAIR("info","%s"), tags);
411+
len = sprintf(table_xml, XML_PAIR("info","%s"), tags);
410412
}
411413

412414
strcat(table_xml, "</T>");
415+
return (len + 4);
413416
}
414417

415418
static char *eject_table(char *buffer, char *table_xml)
@@ -595,41 +598,41 @@ static void add_group_tables(char *buffer, char *table_xml, t_string *myxml)
595598
#endif
596599
}
597600

598-
static bool add_xmb_entry(u8 f0, u8 f1, const char *table_xml, char *title, char *skey, u16 key, t_string *myxml_ps3, t_string *myxml_ps2, t_string *myxml_psx, t_string *myxml_psp, t_string *myxml_dvd, char *entry_name, u8 subfolder)
601+
static bool add_xmb_entry(u8 f0, u8 f1, u32 table_size, const char *table_xml, char *title, char *skey, u16 key, t_string *myxml_ps3, t_string *myxml_ps2, t_string *myxml_psx, t_string *myxml_psp, t_string *myxml_dvd, char *entry_name, u8 subfolder)
599602
{
600603
set_sort_key(skey, title, key, subfolder, f1);
601604

602605
if( !scanning_roms && XMB_GROUPS )
603606
{
604607
#ifdef COBRA_ONLY
605608
const char *ext = get_ext(entry_name);
606-
if(((IS_PS3_TYPE) || ((IS_NTFS) && IS(ext, ".ntfs[PS3ISO]"))) && (myxml_ps3->size < (BUFFER_SIZE - _4KB_)))
609+
if((IS_PS3_TYPE || (IS_NTFS && IS(ext, ".ntfs[PS3ISO]"))) && ((myxml_ps3->size + table_size) < BUFFER_SIZE_PS3))
607610
{_concat(myxml_ps3, table_xml); *skey=PS3, ++item_count[gPS3];}
608611
else
609-
if(((IS_PS2ISO) || ((IS_NTFS) && IS(ext, ".ntfs[PS2ISO]"))) && (myxml_ps2->size < BUFFER_SIZE_PS2))
612+
if((IS_PS2ISO || (IS_NTFS && IS(ext, ".ntfs[PS2ISO]"))) && ((myxml_ps2->size + table_size) < BUFFER_SIZE_PS2))
610613
{_concat(myxml_ps2, table_xml); *skey=PS2, ++item_count[gPS2];}
611614
else
612-
if(((IS_PSXISO) || ((IS_NTFS) && IS(ext, ".ntfs[PSXISO]"))) && (myxml_psx->size < BUFFER_SIZE_PSX))
615+
if((IS_PSXISO || (IS_NTFS && IS(ext, ".ntfs[PSXISO]"))) && ((myxml_psx->size + table_size) < BUFFER_SIZE_PSX))
613616
{_concat(myxml_psx, table_xml); *skey=PS1, ++item_count[gPSX];}
614617
else
615-
if(((IS_PSPISO) || ((IS_NTFS) && IS(ext, ".ntfs[PSPISO]"))) && (myxml_psp->size < BUFFER_SIZE_PSP))
618+
if((IS_PSPISO || (IS_NTFS && IS(ext, ".ntfs[PSPISO]"))) && ((myxml_psp->size + table_size) < BUFFER_SIZE_PSP))
616619
{_concat(myxml_psp, table_xml); *skey=PSP, ++item_count[gPSP];}
617620
else
618-
if(((IS_BDISO) || (IS_DVDISO) || ((IS_NTFS) && (IS(ext, ".ntfs[DVDISO]") || IS(ext, ".ntfs[BDISO]") || IS(ext, ".ntfs[BDFILE]")))) && (myxml_dvd->size < BUFFER_SIZE_DVD))
621+
if((IS_BDISO || IS_DVDISO || (IS_NTFS && (IS(ext, ".ntfs[DVDISO]") || IS(ext, ".ntfs[BDISO]") || IS(ext, ".ntfs[BDFILE]")))) && ((myxml_dvd->size + table_size) < BUFFER_SIZE_DVD))
619622
{_concat(myxml_dvd, table_xml); *skey=BLU, ++item_count[gDVD];}
620623
#else
621-
if((IS_PS3_TYPE) && myxml_ps3->size < (BUFFER_SIZE - _4KB_))
624+
if(IS_PS3_TYPE && ((myxml_ps3->size + table_size) < BUFFER_SIZE_PS3))
622625
{_concat(myxml_ps3, table_xml); *skey=PS3, ++item_count[gPS3];}
623626
else
624-
if((IS_PS2ISO) && myxml_ps2->size < BUFFER_SIZE_PS2)
627+
if(IS_PS2ISO && ((myxml_ps2->size + table_size) < BUFFER_SIZE_PS2))
625628
{_concat(myxml_ps2, table_xml); *skey=PS2, ++item_count[gPS2];}
626629
#endif
627630
else
628631
return (false);
629632
}
630633
else
631634
{
632-
if(myxml_ps3->size < (BUFFER_SIZE - _4KB_))
635+
if((myxml_ps3->size + table_size) < BUFFER_SIZE_PS3)
633636
{_concat(myxml_ps3, table_xml); ++item_count[gPS3];}
634637
else
635638
return (false);
@@ -706,10 +709,10 @@ static bool scan_mygames_xml(u64 conn_s_p)
706709

707710
if(!sysmem) return false; // recheck
708711

709-
sys_addr_t sysmem_psx = sysmem + (BUFFER_SIZE);
710-
sys_addr_t sysmem_psp = sysmem + (BUFFER_SIZE) + (BUFFER_SIZE_PSX);
711-
sys_addr_t sysmem_ps2 = sysmem + (BUFFER_SIZE) + (BUFFER_SIZE_PSX) + (BUFFER_SIZE_PSP);
712-
sys_addr_t sysmem_dvd = sysmem + (BUFFER_SIZE) + (BUFFER_SIZE_PSX) + (BUFFER_SIZE_PSP) + (BUFFER_SIZE_PS2);
712+
sys_addr_t sysmem_psx = sysmem + (BUFFER_SIZE); //BUFFER_SIZE_PSX
713+
sys_addr_t sysmem_psp = sysmem + (BUFFER_SIZE) + (BUFFER_SIZE_PSX); //BUFFER_SIZE_PSP
714+
sys_addr_t sysmem_ps2 = sysmem + (BUFFER_SIZE) + (BUFFER_SIZE_PSX) + (BUFFER_SIZE_PSP); //BUFFER_SIZE_PS2
715+
sys_addr_t sysmem_dvd = sysmem + (BUFFER_SIZE) + (BUFFER_SIZE_PSX) + (BUFFER_SIZE_PSP) + (BUFFER_SIZE_PS2); // BUFFER_SIZE_DVD
713716

714717
char *ignore_files = NULL;
715718
if(webman_config->ignore && file_exists(WM_IGNORE_FILES))
@@ -722,6 +725,13 @@ static bool scan_mygames_xml(u64 conn_s_p)
722725
}
723726
}
724727

728+
// set boundary margins
729+
if(XMB_GROUPS)
730+
{
731+
BUFFER_SIZE_PSX -= 0x10, BUFFER_SIZE_PSP -= 0x10;
732+
BUFFER_SIZE_PS2 -= 0x10, BUFFER_SIZE_DVD -= 0x10;
733+
}
734+
725735
#if defined(LAUNCHPAD) || defined(MOUNT_ROMS)
726736
char *sysmem_buf = (char*)sysmem;
727737
#endif
@@ -1051,9 +1061,9 @@ static bool scan_mygames_xml(u64 conn_s_p)
10511061

10521062
if(*app_ver) {strcat(title_id, " | v"); strcat(title_id, app_ver);}
10531063

1054-
add_info(table_xml + read_e, folder_name, roms_index, enc_dir_name, title_id, f0, f1, 1);
1064+
read_e += add_info(table_xml + read_e, folder_name, roms_index, enc_dir_name, title_id, f0, f1, 1);
10551065

1056-
if(add_xmb_entry(f0, f1, table_xml, title, skey[key].value, key, &myxml_ps3, &myxml_ps2, &myxml_psx, &myxml_psp, &myxml_dvd, data[v3_entry].name, 0)) key++;
1066+
if(add_xmb_entry(f0, f1, read_e, table_xml, title, skey[key].value, key, &myxml_ps3, &myxml_ps2, &myxml_psx, &myxml_psp, &myxml_dvd, data[v3_entry].name, 0)) key++; else break;
10571067

10581068
v3_entry++;
10591069
}
@@ -1220,24 +1230,24 @@ static bool scan_mygames_xml(u64 conn_s_p)
12201230

12211231
if(*app_ver) {strcat(title_id, " | v"); strcat(title_id, app_ver);}
12221232

1223-
add_info(table_xml + read_e, folder_name, roms_index, enc_dir_name, title_id, f0, is_game_dir ? id_NPDRM : f1, 5);
1233+
read_e += add_info(table_xml + read_e, folder_name, roms_index, enc_dir_name, title_id, f0, is_game_dir ? id_NPDRM : f1, 5);
12241234

1225-
if(add_xmb_entry(f0, _f1_, table_xml, title, skey[key].value, key, &myxml_ps3, &myxml_ps2, &myxml_psx, &myxml_psp, &myxml_dvd, entry.entry_name.d_name, subfolder)) key++;
1235+
if(add_xmb_entry(f0, _f1_, read_e, table_xml, title, skey[key].value, key, &myxml_ps3, &myxml_ps2, &myxml_psx, &myxml_psp, &myxml_dvd, entry.entry_name.d_name, subfolder)) key++; else break;
12261236
}
12271237
//////////////////////////////
1228-
continue_loop:
1238+
continue_loop:
12291239
if(subfolder) goto next_xml_entry;
12301240
//////////////////////////////
12311241
}
1232-
}
1242+
} //while
12331243

12341244
if(!is_net) cellFsClosedir(fd); cellFsClosedir(fd2);
12351245

12361246
#ifdef NET_SUPPORT
12371247
if(data2) {sys_memory_free(data2); data2 = NULL;}
12381248
#endif
12391249
}
1240-
//
1250+
//
12411251
continue_reading_folder_xml:
12421252
if(IS_ROMS_FOLDER || (f1 < id_ISO && !IS_NTFS))
12431253
{
@@ -1247,12 +1257,12 @@ static bool scan_mygames_xml(u64 conn_s_p)
12471257
if(ls && (li < 27)) {li++; goto subfolder_letter_xml;} else if(li < LANG_CUSTOM) {li = LANG_CUSTOM; goto subfolder_letter_xml;}
12481258
}
12491259
}
1250-
//
1251-
}
1260+
//
1261+
} //f1
12521262
#ifdef NET_SUPPORT
12531263
if(is_net && (ns >= 0) && (ns!=g_socket)) sclose(&ns);
12541264
#endif
1255-
}
1265+
} //f0
12561266

12571267
drives[NTFS][10] = ':';
12581268

0 commit comments

Comments
 (0)