Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
Trac
Trac
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Operations
    • Operations
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Create a new issue
  • Issue Boards

GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still https://gitweb.torproject.org/ https://git.torproject.org/ and git-rw.torproject.org.

  • Legacy
  • TracTrac
  • Issues
  • #27893

Closed (moved)
Open
Opened Sep 27, 2018 by Nick Mathewson@nickm🥄

memory leak in dump_config()

I build with AddressSanitizer and run ./src/app/tor --dump-config non-builtin. This gives me:

Direct leak of 39 byte(s) in 2 object(s) allocated from:
    #0 0x7fc058908c48 in malloc (/lib64/libasan.so.5+0xeec48)
    #1 0x7fc055a14c37 in __GI___vasprintf_chk (/lib64/libc.so.6+0x10ac37)

Direct leak of 17 byte(s) in 1 object(s) allocated from:
    #0 0x7fc058855320 in strdup (/lib64/libasan.so.5+0x3b320)
    #1 0x55c6f60d7780 in tor_strdup_ src/lib/malloc/malloc.c:165
    #2 0x55c6f5f5b327 in validate_data_directories src/app/config/config.c:7856
    #3 0x55c6f5f5b327 in options_validate src/app/config/config.c:3385
    #4 0x55c6f5f6c3d5 in options_validate_cb src/app/config/config.c:3146
    #5 0x55c6f5f8df68 in config_dump src/app/config/confparse.c:964
    #6 0x55c6f5a43cda in do_dump_config src/app/main/main.c:950
    #7 0x55c6f5a43cda in tor_run_main src/app/main/main.c:1502
    #8 0x55c6f5a3baab in tor_main src/feature/api/tor_api.c:164
    #9 0x55c6f5a361eb in main src/app/main/tor_main.c:32
    #10 0x7fc05592d11a in __libc_start_main (/lib64/libc.so.6+0x2311a)

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x7fc058908c48 in malloc (/lib64/libasan.so.5+0xeec48)
    #1 0x55c6f60d74da in tor_malloc_ src/lib/malloc/malloc.c:45
    #2 0x55c6f60d3115 in smartlist_new src/lib/smartlist_core/smartlist_core.c:28
    #3 0x55c6f5f6294c in options_validate_scheduler src/app/config/config.c:3239
    #4 0x55c6f5f6294c in options_validate src/app/config/config.c:4533
    #5 0x55c6f5f6c3d5 in options_validate_cb src/app/config/config.c:3146
    #6 0x55c6f5f8df68 in config_dump src/app/config/confparse.c:964
    #7 0x55c6f5a43cda in do_dump_config src/app/main/main.c:950
    #8 0x55c6f5a43cda in tor_run_main src/app/main/main.c:1502
    #9 0x55c6f5a3baab in tor_main src/feature/api/tor_api.c:164
    #10 0x55c6f5a361eb in main src/app/main/tor_main.c:32
    #11 0x7fc05592d11a in __libc_start_main (/lib64/libc.so.6+0x2311a)

Indirect leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x7fc058908c48 in malloc (/lib64/libasan.so.5+0xeec48)
    #1 0x55c6f60d74da in tor_malloc_ src/lib/malloc/malloc.c:45
    #2 0x55c6f60d7571 in tor_malloc_zero_ src/lib/malloc/malloc.c:71
    #3 0x55c6f60d31c9 in smartlist_new src/lib/smartlist_core/smartlist_core.c:31
    #4 0x55c6f5f6294c in options_validate_scheduler src/app/config/config.c:3239
    #5 0x55c6f5f6294c in options_validate src/app/config/config.c:4533
    #6 0x55c6f5f6c3d5 in options_validate_cb src/app/config/config.c:3146
    #7 0x55c6f5f8df68 in config_dump src/app/config/confparse.c:964
    #8 0x55c6f5a43cda in do_dump_config src/app/main/main.c:950
    #9 0x55c6f5a43cda in tor_run_main src/app/main/main.c:1502
    #10 0x55c6f5a3baab in tor_main src/feature/api/tor_api.c:164
    #11 0x55c6f5a361eb in main src/app/main/tor_main.c:32
    #12 0x7fc05592d11a in __libc_start_main (/lib64/libc.so.6+0x2311a)

