summaryrefslogtreecommitdiff
path: root/src/server/wsgi_interp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/wsgi_interp.c')
-rw-r--r--src/server/wsgi_interp.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/server/wsgi_interp.c b/src/server/wsgi_interp.c
index 01f6bb3..a347e9e 100644
--- a/src/server/wsgi_interp.c
+++ b/src/server/wsgi_interp.c
@@ -631,7 +631,7 @@ InterpreterObject *newInterpreterObject(const char *name)
pwent = getpwuid(geteuid());
- if (getenv("USER")) {
+ if (pwent && getenv("USER")) {
#if PY_MAJOR_VERSION >= 3
key = PyUnicode_FromString("USER");
value = PyUnicode_Decode(pwent->pw_name,
@@ -649,7 +649,7 @@ InterpreterObject *newInterpreterObject(const char *name)
Py_DECREF(value);
}
- if (getenv("USERNAME")) {
+ if (pwent && getenv("USERNAME")) {
#if PY_MAJOR_VERSION >= 3
key = PyUnicode_FromString("USERNAME");
value = PyUnicode_Decode(pwent->pw_name,
@@ -667,7 +667,7 @@ InterpreterObject *newInterpreterObject(const char *name)
Py_DECREF(value);
}
- if (getenv("LOGNAME")) {
+ if (pwent && getenv("LOGNAME")) {
#if PY_MAJOR_VERSION >= 3
key = PyUnicode_FromString("LOGNAME");
value = PyUnicode_Decode(pwent->pw_name,
@@ -718,20 +718,24 @@ InterpreterObject *newInterpreterObject(const char *name)
struct passwd *pwent;
pwent = getpwuid(geteuid());
+
+ if (pwent) {
#if PY_MAJOR_VERSION >= 3
- key = PyUnicode_FromString("HOME");
- value = PyUnicode_Decode(pwent->pw_dir, strlen(pwent->pw_dir),
- Py_FileSystemDefaultEncoding,
- "surrogateescape");
+ key = PyUnicode_FromString("HOME");
+ value = PyUnicode_Decode(pwent->pw_dir,
+ strlen(pwent->pw_dir),
+ Py_FileSystemDefaultEncoding,
+ "surrogateescape");
#else
- key = PyString_FromString("HOME");
- value = PyString_FromString(pwent->pw_dir);
+ key = PyString_FromString("HOME");
+ value = PyString_FromString(pwent->pw_dir);
#endif
- PyObject_SetItem(object, key, value);
+ PyObject_SetItem(object, key, value);
- Py_DECREF(key);
- Py_DECREF(value);
+ Py_DECREF(key);
+ Py_DECREF(value);
+ }
}
Py_DECREF(module);