b64d92c
--- cracklib-2.8.9/python/cracklibmodule.c	2007-01-25 12:16:30.000000000 -0500
b64d92c
+++ cracklib-2.8.9/python/cracklibmodule.c	2007-01-25 12:16:32.000000000 -0500
b64d92c
@@ -19,6 +19,8 @@
b64d92c
 #define UNLOCK()
b64d92c
 #endif
b64d92c
 
b64d92c
+#define DICT_SUFFIX ".pwd"
b64d92c
+
b64d92c
 static PyObject *
b64d92c
 cracklib_FascistCheck(PyObject *self, PyObject *args, PyObject *kwargs)
b64d92c
 {
b64d92c
@@ -27,6 +29,7 @@
b64d92c
     const char *result;
b64d92c
     struct stat st;
b64d92c
     char *keywords[] = {"pw", "dictpath", NULL};
b64d92c
+    char *dictfile;
b64d92c
 
b64d92c
     self = NULL;
b64d92c
     candidate = NULL;
b64d92c
@@ -52,14 +55,23 @@
b64d92c
                             "second argument was not an absolute path!");
b64d92c
             return NULL;
b64d92c
         }
b64d92c
-        if (lstat(dict, &st) == -1)
b64d92c
+        dictfile = malloc(strlen(dict) + sizeof(DICT_SUFFIX));
b64d92c
+        if (dictfile == NULL)
b64d92c
+        {
b64d92c
+            PyErr_SetFromErrnoWithFilename(PyExc_OSError, dict);
b64d92c
+            return NULL;
b64d92c
+        }
b64d92c
+        sprintf(dictfile, "%s" DICT_SUFFIX, dict);
b64d92c
+        if (lstat(dictfile, &st) == -1)
b64d92c
         {
b64d92c
             PyErr_SetFromErrnoWithFilename(PyExc_OSError, dict);
b64d92c
+            free(dictfile);
b64d92c
             return NULL;
b64d92c
         }
b64d92c
+        free(dictfile);
b64d92c
     } else
b64d92c
     {
b64d92c
-        if (lstat(DEFAULT_CRACKLIB_DICT ".pwd", &st) == -1)
b64d92c
+        if (lstat(DEFAULT_CRACKLIB_DICT DICT_SUFFIX, &st) == -1)
b64d92c
         {
b64d92c
             PyErr_SetFromErrnoWithFilename(PyExc_OSError,
b64d92c
                                            DEFAULT_CRACKLIB_DICT);