1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

Refine config directive token parsing. v6.0.135 (#4042)

make sure one directive token don't span more than two lines.

try to fix #2228

---------

Co-authored-by: winlin <winlinvip@gmail.com>
This commit is contained in:
Jacob Su 2024-07-08 18:19:25 +08:00 committed by GitHub
parent 6bbd461ec9
commit baf22d01c1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 175 additions and 36 deletions

View file

@ -1202,9 +1202,15 @@ srs_error_t SrsConfDirective::read_token(SrsConfigBuffer* buffer, vector<string>
char ch = *buffer->pos++;
if (ch == SRS_LF) {
buffer->line++;
if (ch == SRS_LF || ch == SRS_CR) {
if (ch == SRS_LF) {
buffer->line++;
}
sharp_comment = false;
if (args.size() > 0) {
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "line %d: unexpected end of line to parse token %s", buffer->line - 1, args[0].c_str());
}
}
if (sharp_comment) {
@ -1305,7 +1311,7 @@ srs_error_t SrsConfDirective::read_token(SrsConfigBuffer* buffer, vector<string>
args.push_back(word_str);
}
srs_freepa(aword);
if (ch == ';') {
state = SrsDirectiveStateEntire;
return err;
@ -1314,6 +1320,10 @@ srs_error_t SrsConfDirective::read_token(SrsConfigBuffer* buffer, vector<string>
state = SrsDirectiveStateBlockStart;
return err;
}
if ((ch == SRS_LF || ch == SRS_CR) && args.size() > 0) {
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "line %d: unexpected end of line to parse token %s", buffer->line - 1, args[0].c_str());
}
}
}
}
@ -2378,7 +2388,7 @@ srs_error_t SrsConfig::check_normal_config()
string n = conf->at(i)->name;
if (n != "enabled" && n != "listen" && n != "maxbw"
&& n != "mss" && n != "latency" && n != "recvlatency"
&& n != "peerlatency" && n != "connect_timeout"
&& n != "peerlatency" && n != "connect_timeout" && n != "peer_idle_timeout"
&& n != "sendbuf" && n != "recvbuf" && n != "payloadsize"
&& n != "default_app" && n != "sei_filter" && n != "mix_correct"
&& n != "tlpktdrop" && n != "tsbpdmode" && n != "passphrase" && n != "pbkeylen") {