1*705982a5SPatrick WilliamsFrom a773c6b240d27e23d6be41decef0edf24fcee523 Mon Sep 17 00:00:00 2001
282c905dcSAndrew GeisslerFrom: Chen Qi <Qi.Chen@windriver.com>
382c905dcSAndrew GeisslerDate: Thu, 17 Jul 2014 15:53:34 +0800
482c905dcSAndrew GeisslerSubject: [PATCH] commonio.c-fix-unexpected-open-failure-in-chroot-env
582c905dcSAndrew Geissler
6eb8dc403SDave CobbleyUpstream-Status: Inappropriate [OE specific]
7eb8dc403SDave Cobbley
8eb8dc403SDave Cobbleycommonio.c: fix unexpected open failure in chroot environment
9eb8dc403SDave Cobbley
10eb8dc403SDave CobbleyWhen using commands with '-R <newroot>' option in our pseudo environment,
11eb8dc403SDave Cobbleywe would usually get the 'Pemission Denied' error. This patch serves as
12eb8dc403SDave Cobbleya workaround to this problem.
13eb8dc403SDave Cobbley
14eb8dc403SDave CobbleyNote that this patch doesn't change the logic in the code, it just expands
15eb8dc403SDave Cobbleythe codes.
16eb8dc403SDave Cobbley
17eb8dc403SDave CobbleySigned-off-by: Chen Qi <Qi.Chen@windriver.com>
18eb8dc403SDave Cobbley---
19eb8dc403SDave Cobbley lib/commonio.c | 16 ++++++++++++----
20eb8dc403SDave Cobbley 1 file changed, 12 insertions(+), 4 deletions(-)
21eb8dc403SDave Cobbley
22eb8dc403SDave Cobbleydiff --git a/lib/commonio.c b/lib/commonio.c
23*705982a5SPatrick Williamsindex 73fdb3a..d1231e9 100644
24eb8dc403SDave Cobbley--- a/lib/commonio.c
25eb8dc403SDave Cobbley+++ b/lib/commonio.c
26*705982a5SPatrick Williams@@ -606,10 +606,18 @@ int commonio_open (struct commonio_db *db, int mode)
27eb8dc403SDave Cobbley 	db->cursor = NULL;
28eb8dc403SDave Cobbley 	db->changed = false;
29eb8dc403SDave Cobbley
30eb8dc403SDave Cobbley-	fd = open (db->filename,
31eb8dc403SDave Cobbley-	             (db->readonly ? O_RDONLY : O_RDWR)
32*705982a5SPatrick Williams-	           | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW | O_CLOEXEC);
33eb8dc403SDave Cobbley-	saved_errno = errno;
34eb8dc403SDave Cobbley+	if (db->readonly) {
35eb8dc403SDave Cobbley+		fd = open (db->filename,
36eb8dc403SDave Cobbley+			   (true ? O_RDONLY : O_RDWR)
37*705982a5SPatrick Williams+			   | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW | O_CLOEXEC);
38eb8dc403SDave Cobbley+		saved_errno = errno;
39eb8dc403SDave Cobbley+	} else {
40eb8dc403SDave Cobbley+		fd = open (db->filename,
41eb8dc403SDave Cobbley+			   (false ? O_RDONLY : O_RDWR)
42*705982a5SPatrick Williams+			   | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW| O_CLOEXEC);
43eb8dc403SDave Cobbley+		saved_errno = errno;
44eb8dc403SDave Cobbley+	}
45eb8dc403SDave Cobbley+
46eb8dc403SDave Cobbley 	db->fp = NULL;
47eb8dc403SDave Cobbley 	if (fd >= 0) {
48eb8dc403SDave Cobbley #ifdef WITH_TCB
49*705982a5SPatrick Williams--
50*705982a5SPatrick Williams2.30.2
51*705982a5SPatrick Williams
52