diff options
| author | Xavi Del Campo <xavi.dcr@tutanota.com> | 2020-01-31 22:19:19 +0100 |
|---|---|---|
| committer | Xavi Del Campo <xavi.dcr@tutanota.com> | 2020-01-31 22:19:19 +0100 |
| commit | 25aedbde21ff2db7fee47953ed4f6dc100903439 (patch) | |
| tree | 3497f109c74843d357afe792d1eb9c1c3aa40df7 | |
| parent | 6f225f14b37f7e2c47f60bb3f165b42ca2db7f55 (diff) | |
Fixed buffer overflow
| -rw-r--r-- | tools/exefixup.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/tools/exefixup.c b/tools/exefixup.c index 7f555dc..06ea057 100644 --- a/tools/exefixup.c +++ b/tools/exefixup.c @@ -1,4 +1,4 @@ -/* +/* * exefixup.c v0.02.1 Andrew Kieschnick <andrewk@mail.utexas.edu> * (v0.02.1): Giuseppe Gatta <tails92@gmail.com> * @@ -57,7 +57,7 @@ int main(int argc, char *argv[]) { FILE *exe; FILE *out; - unsigned char data[8]; + unsigned char data[9]; char filename[256]; int i; unsigned int header_data[12]; @@ -91,7 +91,7 @@ int main(int argc, char *argv[]) printf("ERROR: Not a PS-X EXE file\n"); exit(-1); } - + for(i=0;i<12;i++) { fscanf(exe, "%c", &data[0]); @@ -116,7 +116,7 @@ int main(int argc, char *argv[]) printf("s_size\t0x%.8x\n\n", header_data[11]); fseek(exe, 0, SEEK_END); - + size=ftell(exe)-2048; padsize=2048-(size%2048); @@ -133,7 +133,7 @@ int main(int argc, char *argv[]) if (yesno=='Y') { out = fopen(filename, "w"); - + header_data[5]=size+padsize; fprintf(out, "PS-X EXE"); @@ -142,7 +142,7 @@ int main(int argc, char *argv[]) int2char(header_data[i], data); fprintf(out, "%c%c%c%c", data[0], data[1], data[2], data[3]); } - + fseek(exe, 56, SEEK_SET); for(i=0;i<size+1992;i++) @@ -152,14 +152,14 @@ int main(int argc, char *argv[]) } for(i=0;i<padsize;i++) fprintf(out, "%c", 0); - + size=header_data[5]; - fclose(out); + fclose(out); } } - + yesno='Z'; - + if (size!=header_data[5]) { printf("WARNING: EXE header t_size does not match filesize-2048\n"); @@ -174,7 +174,7 @@ int main(int argc, char *argv[]) if (yesno=='Y') { out = fopen(filename, "w"); - + fprintf(out, "PS-X EXE"); for(i=0;i<5;i++) { @@ -188,7 +188,7 @@ int main(int argc, char *argv[]) int2char(header_data[i], data); fprintf(out, "%c%c%c%c", data[0], data[1], data[2], data[3]); } - + fseek(exe, 56, SEEK_SET); for(i=0;i<size+1992;i++) |
