diff options
author | Thomas Brand <tom@trellis.ch> | 2019-02-20 15:18:00 +0100 |
---|---|---|
committer | Thomas Brand <tom@trellis.ch> | 2019-02-20 15:18:00 +0100 |
commit | d4ef6800b4fe9ee61d0b9a1b76af1292023a40e7 (patch) | |
tree | 59d0a8a059e8f1a753d4c5592ca22e5c5e8cfaec | |
parent | 8c57a9e808f4f21ee262bd8ef24d4a246ce8a0f9 (diff) | |
download | jack2-d4ef6800b4fe9ee61d0b9a1b76af1292023a40e7.tar.gz |
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
-rw-r--r-- | common/JackGraphManager.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/common/JackGraphManager.cpp b/common/JackGraphManager.cpp index 10f10df5..4cdd9990 100644 --- a/common/JackGraphManager.cpp +++ b/common/JackGraphManager.cpp @@ -811,10 +811,18 @@ void JackGraphManager::GetPortsAux(const char** matching_ports, const char* port regex_t port_regex, type_regex; 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]) { - 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 |