Skip to content

Pointer arithmetic error in spiffs_hal_read #3065

Closed
@joelucid

Description

@joelucid

spiffs_hal_read has a pointer arithmetic error that leads to crashes when reading from non-aligned addresses. Here's the patch:

diff --git a/cores/esp8266/spiffs_hal.cpp b/cores/esp8266/spiffs_hal.cpp
index 7f3245c..567b064 100644
--- a/cores/esp8266/spiffs_hal.cpp
+++ b/cores/esp8266/spiffs_hal.cpp
@@ -60,7 +60,7 @@ int32_t spiffs_hal_read(uint32_t addr, uint32_t size, uint8_t *dst) {
                 __LINE__, addr, size, alignedBegin, alignedEnd);
             return SPIFFS_ERR_INTERNAL;
         }
-        memcpy(dst, &tmp + 4 - nb, nb);
+        memcpy(dst, (uint8_t*)&tmp + 4 - nb, nb);
     }
 
     if (alignedEnd != alignedBegin) { 

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions