ofono with local patches/modifications
Go to file
Martin Hundebøll d5bfc2ab41 gatmux: disable destroy notification on read watcher
With the reference in place in received_data(), the address sanitizer
now encounters a use-after-free when the destroy notification is
dispatched for the read watcher (see below).

Fix this by remove the destroy notification callback, as it isn't really
used except in the shutdown function.

==5797==ERROR: AddressSanitizer: heap-use-after-free on address 0x621000ac5904 at pc 0x55c1243b1f14 bp 0x7ffdef001340 sp 0x7ffdef001330
WRITE of size 4 at 0x621000ac5904 thread T0
    #0 0x55c1243b1f13 in read_watcher_destroy_notify ../git/gatchat/gatmux.c:660
    #1 0x7f08a8676742  (/usr/lib/libglib-2.0.so.0+0x62742)
    #2 0x7f08a867e2e4 in g_main_context_dispatch (/usr/lib/libglib-2.0.so.0+0x6a2e4)
    #3 0x7f08a8680210  (/usr/lib/libglib-2.0.so.0+0x6c210)
    #4 0x7f08a8681122 in g_main_loop_run (/usr/lib/libglib-2.0.so.0+0x6d122)
    #5 0x55c1243d6703 in main ../git/src/main.c:286
    #6 0x7f08a8423152 in __libc_start_main (/usr/lib/libc.so.6+0x27152)
    #7 0x55c1241fe1ad in _start (/home/martin/projects/ofono/x86/src/ofonod+0xfd1ad)

0x621000ac5904 is located 4 bytes inside of 4672-byte region [0x621000ac5900,0x621000ac6b40)
freed by thread T0 here:
    #0 0x7f08a88cc6b0 in __interceptor_free /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:122
    #1 0x55c1243b1ebf in g_at_mux_unref ../git/gatchat/gatmux.c:652
    #2 0x55c1243b062c in received_data ../git/gatchat/gatmux.c:276
    #3 0x7f08a867e2ce in g_main_context_dispatch (/usr/lib/libglib-2.0.so.0+0x6a2ce)

previously allocated by thread T0 here:
    #0 0x7f08a88cccd8 in __interceptor_calloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:153
    #1 0x55c1243b1bf1 in g_at_mux_new ../git/gatchat/gatmux.c:613
    #2 0x55c1243b4b53 in g_at_mux_new_gsm0710_basic ../git/gatchat/gatmux.c:1172
    #3 0x55c124386abd in cmux_gatmux ../git/plugins/quectel.c:871
    #4 0x55c12438779f in cmux_cb ../git/plugins/quectel.c:1023
    #5 0x55c1243a368e in at_chat_finish_command ../git/gatchat/gatchat.c:459
    #6 0x55c1243a3bc8 in at_chat_handle_command_response ../git/gatchat/gatchat.c:521
    #7 0x55c1243a4408 in have_line ../git/gatchat/gatchat.c:600
    #8 0x55c1243a539e in new_bytes ../git/gatchat/gatchat.c:759
    #9 0x55c1243ae2f9 in received_data ../git/gatchat/gatio.c:122
    #10 0x7f08a867e2ce in g_main_context_dispatch (/usr/lib/libglib-2.0.so.0+0x6a2ce)

SUMMARY: AddressSanitizer: heap-use-after-free ../git/gatchat/gatmux.c:660 in read_watcher_destroy_notify
Shadow bytes around the buggy address:
  0x0c4280150ad0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4280150ae0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4280150af0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4280150b00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4280150b10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4280150b20:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4280150b30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4280150b40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4280150b50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4280150b60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4280150b70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==5797==ABORTING
