follow symlinks to find the true passwd file before updating.
diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c
index 388adf8..e99db40 100644
--- a/libbb/update_passwd.c
+++ b/libbb/update_passwd.c
@@ -52,6 +52,10 @@
 	int cnt = 0;
 	int ret = -1; /* failure */
 
+	filename = xmalloc_readlink_follow(filename);
+	if (filename == NULL)
+		return -1;
+
 	check_selinux_update_passwd(username);
 
 	/* New passwd file, "/etc/passwd+" for now */
@@ -143,6 +147,7 @@
 
  free_mem:
 	free(fnamesfx);
-	free((char*)username);
+	free((char *)filename);
+	free((char *)username);
 	return ret;
 }