ud-mailgate: use subprocess.Popen instead of os.popen.
authorJulien Cristau <jcristau@debian.org>
Fri, 11 Oct 2019 13:31:03 +0000 (15:31 +0200)
committerJulien Cristau <jcristau@debian.org>
Fri, 11 Oct 2019 13:31:03 +0000 (15:31 +0200)
debian/changelog
ud-mailgate

index b0a5686..d4f9404 100644 (file)
@@ -16,6 +16,7 @@ userdir-ldap (0.3.97) UNRELEASED; urgency=medium
   * ud-generate: use subprocess.Popen instead of os.popen in GenCDB.
   * Use "not in" operator in various places ("foo not in bar" instead of "not
     foo in bar").
+  * ud-mailgate: use subprocess.Popen instead of os.popen.
 
  -- Peter Palfrader <weasel@debian.org>  Sat, 06 Apr 2019 22:04:34 +0200
 
index 30af583..073ee4f 100755 (executable)
@@ -331,10 +331,11 @@ def DoSSH(Str, Attrs, badkeys, uid):
             Subst["__ERROR__"] = "SSH key with fingerprint %s known as bad key" % (g[1])
             ErrReply = TemplateSubst(Subst, open(TemplatesDir + "admin-info", "r").read())
 
-            Child = os.popen("/usr/sbin/sendmail -t", "w")
-            Child.write(ErrReplyHead)
-            Child.write(ErrReply)
-            if Child.close() is not None:
+            Child = subprocess.Popen(['/usr/sbin/sendmail', '-t'], stdin=subprocess.PIPE)
+            Child.stdin.write(ErrReplyHead)
+            Child.stdin.write(ErrReply)
+            Child.stdin.close()
+            if Child.wait() != 0:
                 raise UDExecuteError("Sendmail gave a non-zero return code")
         except Exception:
             sys.exit(EX_TEMPFAIL)