Fix segfault when loading cue files from relative paths.
authororbea <orbea@fredslev.dk>
Mon, 21 Jan 2019 15:45:17 +0000 (07:45 -0800)
committerorbea <orbea@fredslev.dk>
Sun, 27 Jan 2019 15:22:15 +0000 (07:22 -0800)
Fixes https://github.com/libretro/pcsx_rearmed/issues/63

libpcsxcore/cdriso.c

index 169c945..cf1a59e 100644 (file)
@@ -565,20 +565,15 @@ static int parsecue(const char *isofile) {
                        if (t != 1)
                                sscanf(linebuf, " FILE %255s", tmpb);
 
-                       // absolute path?
-                       ti[numtracks + 1].handle = fopen(tmpb, "rb");
-                       if (ti[numtracks + 1].handle == NULL) {
-                               // relative to .cue?
-                               tmp = strrchr(tmpb, '\\');
-                               if (tmp == NULL)
-                                       tmp = strrchr(tmpb, '/');
-                               if (tmp != NULL)
-                                       tmp++;
-                               else
-                                       tmp = tmpb;
-                               strncpy(incue_fname, tmp, incue_max_len);
-                               ti[numtracks + 1].handle = fopen(filepath, "rb");
-                       }
+                       tmp = strrchr(tmpb, '\\');
+                       if (tmp == NULL)
+                               tmp = strrchr(tmpb, '/');
+                       if (tmp != NULL)
+                               tmp++;
+                       else
+                               tmp = tmpb;
+                       strncpy(incue_fname, tmp, incue_max_len);
+                       ti[numtracks + 1].handle = fopen(filepath, "rb");
 
                        // update global offset if this is not first file in this .cue
                        if (numtracks + 1 > 1) {