fix array-out-of-bounds issue
authornotaz <notasas@gmail.com>
Thu, 29 Aug 2013 22:35:47 +0000 (01:35 +0300)
committernotaz <notasas@gmail.com>
Thu, 29 Aug 2013 22:35:47 +0000 (01:35 +0300)
pico/state.c

index a369597..f9a7f83 100644 (file)
@@ -180,7 +180,7 @@ typedef enum {
   CHUNK_CARTHW_ = CHUNK_CARTHW,  // 64 (defined in PicoInt)\r
 } chunk_name_e;\r
 \r
-static const char * const chunk_names[] = {\r
+static const char * const chunk_names[CHUNK_DEFAULT_COUNT] = {\r
   "INVALID!",\r
   "M68K state",\r
   "RAM",\r
@@ -237,7 +237,7 @@ static int write_chunk(chunk_name_e name, int len, void *data, void *file)
 }\r
 \r
 #define CHECKED_WRITE(name,len,data) { \\r
-  if (PicoStateProgressCB && name < CHUNK_DEFAULT_COUNT) { \\r
+  if (PicoStateProgressCB && name < CHUNK_DEFAULT_COUNT && chunk_names[name]) { \\r
     strncpy(sbuff + 9, chunk_names[name], sizeof(sbuff) - 9); \\r
     PicoStateProgressCB(sbuff); \\r
   } \\r
@@ -245,7 +245,7 @@ static int write_chunk(chunk_name_e name, int len, void *data, void *file)
 }\r
 \r
 #define CHECKED_WRITE_BUFF(name,buff) { \\r
-  if (PicoStateProgressCB && name < CHUNK_DEFAULT_COUNT) { \\r
+  if (PicoStateProgressCB && name < CHUNK_DEFAULT_COUNT && chunk_names[name]) { \\r
     strncpy(sbuff + 9, chunk_names[name], sizeof(sbuff) - 9); \\r
     PicoStateProgressCB(sbuff); \\r
   } \\r