Skip to content

Conversation

@33260144144
Copy link
Contributor

resolve stack-use-after-scope in YamlLogConfig.cc

@33260144144
Copy link
Contributor Author

33260144144 commented Jan 21, 2019

# /usr/local/ats81xd/bin/traffic_server
Traffic Server 8.1.0 Jan 19 2019 22:17:05 cuc-bh-1-4-c2321
traffic_server: using root directory '/usr/local/ats81xd'
=================================================================
==13668==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7ffe0c3f9a30 at pc 0x146e40463a1f bp 0x7ffe0c3f9190 sp 0x7ffe0c3f8938 READ of size 1 at 0x7ffe0c3f9a30 thread T0
#0 0x146e40463a1e (/lib64/libasan.so.5+0xb9a1e)
#1 0x807834 in LogFilterList::find_by_name(char const*) /root/ccc/trafficserver/proxy/logging/LogFilter.cc:1051
#2 0x8328ce in YamlLogConfig::decodeLogObject(YAML::Node const&) /root/ccc/trafficserver/proxy/logging/YamlLogConfig.cc:190 #3 0x82fddc in YamlLogConfig::loadLogConfig(char const*) /root/ccc/trafficserver/proxy/logging/YamlLogConfig.cc:94
#4 0x82e9d4 in YamlLogConfig::parse(char const*) /root/ccc/trafficserver/proxy/logging/YamlLogConfig.cc:39
#5 0x7ede6a in LogConfig::evaluate_config() /root/ccc/trafficserver/proxy/logging/LogConfig.cc:938
#6 0x7ea3fa in LogConfig::setup_log_objects() /root/ccc/trafficserver/proxy/logging/LogConfig.cc:502
#7 0x7e9325 in LogConfig::init(LogConfig*) /root/ccc/trafficserver/proxy/logging/LogConfig.cc:392
#8 0x7cc76a in Log::init(int) /root/ccc/trafficserver/proxy/logging/Log.cc:974
#9 0x5a6008 in main traffic_server/traffic_server.cc:1879
#10 0x146e3d2fb11a in __libc_start_main (/lib64/libc.so.6+0x2311a)
#11 0x53b0d9 in _start (/usr/local/ats81xd/bin/traffic_server+0x53b0d9)
Address 0x7ffe0c3f9a30 is located in stack of thread T0 at offset 1968 in frame
#0 0x8304cf in YamlLogConfig::decodeLogObject(YAML::Node const&) /root/ccc/trafficserver/proxy/logging/YamlLogConfig.cc:110
This frame has 51 object(s): [32, 56) 'loc'
[96, 120) 'loc'
[160, 184) 'loc'
[224, 248) 'loc'
[288, 312) 'loc'
[352, 376) 'loc'
[416, 448) '<unknown>'
[480, 512) 'format'
[544, 576) '<unknown>'
[608, 640) '<unknown>'
[672, 704) 'header'
[736, 768) '<unknown>'
[800, 832) '<unknown>'
[864, 896) '<unknown>'
[928, 960) 'filename'
[992, 1024) '<unknown>'
[1056, 1088) '<unknown>'
[1120, 1152) 'mode'
[1184, 1216) '<unknown>'
[1248, 1280) '<unknown>'
[1312, 1344) 'value'
[1376, 1408) '<unknown>'
[1440, 1472) '<unknown>'
[1504, 1536) '<unknown>'
[1568, 1600) '<unknown>'
[1632, 1664) '<unknown>'
[1696, 1728) '<unknown>'
[1760, 1792) '<unknown>'
[1824, 1856) '<unknown>'
[1888, 1920) 'filters'
[1952, 1984) '<unknown>' <== Memory access at offset 1968 is inside this variable [2016, 2048) 'collation_host_list'
[2080, 2112) '<unknown>'
[2144, 2176) 'collation_host_name' [2208, 2240) '<unknown>'
[2272, 2304) '<unknown>'
[2336, 2368) '<unknown>'
[2400, 2432) '<unknown>'
[2464, 2496) 'failover_host_name' [2528, 2576) '__for_begin'
[2624, 2672) '__for_end'
[2720, 2768) '__for_begin'
[2816, 2864) '__for_end'
[2912, 2960) '__for_begin'
[3008, 3056) '__for_end'
[3104, 3152) '__for_begin'
[3200, 3248) '__for_end'
[3296, 3392) '<unknown>'
[3424, 3520) '<unknown>'
[3552, 3648) '<unknown>'
[3680, 3776) '<unknown>'
HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-use-after-scope (/lib64/libasan.so.5+0xb9a1e) Shadow bytes around the buggy address:
0x1000418772f0: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 00 00 00 00
0x100041877300: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 f8 f8 f8 f8
0x100041877310: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 f8 f8 f8 f8
0x100041877320: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 f8 f8 f8 f8
0x100041877330: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 00 00 00 00
=>0x100041877340: f2 f2 f2 f2 f8 f8[f8]f8 f2 f2 f2 f2 00 00 00 00
0x100041877350: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 00 00 00 00
0x100041877360: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 00 00 00 00
0x100041877370: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 00 00 00 00
0x100041877380: f2 f2 f2 f2 00 00 00 00 f2 f2 f2 f2 f8 f8 f8 f8
0x100041877390: f8 f8 f2 f2 f2 f2 f2 f2 f8 f8 f8 f8 f8 f8 f2 f2
Shadow byte legend (one shadow byte represents 8 application bytes):

@oknet oknet added the Logging label Jan 21, 2019
@oknet oknet added this to the 9.0.0 milestone Jan 21, 2019
@oknet
Copy link
Member

oknet commented Jan 21, 2019

@zwoop

This is an 8.x candidate.

oknet
oknet previously approved these changes Jan 21, 2019
@scw00
Copy link
Member

scw00 commented Jan 22, 2019

Please squash you commits.

fix warning in YamlLogConfig.cc
@oknet
Copy link
Member

oknet commented Jan 22, 2019

[approve ci]

std::string filter_name = filter.as<std::string>().c_str();
LogFilter *f = cfg->filter_list.find_by_name(filter_name.c_str());
if (!f) {
Warning("Filter %s is not a known filter; cannot add to this LogObject", filter_name);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

filter_name to filter_name.c_str()

@oknet oknet merged commit 0ee2a26 into apache:master Jan 22, 2019
@bryancall bryancall modified the milestones: 9.0.0, 8.0.6 Oct 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants