From: Ganesh Maharaj Mahalingam Date: Mon, 11 Apr 2022 17:15:43 +0000 (-0700) Subject: libcephsqlite: ceph-mgr crashes when compiled with gcc12 X-Git-Tag: v18.0.0~683^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ac043a09c5ffb4b434b8644920004b3d5b7f9d8c;p=ceph.git libcephsqlite: ceph-mgr crashes when compiled with gcc12 regex in libcephsqlite, when compiled with GCC12 treats '-' as a range operator resulting in the following error. "Invalid start of '[x-x]' range in regular expression" Fixes: https://tracker.ceph.com/issues/55304 Signed-off-by: Ganesh Maharaj Mahalingam --- diff --git a/src/libcephsqlite.cc b/src/libcephsqlite.cc index 9e7a0629147fe..eafadcd8922bd 100644 --- a/src/libcephsqlite.cc +++ b/src/libcephsqlite.cc @@ -381,8 +381,8 @@ static int FileSize(sqlite3_file *file, sqlite_int64 *osize) static bool parsepath(std::string_view path, struct cephsqlite_fileloc* fileloc) { - static const std::regex re1{"^/*(\\*[[:digit:]]+):([[:alnum:]-_.]*)/([[:alnum:]-._]+)$"}; - static const std::regex re2{"^/*([[:alnum:]-_.]+):([[:alnum:]-_.]*)/([[:alnum:]-._]+)$"}; + static const std::regex re1{"^/*(\\*[[:digit:]]+):([[:alnum:]\\-_.]*)/([[:alnum:]\\-._]+)$"}; + static const std::regex re2{"^/*([[:alnum:]\\-_.]+):([[:alnum:]\\-_.]*)/([[:alnum:]\\-._]+)$"}; std::cmatch cm; if (!std::regex_match(path.data(), cm, re1)) {