diff --git a/src/assay.cc b/src/assay.cc index aff8c0d2..c2a81dc8 100644 --- a/src/assay.cc +++ b/src/assay.cc @@ -244,14 +244,17 @@ int Assay::processURI(const char *uri, const char *protocol, store_variable("REQUEST_LINE", std::string(protocol) + " " + std::string(uri) + " HTTP/" + std::string(http_version)); - std::string path_info; - if (pos_raw == std::string::npos) { - path_info = std::string(uri_s, 0); - } else { - path_info = std::string(uri_s, 0, pos_raw); + if (pos_raw != std::string::npos) { store_variable("QUERY_STRING", std::string(uri_s, pos_raw + 1, uri_s.length() - (pos_raw + 1))); } + + std::string path_info; + if (pos == std::string::npos) { + path_info = std::string(m_uri_decoded, 0); + } else { + path_info = std::string(m_uri_decoded, 0, pos); + } store_variable("PATH_INFO", path_info); store_variable("REQUEST_FILENAME", path_info); diff --git a/test/test-cases/regression/variable-PATH_INFO.json b/test/test-cases/regression/variable-PATH_INFO.json index 10fb251d..7c08fad5 100644 --- a/test/test-cases/regression/variable-PATH_INFO.json +++ b/test/test-cases/regression/variable-PATH_INFO.json @@ -2,7 +2,7 @@ { "enabled":1, "version_min":300000, - "title":"Testing Variables :: PATH_INFO", + "title":"Testing Variables :: PATH_INFO (1/3)", "client":{ "ip":"200.249.12.31", "port":123 @@ -48,7 +48,7 @@ { "enabled":1, "version_min":300000, - "title":"Testing Variables :: PATH_INFO", + "title":"Testing Variables :: PATH_INFO (2/3)", "client":{ "ip":"200.249.12.31", "port":123 @@ -94,7 +94,7 @@ { "enabled":1, "version_min":300000, - "title":"Testing Variables :: PATH_INFO", + "title":"Testing Variables :: PATH_INFO (3/3)", "client":{ "ip":"200.249.12.31", "port":123