Indirect leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7fc058908c48 in malloc (/lib64/libasan.so.5+0xeec48)
    #1 0x55c6f60d74da in tor_malloc_ src/lib/malloc/malloc.c:45
    #2 0x55c6f60d7571 in tor_malloc_zero_ src/lib/malloc/malloc.c:71
    #3 0x55c6f5f62bc3 in options_validate_scheduler src/app/config/config.c:3243
    #4 0x55c6f5f62bc3 in options_validate src/app/config/config.c:4533
    #5 0x55c6f5f6c3d5 in options_validate_cb src/app/config/config.c:3146
    #6 0x55c6f5f8df68 in config_dump src/app/config/confparse.c:964
    #7 0x55c6f5a43cda in do_dump_config src/app/main/main.c:950
    #8 0x55c6f5a43cda in tor_run_main src/app/main/main.c:1502
    #9 0x55c6f5a3baab in tor_main src/feature/api/tor_api.c:164
    #10 0x55c6f5a361eb in main src/app/main/tor_main.c:32
    #11 0x7fc05592d11a in __libc_start_main (/lib64/libc.so.6+0x2311a)

Indirect leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7fc058908c48 in malloc (/lib64/libasan.so.5+0xeec48)
    #1 0x55c6f60d74da in tor_malloc_ src/lib/malloc/malloc.c:45
    #2 0x55c6f60d7571 in tor_malloc_zero_ src/lib/malloc/malloc.c:71
    #3 0x55c6f5f62a65 in options_validate_scheduler src/app/config/config.c:3251
    #4 0x55c6f5f62a65 in options_validate src/app/config/config.c:4533
    #5 0x55c6f5f6c3d5 in options_validate_cb src/app/config/config.c:3146
    #6 0x55c6f5f8df68 in config_dump src/app/config/confparse.c:964
    #7 0x55c6f5a43cda in do_dump_config src/app/main/main.c:950
    #8 0x55c6f5a43cda in tor_run_main src/app/main/main.c:1502
    #9 0x55c6f5a3baab in tor_main src/feature/api/tor_api.c:164
    #10 0x55c6f5a361eb in main src/app/main/tor_main.c:32
    #11 0x7fc05592d11a in __libc_start_main (/lib64/libc.so.6+0x2311a)

Indirect leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7fc058908c48 in malloc (/lib64/libasan.so.5+0xeec48)
    #1 0x55c6f60d74da in tor_malloc_ src/lib/malloc/malloc.c:45
    #2 0x55c6f60d7571 in tor_malloc_zero_ src/lib/malloc/malloc.c:71
    #3 0x55c6f5f63318 in options_validate_scheduler src/app/config/config.c:3247
    #4 0x55c6f5f63318 in options_validate src/app/config/config.c:4533
    #5 0x55c6f5f6c3d5 in options_validate_cb src/app/config/config.c:3146
    #6 0x55c6f5f8df68 in config_dump src/app/config/confparse.c:964
    #7 0x55c6f5a43cda in do_dump_config src/app/main/main.c:950
    #8 0x55c6f5a43cda in tor_run_main src/app/main/main.c:1502
    #9 0x55c6f5a3baab in tor_main src/feature/api/tor_api.c:164
    #10 0x55c6f5a361eb in main src/app/main/tor_main.c:32
    #11 0x7fc05592d11a in __libc_start_main (/lib64/libc.so.6+0x2311a)

I think this is happening because options_validate is called from config_dump(), but config_dump() frees defaults_tmp using config_free instead of or_options_free.

To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
Tor: 0.3.5.x-final
Milestone
Tor: 0.3.5.x-final
Assign milestone
Time tracking
None
Due date
None
Reference: legacy/trac#27893