diff -up ypserv-2.26/rpc.yppasswdd/update.c.retval ypserv-2.26/rpc.yppasswdd/update.c --- ypserv-2.26/rpc.yppasswdd/update.c.retval 2011-10-19 16:27:10.292847501 +0200 +++ ypserv-2.26/rpc.yppasswdd/update.c 2011-10-19 16:29:01.983839864 +0200 @@ -720,7 +720,12 @@ update_files (yppasswd *yppw, char *logb if (link (path_shadow, path_shadow_old) == -1) log_msg ("Cannot create backup file %s: %s", path_shadow_old, strerror (errno)); - rename (path_shadow_tmp, path_shadow); + if (rename (path_shadow_tmp, path_shadow) == -1) + { + log_msg ("Cannot move temporary file %s to %s: %s", + path_shadow_tmp, path_shadow, strerror (errno)); + *shadow_changed = 0; + } } else unlink (path_shadow_tmp); @@ -732,7 +737,12 @@ update_files (yppasswd *yppw, char *logb if (link (path_passwd, path_passwd_old) == -1) log_msg ("Cannot create backup file %s: %s", path_passwd_old, strerror (errno)); - rename (path_passwd_tmp, path_passwd); + if (rename (path_passwd_tmp, path_passwd) == -1) + { + log_msg ("Cannot move temporary file %s to %s: %s", + path_passwd_tmp, path_passwd, strerror (errno)); + *passwd_changed = 0; + } } else unlink (path_passwd_tmp);