samba_dnsupdate: tmp file cleanup on exception

Jean Raby jraby at inverse.ca
Tue Apr 9 17:06:48 MDT 2013


Hi,

here's a small patch that cleans up the temporary file before aborting if 
creds.get_named_ccache() raises an exception.

This should not happen, but it is annoying when it does since the script runs 
every 10 minutes :

   /usr/sbin/samba_dnsupdate: Traceback (most recent call last):
[2013/04/09 06:46:25,  0] ../lib/util/util_runcmd.c:334(samba_runcmd_io_handler)
   /usr/sbin/samba_dnsupdate:   File "/usr/sbin/samba_dnsupdate", line 507, in 
<module>
[2013/04/09 06:46:25,  0] ../lib/util/util_runcmd.c:334(samba_runcmd_io_handler)
   /usr/sbin/samba_dnsupdate:     get_credentials(lp)
[2013/04/09 06:46:25,  0] ../lib/util/util_runcmd.c:334(samba_runcmd_io_handler)
   /usr/sbin/samba_dnsupdate:   File "/usr/sbin/samba_dnsupdate", line 121, in 
get_credentials
[2013/04/09 06:46:25,  0] ../lib/util/util_runcmd.c:334(samba_runcmd_io_handler)
   /usr/sbin/samba_dnsupdate:     creds.get_named_ccache(lp, ccachename)
[2013/04/09 06:46:25,  0] ../lib/util/util_runcmd.c:334(samba_runcmd_io_handler)
   /usr/sbin/samba_dnsupdate: RuntimeError: kinit for MACHINE$@DOMAIN.TLD failed 
(Cannot contact any KDC for requested realm)
[2013/04/09 06:46:25,  0] ../lib/util/util_runcmd.c:334(samba_runcmd_io_handler)
   /usr/sbin/samba_dnsupdate:
[2013/04/09 06:46:25,  3] 
../source4/dsdb/dns/dns_update.c:296(dnsupdate_nameupdate_done)
   Completed DNS update check OK


-- 
Jean
-------------- next part --------------
diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate
index 33c16ec..68b0f72 100755
--- a/source4/scripting/bin/samba_dnsupdate
+++ b/source4/scripting/bin/samba_dnsupdate
@@ -116,7 +116,11 @@ def get_credentials(lp):
     creds.set_machine_account(lp)
     creds.set_krb_forwardable(credentials.NO_KRB_FORWARDABLE)
     (tmp_fd, ccachename) = tempfile.mkstemp()
-    creds.get_named_ccache(lp, ccachename)
+    try:
+        creds.get_named_ccache(lp, ccachename)
+    except RuntimeError as e:
+        os.unlink(ccachename)
+        raise e
 
 
 class dnsobj(object):


More information about the samba-technical mailing list