Package: libapache2-mod-auth-openid
Version: 0.7-0.1
Severity: normal
Tags: upstream patch
Control: forwarded -1 
https://lists.butterfat.net/pipermail/mod-auth-openid/2012-October/000121.html

under certain configurations, apache will crash with mod_auth_openid
installed.

The cause of this crash appears to be a segmentation fault when
str_replace is called with an empty string (e.g. when a query
parameter has an empty name or value, and it gets passed to
url_decode() from parse_query_string()).

The attached patch (already forwarded to the upstream mailing list,
visible at the URL above) resolves the problem.

Regards,

        --dkg

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing'), (200, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-3-686-pae (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
commit ffbe08809bfeef03c922851cc2760bba83d8dca9
Author: Daniel Kahn Gillmor <d...@fifthhorseman.net>
Date:   Tue Oct 9 17:42:07 2012 -0400

    avoid a segfault in str_replace when haystack is the empty string

diff --git a/src/moid_utils.cpp b/src/moid_utils.cpp
index 90a8a4c..4c20a55 100644
--- a/src/moid_utils.cpp
+++ b/src/moid_utils.cpp
@@ -96,9 +96,11 @@ namespace modauthopenid {
   string str_replace(string needle, string replacement, string haystack) {
     vector<string> v = explode(haystack, needle);
     string r = "";
-    for(vector<string>::size_type i=0; i < v.size()-1; i++)
-      r += v[i] + replacement;
-    r += v[v.size()-1];
+    if (v.size()) {
+      for(vector<string>::size_type i=0; i < v.size()-1; i++)
+        r += v[i] + replacement;
+      r += v[v.size()-1];
+    }
     return r;
   };
 

Reply via email to