2019-10-08 14:49:22 -05:00
btio btio: Add BtIOMode enum to be used with BT_IO_OPT_MODE 2012-02-10 10:18:01 +01:00
doc doc: convert quectel power event reasons to lower case 2019-08-13 05:48:47 -05:00
drivers ublox: netreg: Also subscribe to UREG URC's 2019-10-01 11:22:33 -05:00
dundee dundee: Fix out-of-order free 2015-05-13 15:44:39 -05:00
examples gprs-provision: Fix crash if no SPN present 2011-12-02 12:53:44 -06:00
gatchat gatmux: disable destroy notification on read watcher 2019-10-08 14:49:22 -05:00
gdbus gdbus: Close private connection if setup fails 2015-04-20 09:04:39 +02:00
gisi gisi: Fix compiler warnings from -Wpragmas 2019-08-13 00:53:45 +02:00
gril treewide: Remove superfluous use of _GNU_SOURCE 2018-10-17 10:01:57 -05:00
include gprs: Add list_active_contexts 2019-08-13 01:41:16 -05:00
linux build: Add internal copy of linux/gsmmux.h for older systems 2019-08-12 19:53:40 +02:00
plugins udev: Adding PCIe as a subsystem in udev 2019-09-30 11:28:34 -05:00
src gprs: free interface name in gprs_context_remove() 2019-09-26 14:50:27 -05:00
test test: process-context-settings: print settings to stderr 2019-07-19 01:22:00 -05:00
tools stktest: Fix immediate response test 2018-12-27 18:19:31 -06:00
unit unit: Update to the new stkutil api 2018-12-29 14:15:04 -06:00
.gitignore gitignore: unit/test-idmap binary 2019-01-23 19:15:50 +01:00
.mailmap mailmap: Fix up Michael's name 2012-05-01 12:40:09 +02:00
AUTHORS AUTHORS: Mention Stefan's contributions 2019-05-08 09:47:16 -05:00
COPYING Initial revision 2009-04-26 20:31:15 +02:00
ChangeLog Release 1.30 2019-08-12 20:54:02 +02:00
HACKING HACKING: Update instructions with email address 2015-12-17 13:13:27 -06:00
INSTALL Initial revision 2009-04-26 20:31:15 +02:00
Makefile.am build: Add missing drivers/atmodem/network-registration.h 2019-08-12 20:14:32 +02:00
NEWS Initial revision 2009-04-26 20:31:15 +02:00
README README: Add information about ELL when building from sources 2018-11-08 21:26:52 +01:00
TODO TODO: Add DTMF batch hint task 2015-11-12 13:39:31 -06:00
acinclude.m4 build: Use -fsigned-char and -fno-exceptions compiler options 2019-01-18 09:39:57 +01:00
bootstrap bootstrap: autoconf must run before automake 2009-12-10 15:55:49 +01:00
bootstrap-configure build: Reorder default developer build options 2012-12-10 20:45:24 +01:00
configure.ac Release 1.30 2019-08-12 20:54:02 +02:00
ofono.pc.in build: Support for pkg-config 2011-01-31 10:44:56 +01:00

README

oFono - Open Source Telephony
*****************************

Copyright (C) 2008-2011  Intel Corporation. All rights reserved.


Compilation and installation
============================

In order to compile telephony stack you need following software packages:
	- GCC compiler
	- GLib library
	- D-Bus library

To configure run:
	./configure --prefix=/usr --mandir=/usr/share/man \
				--sysconfdir=/etc --localstatedir=/var

Configure automatically searches for all required components and packages.

To compile and install run:
	make && make install


Embedded Linux library
======================

In order to compile the daemon and utilities the development version of
Embedded Linux library is required to be present. The development
repositories can be found here:

	git://git.kernel.org/pub/scm/libs/ell/ell.git
	https://kernel.googlesource.com/pub/scm/libs/ell/ell.git

The build systems requires that the Embedded Linux library source code
is available on the same top level directory as the source code:

	.
	|--- ell
	|    |--- ell
	|    `--- unit
	`--- ofono
	     |--- src
	     `--- tools

It is not required to build or install Embedded Linux library. The build
will happen when building the Wireless daemon and it will then be linked
internally.

When using --enable-external-ell build option, it is not required that the
Embedded Linux library source code is available in the top level directory.


Kernel Dependencies
===================

In order to have the PPP stack working in oFono you need to enable CONFIG_TUN
(Universal TUN/TAP device driver support) in your kernel .config.


Information
===========

Mailing list:
	ofono@ofono.org

For additional information about the project visit oFono web site:
	http://www.ofono.org