Browse Source

Add security checks when loading data from memory

raysan5 5 years ago
parent
commit
43d82c1f21
3 changed files with 23 additions and 13 deletions
  1. 6 3
      src/raudio.c
  2. 8 4
      src/text.c
  3. 9 6
      src/textures.c

+ 6 - 3
src/raudio.c

@@ -694,10 +694,13 @@ Wave LoadWave(const char *fileName)
     unsigned int fileSize = 0;
     unsigned int fileSize = 0;
     unsigned char *fileData = LoadFileData(fileName, &fileSize);
     unsigned char *fileData = LoadFileData(fileName, &fileSize);
 
 
-    // Loading wave from memory data
-    wave = LoadWaveFromMemory(GetFileExtension(fileName), fileData, fileSize);
+    if (fileData != NULL)
+    {
+        // Loading wave from memory data
+        wave = LoadWaveFromMemory(GetFileExtension(fileName), fileData, fileSize);
 
 
-    RL_FREE(fileData);
+        RL_FREE(fileData);
+    }
 
 
     return wave;
     return wave;
 }
 }

+ 8 - 4
src/text.c

@@ -340,10 +340,14 @@ Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int charsCou
     unsigned int fileSize = 0;
     unsigned int fileSize = 0;
     unsigned char *fileData = LoadFileData(fileName, &fileSize);
     unsigned char *fileData = LoadFileData(fileName, &fileSize);
     
     
-    // Loading font from memory data
-    font = LoadFontFromMemory(GetFileExtension(fileName), fileData, fileSize, fontSize, fontChars, charsCount);
-    
-    RL_FREE(fileData);
+    if (fileData != NULL)
+    {
+        // Loading font from memory data
+        font = LoadFontFromMemory(GetFileExtension(fileName), fileData, fileSize, fontSize, fontChars, charsCount);
+        
+        RL_FREE(fileData);
+    }
+    else font = GetFontDefault();
 
 
     return font;
     return font;
 }
 }

+ 9 - 6
src/textures.c

@@ -211,13 +211,16 @@ Image LoadImage(const char *fileName)
     unsigned int fileSize = 0;
     unsigned int fileSize = 0;
     unsigned char *fileData = LoadFileData(fileName, &fileSize);
     unsigned char *fileData = LoadFileData(fileName, &fileSize);
     
     
-    // Loading image from memory data
-    image = LoadImageFromMemory(GetFileExtension(fileName), fileData, fileSize);
+    if (fileData != NULL)
+    {
+        // Loading image from memory data
+        image = LoadImageFromMemory(GetFileExtension(fileName), fileData, fileSize);
 
 
-    if (image.data != NULL) TRACELOG(LOG_INFO, "IMAGE: [%s] Data loaded successfully (%ix%i)", fileName, image.width, image.height);
-    else TRACELOG(LOG_WARNING, "IMAGE: [%s] Failed to load data", fileName);
-    
-    RL_FREE(fileData);
+        if (image.data != NULL) TRACELOG(LOG_INFO, "IMAGE: [%s] Data loaded successfully (%ix%i)", fileName, image.width, image.height);
+        else TRACELOG(LOG_WARNING, "IMAGE: [%s] Failed to load data", fileName);
+        
+        RL_FREE(fileData);
+    }
 
 
     return image;
     return image;
 }
 }