Get cgi parsing code to work. Note: it helps a lot if
authorDerek Atkins <derek@ihtfp.com>
Wed, 17 Mar 2004 20:12:04 +0000 (20:12 +0000)
committerDerek Atkins <derek@ihtfp.com>
Wed, 17 Mar 2004 20:12:04 +0000 (20:12 +0000)
CgiParseImpl is a subclass of CgiParse!  Oops.

apache-2.0/cgiparse.cpp
apache-2.0/mod_shib.cpp

index 07f9087..9be3daa 100644 (file)
 using namespace shibtarget;
 using namespace std;
 
-class CgiParseImpl {
+class CgiParseImpl : CgiParse{
 public:
-  CgiParseImpl(string& cgi);
   ~CgiParseImpl() {};
+  CgiParseImpl(string& cgi);
   const char * get_value(const string& name) const;
 
 private:
@@ -185,10 +185,10 @@ CgiParseImpl::CgiParseImpl(string& cgi)
     }
     else
         return NULL;
-#endif
-
+#else
     pch = cgi.c_str();
     cl = strlen(pch);
+#endif
         
     while (cl && pch)
     {
@@ -217,7 +217,8 @@ CgiParseImpl::get_value(const string& name) const
 }
 
 CgiParse*
-CgiParse::ParseCGI(string& cgi)
+CgiParse::ParseCGI(string& input)
 {
-  return (CgiParse*)(new CgiParseImpl(cgi));
+  CgiParseImpl* res = new CgiParseImpl(input);
+  return (CgiParse*) res;
 }
index 90b8814..d93fc47 100644 (file)
@@ -610,7 +610,7 @@ extern "C" int shib_shire_handler (request_rec* r)
 
     ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,0,r,
                  "shire_post_handler() about to read using get_client_block");
-    string cgistr;
+    string cgistr = "";
     char buff[BUFSIZ];
     //ap_hard_timeout("[mod_shib] CGI Parser", r);
 
@@ -625,18 +625,13 @@ extern "C" int shib_shire_handler (request_rec* r)
     cgi = CgiParse::ParseCGI(cgistr);
 
     ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,0,r,
-                 "shire_post_handler() CGI parsed...");
+                 "shire_post_handler() CGI parsed... (%p)", cgi);
 
     if (!cgi)
       throw ShibTargetException (SHIBRPC_OK, "CgiParse failed");
     
     // Make sure the target parameter exists
-    const string target_str = cgi->get_value("TARGET");
-
-    ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,0,r,
-                 "shire_post_handler() obtained target string from CGI...");
-
-    const char *target = target_str.c_str();
+    const char *target = cgi->get_value("TARGET");
 
     ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,0,r,
                  "shire_post_handler() obtained target...");
@@ -650,8 +645,7 @@ extern "C" int shib_shire_handler (request_rec* r)
                  "shire_post_handler() obtained target...");
 
     // Make sure the SAML Response parameter exists
-    const string poststr = cgi->get_value("SAMLResponse");
-    const char *post = poststr.c_str();
+    const char *post = cgi->get_value("SAMLResponse");
     if (!post || *post == '\0')
       // invalid post
       throw ShibTargetException (SHIBRPC_OK,