Browse Source

Check return value of regcomp()

Only REG_EXTENDED regular expressions are understood.

Eg. foo_{1|2} is NOT understood.

This commit solves segfault when using invalid regular expressions.
See https://github.com/jackaudio/jack2/issues/433
tags/v1.9.13
Thomas Brand 6 years ago
parent
commit
d4ef6800b4
1 changed files with 10 additions and 2 deletions
  1. +10
    -2
      common/JackGraphManager.cpp

+ 10
- 2
common/JackGraphManager.cpp View File

@@ -811,10 +811,18 @@ void JackGraphManager::GetPortsAux(const char** matching_ports, const char* port
regex_t port_regex, type_regex; regex_t port_regex, type_regex;


if (port_name_pattern && port_name_pattern[0]) { if (port_name_pattern && port_name_pattern[0]) {
regcomp(&port_regex, port_name_pattern, REG_EXTENDED | REG_NOSUB);
if(regcomp(&port_regex, port_name_pattern, REG_EXTENDED | REG_NOSUB)!=0)
{
jack_log("JackGraphManager::GetPortsAux could not compile regex for port_name_pattern '%s'", port_name_pattern);
return;
}
} }
if (type_name_pattern && type_name_pattern[0]) { if (type_name_pattern && type_name_pattern[0]) {
regcomp(&type_regex, type_name_pattern, REG_EXTENDED | REG_NOSUB);
if(regcomp(&type_regex, type_name_pattern, REG_EXTENDED | REG_NOSUB)!=0)
{
jack_log("JackGraphManager::GetPortsAux could not compile regex for type_name_pattern '%s'", type_name_pattern);
return;
}
} }


// Cleanup port array // Cleanup port array


Loading…
Cancel
Save