Erros when trying to dump certificates from ESP32 box

Hi,
I’m getting a bunch of errors when trying to dump certificates from my new and untouched firmware of a ESP32 toniebox.

  • reading the firmware was successfully done via webgui
  • teddycloud is running in a docker container via the “official” docker compose yml (unchanged, expect port mapping 4040:80)

First issue (missing config files):
to me this seems like some mismatched path. within my docker there’s not path like:

/teddycloud/data/firmware/config/

The missing files sitting in the following path:

/teddycloud/config/

there’s nothing in firmware folder execpt the firmware bin file

Second issue: “File does not exist or is too small ‘data/firmware/ESP32_xyz.bin’”
the firmware dump is 8MB in size, is this correct?

Complete Error message after running

teddycloud --esp32-extract data/firmware/ESP32_<mac>.bin --destination certs/client

TeddyCloud v0.5.2 (454631f) - 2024-05-13 12:12:26 +0000 ubuntu linux-x86_64(64)

[options] specified ‘esp32_extract’ as ‘data/firmware/ESP32_xyz.bin’
[options] specified ‘destination’ as ‘certs/client’
INFO |settings.c:0770:settings_load_ovl()| Load settings from /teddycloud/data/firmware/config/config.overlay.ini
WARN |settings.c:0778:settings_load_ovl()| Config file does not exist, creating it…
INFO |settings.c:0670:settings_save_ovl()| Save settings to /teddycloud/data/firmware/config/config.overlay.ini
ERROR|settings.c:0674:settings_save_ovl()| Failed to open config file for writing
INFO |settings.c:0770:settings_load_ovl()| Load settings from /teddycloud/data/firmware/config/config.ini
WARN |settings.c:0778:settings_load_ovl()| Config file does not exist, creating it…
INFO |settings.c:0670:settings_save_ovl()| Save settings to /teddycloud/data/firmware/config/config.ini
ERROR|settings.c:0674:settings_save_ovl()| Failed to open config file for writing
INFO |settings.c:0770:settings_load_ovl()| Load settings from /etc/teddycloud/config/config.overlay.ini
INFO |settings.c:0770:settings_load_ovl()| Load settings from /etc/teddycloud/config/config.ini
INFO |settings.c:0770:settings_load_ovl()| Load settings from /etc/teddycloud/config/config.overlay.ini
ERROR|esp32.c:0765:esp32_fat_extract()| File does not exist or is too small ‘data/firmware/ESP32_xyz.bin’

=================================================================
==88==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 448 byte(s) in 58 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de515591 in settings_init_opt src/settings.c:596
#2 0x5582de523c2c in settings_init src/settings.c:622
#3 0x5582de4e1d76 in main_init_settings src/main.c:159
#4 0x5582de36fe74 in main src/main.c:337
#5 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de519558 in settings_generate_internal_dirs src/settings.c:460
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de519430 in settings_generate_internal_dirs src/settings.c:454
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de519402 in settings_generate_internal_dirs src/settings.c:453
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de5194c6 in settings_generate_internal_dirs src/settings.c:457
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de5194f8 in settings_generate_internal_dirs src/settings.c:458
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de5193d0 in settings_generate_internal_dirs src/settings.c:452
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de519462 in settings_generate_internal_dirs src/settings.c:455
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de519526 in settings_generate_internal_dirs src/settings.c:459
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x5582de409927 in __interceptor_malloc (/usr/local/bin/teddycloud+0x650927)
#1 0x5582de519494 in settings_generate_internal_dirs src/settings.c:456
#2 0x5582de520b29 in settings_changed_id src/settings.c:492
#3 0x5582de523e38 in settings_changed src/settings.c:484
#4 0x5582de523e38 in settings_init src/settings.c:646
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 114 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523dfc in settings_set_string_id src/settings.c:1306
#3 0x5582de523dfc in settings_set_string src/settings.c:1298
#4 0x5582de523dfc in settings_init src/settings.c:638
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 80 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523de7 in settings_set_string_id src/settings.c:1306
#3 0x5582de523de7 in settings_set_string src/settings.c:1298
#4 0x5582de523de7 in settings_init src/settings.c:637
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 41 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d5d in settings_set_string_id src/settings.c:1306
#3 0x5582de523d5d in settings_set_string src/settings.c:1298
#4 0x5582de523d5d in settings_init src/settings.c:630
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 26 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d7e in settings_set_string_id src/settings.c:1306
#3 0x5582de523d7e in settings_set_string src/settings.c:1298
#4 0x5582de523d7e in settings_init src/settings.c:632
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 26 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d05 in settings_set_string_id src/settings.c:1306
#3 0x5582de523d05 in settings_set_string src/settings.c:1298
#4 0x5582de523d05 in settings_init src/settings.c:625
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 18 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523dd2 in settings_set_string_id src/settings.c:1306
#3 0x5582de523dd2 in settings_set_string src/settings.c:1298
#4 0x5582de523dd2 in settings_init src/settings.c:636
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 8 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d48 in settings_set_string_id src/settings.c:1306
#3 0x5582de523d48 in settings_set_string src/settings.c:1298
#4 0x5582de523d48 in settings_init src/settings.c:629
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 7 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523dbd in settings_set_string_id src/settings.c:1306
#3 0x5582de523dbd in settings_set_string src/settings.c:1298
#4 0x5582de523dbd in settings_init src/settings.c:635
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 7 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d33 in settings_set_string_id src/settings.c:1306
#3 0x5582de523d33 in settings_set_string src/settings.c:1298
#4 0x5582de523d33 in settings_init src/settings.c:628
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 6 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d93 in settings_set_string_id src/settings.c:1306
#3 0x5582de523d93 in settings_set_string src/settings.c:1298
#4 0x5582de523d93 in settings_init src/settings.c:633
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 1 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523da8 in settings_set_string_id src/settings.c:1306
#3 0x5582de523da8 in settings_set_string src/settings.c:1298
#4 0x5582de523da8 in settings_init src/settings.c:634
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

Direct leak of 1 byte(s) in 1 object(s) allocated from:
#0 0x5582de3b0a67 in strdup (/usr/local/bin/teddycloud+0x5f7a67)
#1 0x5582de5224cf in settings_set_string_id src/settings.c:1320
#2 0x5582de523d1b in settings_set_string_id src/settings.c:1306
#3 0x5582de523d1b in settings_set_string src/settings.c:1298
#4 0x5582de523d1b in settings_init src/settings.c:626
#5 0x5582de4e1d76 in main_init_settings src/main.c:159
#6 0x5582de36fe74 in main src/main.c:337
#7 0x7f0228828d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

SUMMARY: AddressSanitizer: 3087 byte(s) leaked in 79 allocation(s).

I assume you did not changed any setting in teddycloud?

No, except the port mapping mentioned above in the docker yml.

I also disabled “Webinterface HTTP only” in the old webgui. new webgui is completely untouched by me.

both webguis share the same settings.

but you are right, the mentioned path sounds wrong. lets wait for @0xbadbee , he can help i think.

The filesize looks ok, it should be 8MB.

Did you stopp the docker? It looks like it crashed… maybe you can change the settings a little bit and set the log level to 6 (maybe you have to increse the Settingslevel to expert first). than there will some more log entries.

No, this is just leak information.

Where are you running the command? It looks to me that your are running the command in data/firmware

thank you, works like a charm now. issue was indeed executing the command from the wrong path