Просмотр исходного кода

toolbox: bit of cleanup, make sure buffers are cleared

Eric Helgeson 1 год назад
Родитель
Сommit
43fe446696
2 измененных файлов с 7 добавлено и 3 удалено
  1. 5 3
      src/BlueSCSI_Toolbox.cpp
  2. 2 0
      src/BlueSCSI_Toolbox.h

+ 5 - 3
src/BlueSCSI_Toolbox.cpp

@@ -92,14 +92,15 @@ void onListFiles(const char * dir_name) {
     FsFile file;
 
     memset(scsiDev.data, 0, 4096);
-    int ENTRY_SIZE = 40;
     char name[MAX_FILE_PATH] = {0};
     dir.open(dir_name);
     dir.rewindDirectory();
     uint8_t index = 0;
-    byte file_entry[40] = {0};
+    byte file_entry[ENTRY_SIZE] = {0};
     while (file.openNext(&dir, O_RDONLY))
     {
+        memset(name, 0, MAX_FILE_PATH);
+        memset(file_entry, 0, ENTRY_SIZE);
         uint8_t isDir = file.isDirectory() ? 0x00 : 0x01;
         int len = file.getName(name, MAX_FILE_PATH);
         if (len > MAX_MAC_PATH)
@@ -125,7 +126,7 @@ void onListFiles(const char * dir_name) {
     }
     dir.close();
 
-    scsiDev.dataLen = 4096;
+    scsiDev.dataLen = ENTRY_SIZE * index;
     scsiDev.phase = DATA_IN;
 }
 
@@ -184,6 +185,7 @@ void onListDevices()
     }
   }
   scsiDev.dataLen = NUM_SCSIID;
+  scsiDev.phase = DATA_IN;
 }
 
 void onSetNextCD(const char * img_dir)

+ 2 - 0
src/BlueSCSI_Toolbox.h

@@ -20,6 +20,8 @@
 #pragma once
 
 #define MAX_MAC_PATH 32
+#define ENTRY_SIZE 40
+
 #define CD_IMG_DIR "CD%d"
 
 #define BLUESCSI_TOOLBOX_COUNT_FILES    0xD2