瀏覽代碼

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 年之前
父節點
當前提交
de7dc1318f
共有 1 個文件被更改,包括 2 次插入0 次删除
  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)