[vz-users] vzlogger stürzt immer ab

Matthias Behr mbehr at mcbehr.de
Wed Mar 11 21:26:51 CET 2015


I found a first memory overwrite in 
sml_transport_read:
	while (len < max_len) {
		
		sml_read(fd, &readfds, &(buf[len]), 4);

Above will write into buf[len+3] so write 3 bytes out of the alloc (on stack in this case) memory.
(Later even up to 8 bytes memory will be badly written and not only on stack but heap as well.)

See here for a first patch:
diff --git a/sml/src/sml_transport.c b/sml/src/sml_transport.c
index 24e8b62..eda87f6 100644
--- a/sml/src/sml_transport.c
+++ b/sml/src/sml_transport.c
@@ -73,7 +73,7 @@ size_t sml_transport_read(int fd, unsigned char *buffer, size_t max_len) {
 
        // found start sequence
 
-       while (len < max_len) {
+       while ((len+8) < max_len) { // we might write 8 more bytes and not just one so make sure we have enough buffer space left!
                
                sml_read(fd, &readfds, &(buf[len]), 4);
                        




> Am 11.03.2015 um 21:03 schrieb Matthias Behr <mbehr at mcbehr.de>:
> 
> Ein Backtrace zeigt eindeutig auf heap/memory corruption:
> #0  0xb699ef50 in __open_catalog () from /lib/arm-linux-gnueabihf/libc.so.6
> No symbol table info available.
> #1  0xb69e0fac in new_heap () at arena.c:567
>        using_malloc_checking = 0
>        check_action = 1
>        save_free_hook = 0
>        atfork_recursive_cntr = 0
>        arena_mem = 270336
>        save_malloc_hook = 0
>        mp_ = {trim_threshold = 131072, top_pad = 131072, mmap_threshold = 131072, arena_test = 2, arena_max = 0, n_mmaps = 0, n_mmaps_max = 65536, 
> 
> Der 2. auch, sogar mit noch mehr Infos:
> next = 0xb4300010, 
>          next_free = 0x0, system_mem = 135168, max_system_mem = 135168}
>        __elf_set___libc_thread_subfreeres_element_arena_thread_freeres__ = 0xb6aa0958
>        aligned_heap_area = 0x0
>        narenas = 3
>        __malloc_initialize_hook = 0
>        __after_morecore_hook = 0
>        __free_hook = 0
>        __memalign_hook = 0xb6a0d5d8 <memalign_hook_ini>
>        __libc_malloc_initialized = 1
>        __morecore = 0xb6a0e4f4 <__default_morecore>
>        __realloc_hook = 0
>        __malloc_hook = 0
> #5  0x00078758 in sml_number_free ()
> No symbol table info available.
> 
> D.h. wir sollten die Probleme in der libsml (oder der Benutzung der libsml Daten in MeterSML) suchen.
> 
> Hat noch jemand das Image mit sml Metern im Einsatz?
> 
> Gruß
> Matthias
> 
>> Am 11.03.2015 um 20:46 schrieb Matthias Behr <mbehr at mcbehr.de>:
>> 
>> Ich schaue mir die anderen Backtraces noch mal an. Aber Sorge macht mir mehr der Valgrind Auszug.
>> 
>> 
>>> Am 11.03.2015 um 18:36 schrieb oderwas at gmx.net:
>>> 
>>> Hallo,
>>> 
>>> hier meine Komponenten:
>>> 
>>> Raspberry Pi Model B+ Mainboard (GPIO polig, MicroSD Speicherkartenslot, HDMI, 4x USB 2.0)
>>> 
>>> Aukru 3er Set passive Alu Kühlkörper in verschiedenen Größen für Raspberry Pi B+ / B Und Pi 2 Model B- zum Aufkleben
>>> 
>>> Rydges® High-Quality PC Netzteil - by OTB 2A - / 2000 mAh Ladegerät 5V 2000 mAh für Raspberry Pi Modell A und B & Banana Pi - Pi Model B+ (B Plus)
>>> 
>>> Transcend TS32GUSDHC10E Class 10 Extreme-Speed microSDHC 32GB 
>>> 
>>> IR Sensoren USB von Udo (hatte ein Freund mitbestellt)
>>> 
>>> 
>>> Ich werde den Raspi heute komplett neu aufsetzen und versuchen vzlogger manuell zu installieren. 
>>> Bin skeptisch, ob ich das hinbekomme, aber es erscheint mir als die beste Lösung. Und dann die Versionen von vzlogger rückwärts einspielen.
>>> 
>>> außer die Backtraces sagen jemandem was...
>>> 
>>> Viele Grüße 
>>> 
>>> Markus
>> 
>> Gruß
>> 
>> Matthias
>> 
> 
> Gruß
> 
> Matthias Behr
> 

Gruß

Matthias Behr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5256 bytes
Desc: not available
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20150311/1932409e/attachment.bin>


More information about the volkszaehler-users mailing list