Browse Source

halt getspnam[_r] search on error accessing TCB shadow

fallback to /etc/shadow should happen only when the entry is not found
in the TCB shadow. otherwise transient errors or permission errors can
cause inconsistent results.
Rich Felker 6 năm trước cách đây
mục cha
commit
de7dc1318f
1 tập tin đã thay đổi với 2 bổ sung0 xóa
  1. 2 0
      src/passwd/getspnam_r.c

+ 2 - 0
src/passwd/getspnam_r.c

@@ -94,6 +94,8 @@ int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct
 			return errno;
 		}
 	} else {
+		if (errno != ENOENT && errno != ENOTDIR)
+			return errno;
 		f = fopen("/etc/shadow", "rbe");
 		if (!f) {
 			if (errno != ENOENT && errno != ENOTDIR)