#define check_selinux_update_passwd(username) ((void)0)
#endif
-int update_passwd(const char *filename, const char *username,
+int FAST_FUNC update_passwd(const char *filename, const char *username,
const char *new_pw)
{
struct stat sb;
int cnt = 0;
int ret = -1; /* failure */
+ filename = xmalloc_follow_symlinks(filename);
+ if (filename == NULL)
+ return -1;
+
check_selinux_update_passwd(username);
/* New passwd file, "/etc/passwd+" for now */
free_mem:
free(fnamesfx);
- free((char*)username);
+ free((char *)filename);
+ free((char *)username);
return ret;
}