Blob Blame History Raw
--- cracklib-2.8.9/python/cracklibmodule.c.suffix	2005-09-26 16:42:34.000000000 -0400
+++ cracklib-2.8.9/python/cracklibmodule.c	2007-06-20 14:16:52.000000000 -0400
@@ -19,11 +19,13 @@ static pthread_mutex_t cracklib_mutex = 
 #define UNLOCK()
 #endif
 
+#define DICT_SUFFIX ".pwd"
+
 static PyObject *
 cracklib_FascistCheck(PyObject *self, PyObject *args, PyObject *kwargs)
 {
     int i;
-    char *candidate, *dict;
+    char *candidate, *dict, *dictfile;
     const char *result;
     struct stat st;
     char *keywords[] = {"pw", "dictpath", NULL};
@@ -52,17 +54,26 @@ cracklib_FascistCheck(PyObject *self, Py
                             "second argument was not an absolute path!");
             return NULL;
         }
-        if (lstat(dict, &st) == -1)
+        dictfile = malloc(strlen(dict) + sizeof(DICT_SUFFIX));
+        if (dictfile == NULL)
+        {
+            PyErr_SetFromErrno(PyExc_MemoryError);
+            return NULL;
+        }
+        sprintf(dictfile, "%s" DICT_SUFFIX, dict);
+        if (lstat(dictfile, &st) == -1)
         {
-            PyErr_SetFromErrnoWithFilename(PyExc_OSError, dict);
+            PyErr_SetFromErrnoWithFilename(PyExc_OSError, dictfile);
+            free(dictfile);
             return NULL;
         }
+        free(dictfile);
     } else
     {
-        if (lstat(DEFAULT_CRACKLIB_DICT ".pwd", &st) == -1)
+        if (lstat(DEFAULT_CRACKLIB_DICT DICT_SUFFIX, &st) == -1)
         {
             PyErr_SetFromErrnoWithFilename(PyExc_OSError,
-                                           DEFAULT_CRACKLIB_DICT);
+                                           DEFAULT_CRACKLIB_DICT DICT_SUFFIX);
             return NULL;
         }
     }