From d4ef6800b4fe9ee61d0b9a1b76af1292023a40e7 Mon Sep 17 00:00:00 2001 From: Thomas Brand Date: Wed, 20 Feb 2019 15:18:00 +0100 Subject: [PATCH] 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 --- common/JackGraphManager.cpp | 12 ++++++++++-- 1 file 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