diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index ebe3021..9ded3ae 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -1844,14 +1844,14 @@
 string which is the name of a defined system value; these names are
 specified in a number of standards (\POSIX, \UNIX{} 95, \UNIX{} 98, and
 others).  Some platforms define additional names as well.  The names
-known to the host operating system are given in the
+known to the host operating system are given as the keys of the
 \code{confstr_names} dictionary.  For configuration variables not
 included in that mapping, passing an integer for \var{name} is also
 accepted.
 Availability: Macintosh, \UNIX.
 
-If the configuration value specified by \var{name} isn't defined, the
-empty string is returned.
+If the configuration value specified by \var{name} isn't defined,
+\code{None} is returned.
 
 If \var{name} is a string and is not known, \exception{ValueError} is
 raised.  If a specific value for \var{name} is not supported by the
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 1ccc62b..f98c723 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -73,6 +73,11 @@
             finally:
                 fp.close()
 
+    def test_confstr(self):
+        if hasattr(posix, 'confstr'):
+            self.assertRaises(ValueError, posix.confstr, "CS_garbage")
+            self.assertEqual(len(posix.confstr("CS_PATH")) > 0, True)
+
     def test_dup2(self):
         if hasattr(posix, 'dup2'):
             fp1 = open(test_support.TESTFN)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index d91d8b5..4c462a0 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -6817,15 +6817,18 @@
         errno = 0;
 	len = confstr(name, buffer, sizeof(buffer));
 
-	if (len == -1) {
-	    posix_error();
-	}
-	else if (len == 0) {
-            result = PyString_FromString("");
+	if (len == 0) {
+	    if (errno) {
+		posix_error();
+	    }
+	    else {
+		result = Py_None;
+		Py_INCREF(Py_None);
+	    }
         }
         else {
 		if ((unsigned int)len >= sizeof(buffer)) {
-                result = PyString_FromStringAndSize(NULL, len);
+                result = PyString_FromStringAndSize(NULL, len+1);
                 if (result != NULL)
                     confstr(name, PyString_AS_STRING(result), len+1);
             }
