Przeglądaj źródła

fix wrong use of sizeof() on char*

Jan Binder 10 miesięcy temu
rodzic
commit
5087e94173
3 zmienionych plików z 12 dodań i 12 usunięć
  1. 6 7
      src/BlueSCSI_config.cpp
  2. 3 2
      src/BlueSCSI_config.h
  3. 3 3
      src/BlueSCSI_disk.cpp

+ 6 - 7
src/BlueSCSI_config.cpp

@@ -40,30 +40,29 @@ int getBlockSize(char *filename, int scsiId, int default_size)
   return default_size;
 }
 
-int getImgDir(int scsiId, char* dirname)
+int getImgDir(int scsiId, char* dirname, size_t dname_len)
 {
   char section[6] = "SCSI0";
   section[4] = '0' + scsiId;
 
   char key[] = "ImgDir";
-  int dirlen = ini_gets(section, key, "", dirname, sizeof(dirname), CONFIGFILE);
+  int dirlen = ini_gets(section, key, "", dirname, dname_len, CONFIGFILE);
   return dirlen;
 }
 
 
-int getImg(int scsiId, int img_index, char* filename)
+int getImg(int scsiId, int img_index, char* filename, size_t fname_len)
 {
   char section[6] = "SCSI0";
   section[4] = '0' + scsiId;
 
   char key[] = "IMG0";
   key[3] = '0' + img_index;
-
-  int dirlen = ini_gets(section, key, "", filename, sizeof(filename), CONFIGFILE);
-  return dirlen;
+  int fnlen = ini_gets(section, key, "", filename, fname_len, CONFIGFILE);
+  return fnlen;
 }
 
 int getToolBoxSharedDir(char * dir_name)
 {
   return ini_gets("SCSI", "ToolBoxSharedDir", "/shared", dir_name, MAX_FILE_PATH, CONFIGFILE);
-}
+}

+ 3 - 2
src/BlueSCSI_config.h

@@ -3,6 +3,7 @@
 
 #pragma once
 
+#include <string.h>
 #include <BlueSCSI_platform.h>
 
 // Use variables for version number
@@ -90,8 +91,8 @@
 */
 int getBlockSize(char *filename, int scsiId, int default_size);
 
-int getImgDir(int scsiId, char* dirname);
+int getImgDir(int scsiId, char* dirname, size_t dname_len);
 
-int getImg(int scsiId, int img_index, char* filename);
+int getImg(int scsiId, int img_index, char* filename, size_t fname_len);
 
 int getToolBoxSharedDir(char * dir_name);

+ 3 - 3
src/BlueSCSI_disk.cpp

@@ -633,7 +633,7 @@ static void scsiDiskLoadConfig(int target_idx, const char *section)
     if (strlen(section) == 5 && strncmp(section, "SCSI", 4) == 0) // allow within target [SCSIx] blocks only
     {
         ini_gets(section, "ImgDir", "", tmp, sizeof(tmp), CONFIGFILE);
-        getImgDir(target_idx, tmp);
+        getImgDir(target_idx, tmp, sizeof(tmp));
         if (tmp[0])
         {
             log("-- SCSI", target_idx, " using image directory \'", tmp, "'");
@@ -787,7 +787,7 @@ int scsiDiskGetNextImageName(image_config_t &img, char *buf, size_t buf_len)
     {
         // image directory was found during startup
         char dirname[MAX_FILE_PATH];
-        int dir_len = getImgDir(target_idx, dirname);
+        int dir_len = getImgDir(target_idx, dirname, sizeof(dirname));
         if (!dir_len)
         {
             // If image_directory set but ImgDir is not look for a well known ImgDir
@@ -844,7 +844,7 @@ int scsiDiskGetNextImageName(image_config_t &img, char *buf, size_t buf_len)
             img.image_index = 0;
         }
 
-        int ret = getImg(target_idx, img.image_index, buf);
+        int ret = getImg(target_idx, img.image_index, buf, buf_len);
         if (buf[0] != '\0')
         {
             return ret;