Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lxc
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
lxc
Commits
ff620677
Unverified
Commit
ff620677
authored
Apr 30, 2018
by
Stéphane Graber
Committed by
GitHub
Apr 30, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2297 from brauner/2018-04-29/bugfixes
coverity
parents
ad38dca1
e62fd16f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
153 additions
and
144 deletions
+153
-144
cgfsng.c
src/lxc/cgroups/cgfsng.c
+15
-14
conf.c
src/lxc/conf.c
+6
-10
lxccontainer.c
src/lxc/lxccontainer.c
+100
-73
lxclock.c
src/lxc/lxclock.c
+5
-4
parse.c
src/lxc/parse.c
+3
-1
terminal.c
src/lxc/terminal.c
+12
-22
lxc_create.c
src/lxc/tools/lxc_create.c
+1
-1
lxc_monitor.c
src/lxc/tools/lxc_monitor.c
+3
-9
tool_utils.c
src/lxc/tools/tool_utils.c
+0
-3
utils.c
src/lxc/utils.c
+3
-2
utils.h
src/lxc/utils.h
+1
-1
aa.c
src/tests/aa.c
+1
-1
attach.c
src/tests/attach.c
+3
-3
No files found.
src/lxc/cgroups/cgfsng.c
View file @
ff620677
...
@@ -622,7 +622,7 @@ copy_parent:
...
@@ -622,7 +622,7 @@ copy_parent:
*
lastslash
=
oldv
;
*
lastslash
=
oldv
;
free
(
fpath
);
free
(
fpath
);
fpath
=
must_make_path
(
path
,
"cpuset.cpus"
,
NULL
);
fpath
=
must_make_path
(
path
,
"cpuset.cpus"
,
NULL
);
ret
=
lxc_write_to_file
(
fpath
,
cpulist
,
strlen
(
cpulist
),
false
);
ret
=
lxc_write_to_file
(
fpath
,
cpulist
,
strlen
(
cpulist
),
false
,
0666
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"Failed to write cpu list to
\"
%s
\"
"
,
fpath
);
SYSERROR
(
"Failed to write cpu list to
\"
%s
\"
"
,
fpath
);
goto
on_error
;
goto
on_error
;
...
@@ -673,7 +673,7 @@ static bool copy_parent_file(char *path, char *file)
...
@@ -673,7 +673,7 @@ static bool copy_parent_file(char *path, char *file)
*
lastslash
=
oldv
;
*
lastslash
=
oldv
;
fpath
=
must_make_path
(
path
,
file
,
NULL
);
fpath
=
must_make_path
(
path
,
file
,
NULL
);
ret
=
lxc_write_to_file
(
fpath
,
value
,
len
,
false
);
ret
=
lxc_write_to_file
(
fpath
,
value
,
len
,
false
,
0666
);
if
(
ret
<
0
)
if
(
ret
<
0
)
SYSERROR
(
"Failed to write
\"
%s
\"
to file
\"
%s
\"
"
,
value
,
fpath
);
SYSERROR
(
"Failed to write
\"
%s
\"
to file
\"
%s
\"
"
,
value
,
fpath
);
free
(
fpath
);
free
(
fpath
);
...
@@ -762,7 +762,7 @@ static bool cg_legacy_handle_cpuset_hierarchy(struct hierarchy *h, char *cgname)
...
@@ -762,7 +762,7 @@ static bool cg_legacy_handle_cpuset_hierarchy(struct hierarchy *h, char *cgname)
}
}
free
(
cgpath
);
free
(
cgpath
);
ret
=
lxc_write_to_file
(
clonechildrenpath
,
"1"
,
1
,
false
);
ret
=
lxc_write_to_file
(
clonechildrenpath
,
"1"
,
1
,
false
,
0666
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
/* Set clone_children so children inherit our settings */
/* Set clone_children so children inherit our settings */
SYSERROR
(
"Failed to write 1 to
\"
%s
\"
"
,
clonechildrenpath
);
SYSERROR
(
"Failed to write 1 to
\"
%s
\"
"
,
clonechildrenpath
);
...
@@ -1712,7 +1712,7 @@ static bool cg_unified_create_cgroup(struct hierarchy *h, char *cgname)
...
@@ -1712,7 +1712,7 @@ static bool cg_unified_create_cgroup(struct hierarchy *h, char *cgname)
cgroup
=
must_append_path
(
cgroup
,
parts
[
i
],
NULL
);
cgroup
=
must_append_path
(
cgroup
,
parts
[
i
],
NULL
);
target
=
must_make_path
(
cgroup
,
"cgroup.subtree_control"
,
NULL
);
target
=
must_make_path
(
cgroup
,
"cgroup.subtree_control"
,
NULL
);
ret
=
lxc_write_to_file
(
target
,
add_controllers
,
full_len
,
false
);
ret
=
lxc_write_to_file
(
target
,
add_controllers
,
full_len
,
false
,
0666
);
free
(
target
);
free
(
target
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"Could not enable
\"
%s
\"
controllers in the "
SYSERROR
(
"Could not enable
\"
%s
\"
controllers in the "
...
@@ -1858,7 +1858,7 @@ static bool cgfsng_enter(void *hdata, pid_t pid)
...
@@ -1858,7 +1858,7 @@ static bool cgfsng_enter(void *hdata, pid_t pid)
fullpath
=
must_make_path
(
hierarchies
[
i
]
->
fullcgpath
,
fullpath
=
must_make_path
(
hierarchies
[
i
]
->
fullcgpath
,
"cgroup.procs"
,
NULL
);
"cgroup.procs"
,
NULL
);
ret
=
lxc_write_to_file
(
fullpath
,
pidstr
,
len
,
false
);
ret
=
lxc_write_to_file
(
fullpath
,
pidstr
,
len
,
false
,
0666
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
SYSERROR
(
"Failed to enter cgroup
\"
%s
\"
"
,
fullpath
);
SYSERROR
(
"Failed to enter cgroup
\"
%s
\"
"
,
fullpath
);
free
(
fullpath
);
free
(
fullpath
);
...
@@ -2027,7 +2027,8 @@ static int cg_legacy_mount_controllers(int type, struct hierarchy *h,
...
@@ -2027,7 +2027,8 @@ static int cg_legacy_mount_controllers(int type, struct hierarchy *h,
controllerpath
,
controllerpath
,
flags
|
MS_REMOUNT
);
flags
|
MS_REMOUNT
);
ret
=
mount
(
controllerpath
,
controllerpath
,
"cgroup"
,
ret
=
mount
(
controllerpath
,
controllerpath
,
"cgroup"
,
MS_REMOUNT
|
MS_BIND
|
MS_RDONLY
,
NULL
);
remount_flags
|
MS_REMOUNT
|
MS_BIND
|
MS_RDONLY
,
NULL
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"Failed to remount
\"
%s
\"
ro"
,
controllerpath
);
SYSERROR
(
"Failed to remount
\"
%s
\"
ro"
,
controllerpath
);
return
-
1
;
return
-
1
;
...
@@ -2305,7 +2306,7 @@ static bool cgfsng_escape()
...
@@ -2305,7 +2306,7 @@ static bool cgfsng_escape()
fullpath
=
must_make_path
(
hierarchies
[
i
]
->
mountpoint
,
fullpath
=
must_make_path
(
hierarchies
[
i
]
->
mountpoint
,
hierarchies
[
i
]
->
base_cgroup
,
hierarchies
[
i
]
->
base_cgroup
,
"cgroup.procs"
,
NULL
);
"cgroup.procs"
,
NULL
);
ret
=
lxc_write_to_file
(
fullpath
,
"0"
,
2
,
false
);
ret
=
lxc_write_to_file
(
fullpath
,
"0"
,
2
,
false
,
0666
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
SYSERROR
(
"Failed to escape to cgroup
\"
%s
\"
"
,
fullpath
);
SYSERROR
(
"Failed to escape to cgroup
\"
%s
\"
"
,
fullpath
);
free
(
fullpath
);
free
(
fullpath
);
...
@@ -2358,7 +2359,7 @@ static bool cgfsng_unfreeze(void *hdata)
...
@@ -2358,7 +2359,7 @@ static bool cgfsng_unfreeze(void *hdata)
return
false
;
return
false
;
fullpath
=
must_make_path
(
h
->
fullcgpath
,
"freezer.state"
,
NULL
);
fullpath
=
must_make_path
(
h
->
fullcgpath
,
"freezer.state"
,
NULL
);
ret
=
lxc_write_to_file
(
fullpath
,
THAWED
,
THAWED_LEN
,
false
);
ret
=
lxc_write_to_file
(
fullpath
,
THAWED
,
THAWED_LEN
,
false
,
0666
);
free
(
fullpath
);
free
(
fullpath
);
if
(
ret
<
0
)
if
(
ret
<
0
)
return
false
;
return
false
;
...
@@ -2416,7 +2417,7 @@ static int __cg_unified_attach(const struct hierarchy *h, const char *name,
...
@@ -2416,7 +2417,7 @@ static int __cg_unified_attach(const struct hierarchy *h, const char *name,
base_path
=
must_make_path
(
h
->
mountpoint
,
container_cgroup
,
NULL
);
base_path
=
must_make_path
(
h
->
mountpoint
,
container_cgroup
,
NULL
);
full_path
=
must_make_path
(
base_path
,
"cgroup.procs"
,
NULL
);
full_path
=
must_make_path
(
base_path
,
"cgroup.procs"
,
NULL
);
/* cgroup is populated */
/* cgroup is populated */
ret
=
lxc_write_to_file
(
full_path
,
pidstr
,
pidstr_len
,
false
);
ret
=
lxc_write_to_file
(
full_path
,
pidstr
,
pidstr_len
,
false
,
0666
);
if
(
ret
<
0
&&
errno
!=
EBUSY
)
if
(
ret
<
0
&&
errno
!=
EBUSY
)
goto
on_error
;
goto
on_error
;
...
@@ -2442,7 +2443,7 @@ static int __cg_unified_attach(const struct hierarchy *h, const char *name,
...
@@ -2442,7 +2443,7 @@ static int __cg_unified_attach(const struct hierarchy *h, const char *name,
goto
on_error
;
goto
on_error
;
strcat
(
full_path
,
"/cgroup.procs"
);
strcat
(
full_path
,
"/cgroup.procs"
);
ret
=
lxc_write_to_file
(
full_path
,
pidstr
,
len
,
false
);
ret
=
lxc_write_to_file
(
full_path
,
pidstr
,
len
,
false
,
0666
);
if
(
ret
==
0
)
if
(
ret
==
0
)
goto
on_success
;
goto
on_success
;
...
@@ -2494,7 +2495,7 @@ static bool cgfsng_attach(const char *name, const char *lxcpath, pid_t pid)
...
@@ -2494,7 +2495,7 @@ static bool cgfsng_attach(const char *name, const char *lxcpath, pid_t pid)
fullpath
=
build_full_cgpath_from_monitorpath
(
h
,
path
,
"cgroup.procs"
);
fullpath
=
build_full_cgpath_from_monitorpath
(
h
,
path
,
"cgroup.procs"
);
free
(
path
);
free
(
path
);
ret
=
lxc_write_to_file
(
fullpath
,
pidstr
,
len
,
false
);
ret
=
lxc_write_to_file
(
fullpath
,
pidstr
,
len
,
false
,
0666
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"Failed to attach %d to %s"
,
(
int
)
pid
,
fullpath
);
SYSERROR
(
"Failed to attach %d to %s"
,
(
int
)
pid
,
fullpath
);
free
(
fullpath
);
free
(
fullpath
);
...
@@ -2572,7 +2573,7 @@ static int cgfsng_set(const char *filename, const char *value, const char *name,
...
@@ -2572,7 +2573,7 @@ static int cgfsng_set(const char *filename, const char *value, const char *name,
char
*
fullpath
;
char
*
fullpath
;
fullpath
=
build_full_cgpath_from_monitorpath
(
h
,
path
,
filename
);
fullpath
=
build_full_cgpath_from_monitorpath
(
h
,
path
,
filename
);
ret
=
lxc_write_to_file
(
fullpath
,
value
,
strlen
(
value
),
false
);
ret
=
lxc_write_to_file
(
fullpath
,
value
,
strlen
(
value
),
false
,
0666
);
free
(
fullpath
);
free
(
fullpath
);
}
}
free
(
path
);
free
(
path
);
...
@@ -2697,7 +2698,7 @@ static int cg_legacy_set_data(const char *filename, const char *value,
...
@@ -2697,7 +2698,7 @@ static int cg_legacy_set_data(const char *filename, const char *value,
}
}
fullpath
=
must_make_path
(
h
->
fullcgpath
,
filename
,
NULL
);
fullpath
=
must_make_path
(
h
->
fullcgpath
,
filename
,
NULL
);
ret
=
lxc_write_to_file
(
fullpath
,
value
,
strlen
(
value
),
false
);
ret
=
lxc_write_to_file
(
fullpath
,
value
,
strlen
(
value
),
false
,
0666
);
free
(
fullpath
);
free
(
fullpath
);
return
ret
;
return
ret
;
}
}
...
@@ -2766,7 +2767,7 @@ static bool __cg_unified_setup_limits(void *hdata,
...
@@ -2766,7 +2767,7 @@ static bool __cg_unified_setup_limits(void *hdata,
struct
lxc_cgroup
*
cg
=
iterator
->
elem
;
struct
lxc_cgroup
*
cg
=
iterator
->
elem
;
fullpath
=
must_make_path
(
h
->
fullcgpath
,
cg
->
subsystem
,
NULL
);
fullpath
=
must_make_path
(
h
->
fullcgpath
,
cg
->
subsystem
,
NULL
);
ret
=
lxc_write_to_file
(
fullpath
,
cg
->
value
,
strlen
(
cg
->
value
),
false
);
ret
=
lxc_write_to_file
(
fullpath
,
cg
->
value
,
strlen
(
cg
->
value
),
false
,
0666
);
free
(
fullpath
);
free
(
fullpath
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"Failed to set
\"
%s
\"
to
\"
%s
\"
"
,
SYSERROR
(
"Failed to set
\"
%s
\"
to
\"
%s
\"
"
,
...
...
src/lxc/conf.c
View file @
ff620677
...
@@ -562,10 +562,6 @@ int pin_rootfs(const char *rootfs)
...
@@ -562,10 +562,6 @@ int pin_rootfs(const char *rootfs)
if
(
!
realpath
(
rootfs
,
absrootfs
))
if
(
!
realpath
(
rootfs
,
absrootfs
))
return
-
2
;
return
-
2
;
ret
=
access
(
absrootfs
,
F_OK
);
if
(
ret
!=
0
)
return
-
1
;
ret
=
stat
(
absrootfs
,
&
s
);
ret
=
stat
(
absrootfs
,
&
s
);
if
(
ret
<
0
)
if
(
ret
<
0
)
return
-
1
;
return
-
1
;
...
@@ -581,12 +577,12 @@ int pin_rootfs(const char *rootfs)
...
@@ -581,12 +577,12 @@ int pin_rootfs(const char *rootfs)
if
(
fd
<
0
)
if
(
fd
<
0
)
return
fd
;
return
fd
;
if
(
fstatfs
(
fd
,
&
sfs
))
{
ret
=
fstatfs
(
fd
,
&
sfs
);
return
-
1
;
if
(
ret
<
0
)
}
return
fd
;
if
(
sfs
.
f_type
==
NFS_SUPER_MAGIC
)
{
if
(
sfs
.
f_type
==
NFS_SUPER_MAGIC
)
{
DEBUG
(
"
rootfs on NFS, not unlinking pin file
\"
%s
\"
.
"
,
absrootfspin
);
DEBUG
(
"
Rootfs on NFS, not unlinking pin file
\"
%s
\"
"
,
absrootfspin
);
return
fd
;
return
fd
;
}
}
...
@@ -2564,7 +2560,7 @@ int setup_sysctl_parameters(struct lxc_list *sysctls)
...
@@ -2564,7 +2560,7 @@ int setup_sysctl_parameters(struct lxc_list *sysctls)
}
}
ret
=
lxc_write_to_file
(
filename
,
elem
->
value
,
ret
=
lxc_write_to_file
(
filename
,
elem
->
value
,
strlen
(
elem
->
value
),
false
);
strlen
(
elem
->
value
),
false
,
0666
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR
(
"Failed to setup sysctl parameters %s to %s"
,
ERROR
(
"Failed to setup sysctl parameters %s to %s"
,
elem
->
key
,
elem
->
value
);
elem
->
key
,
elem
->
value
);
...
@@ -2599,7 +2595,7 @@ int setup_proc_filesystem(struct lxc_list *procs, pid_t pid)
...
@@ -2599,7 +2595,7 @@ int setup_proc_filesystem(struct lxc_list *procs, pid_t pid)
}
}
ret
=
lxc_write_to_file
(
filename
,
elem
->
value
,
ret
=
lxc_write_to_file
(
filename
,
elem
->
value
,
strlen
(
elem
->
value
),
false
);
strlen
(
elem
->
value
),
false
,
0666
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR
(
"Failed to setup proc filesystem %s to %s"
,
ERROR
(
"Failed to setup proc filesystem %s to %s"
,
elem
->
filename
,
elem
->
value
);
elem
->
filename
,
elem
->
value
);
...
...
src/lxc/lxccontainer.c
View file @
ff620677
This diff is collapsed.
Click to expand it.
src/lxc/lxclock.c
View file @
ff620677
...
@@ -19,13 +19,14 @@
...
@@ -19,13 +19,14 @@
*/
*/
#define _GNU_SOURCE
#define _GNU_SOURCE
#include <malloc.h>
#include <stdio.h>
#include <errno.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <fcntl.h>
#include <
stdlib
.h>
#include <
malloc
.h>
#include <pthread.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/file.h>
#include <unistd.h>
#include <lxc/lxccontainer.h>
#include <lxc/lxccontainer.h>
...
...
src/lxc/parse.c
View file @
ff620677
...
@@ -83,8 +83,10 @@ int lxc_file_for_each_line_mmap(const char *file, lxc_file_cb callback,
...
@@ -83,8 +83,10 @@ int lxc_file_for_each_line_mmap(const char *file, lxc_file_cb callback,
return
-
1
;
return
-
1
;
}
}
if
(
st
.
st_size
==
0
)
if
(
st
.
st_size
==
0
)
{
close
(
fd
);
return
0
;
return
0
;
}
buf
=
lxc_strmmap
(
NULL
,
st
.
st_size
,
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
,
fd
,
0
);
buf
=
lxc_strmmap
(
NULL
,
st
.
st_size
,
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
,
fd
,
0
);
if
(
buf
==
MAP_FAILED
)
{
if
(
buf
==
MAP_FAILED
)
{
...
...
src/lxc/terminal.c
View file @
ff620677
...
@@ -667,33 +667,23 @@ void lxc_terminal_free(struct lxc_conf *conf, int fd)
...
@@ -667,33 +667,23 @@ void lxc_terminal_free(struct lxc_conf *conf, int fd)
static
int
lxc_terminal_peer_default
(
struct
lxc_terminal
*
terminal
)
static
int
lxc_terminal_peer_default
(
struct
lxc_terminal
*
terminal
)
{
{
struct
lxc_terminal_state
*
ts
;
struct
lxc_terminal_state
*
ts
;
const
char
*
path
=
terminal
->
path
;
const
char
*
path
;
int
fd
;
int
ret
=
0
;
int
ret
=
0
;
if
(
!
path
)
{
if
(
terminal
->
path
)
ret
=
access
(
"/dev/tty"
,
F_OK
);
path
=
terminal
->
path
;
if
(
ret
==
0
)
{
else
/* If no terminal was given, try current controlling
path
=
"/dev/tty"
;
* terminal, there won't be one if we were started as a
* daemon (-d).
*/
fd
=
open
(
"/dev/tty"
,
O_RDWR
);
if
(
fd
>=
0
)
{
close
(
fd
);
path
=
"/dev/tty"
;
}
}
}
if
(
!
path
)
{
errno
=
ENOTTY
;
DEBUG
(
"The process does not have a controlling terminal"
);
goto
on_succes
;
}
terminal
->
peer
=
lxc_unpriv
(
open
(
path
,
O_RDWR
|
O_CLOEXEC
));
terminal
->
peer
=
lxc_unpriv
(
open
(
path
,
O_RDWR
|
O_CLOEXEC
));
if
(
terminal
->
peer
<
0
)
{
if
(
terminal
->
peer
<
0
)
{
if
(
!
terminal
->
path
)
{
errno
=
ENODEV
;
DEBUG
(
"%s - The process does not have a controlling "
"terminal"
,
strerror
(
errno
));
goto
on_succes
;
}
ERROR
(
"%s - Failed to open proxy terminal
\"
%s
\"
"
,
ERROR
(
"%s - Failed to open proxy terminal
\"
%s
\"
"
,
strerror
(
errno
),
path
);
strerror
(
errno
),
path
);
return
-
ENOTTY
;
return
-
ENOTTY
;
...
...
src/lxc/tools/lxc_create.c
View file @
ff620677
...
@@ -109,7 +109,7 @@ static void create_helpfn(const struct lxc_arguments *args)
...
@@ -109,7 +109,7 @@ static void create_helpfn(const struct lxc_arguments *args)
pid
=
fork
();
pid
=
fork
();
if
(
pid
)
{
if
(
pid
)
{
wait_for_pid
(
pid
);
(
void
)
wait_for_pid
(
pid
);
return
;
return
;
}
}
...
...
src/lxc/tools/lxc_monitor.c
View file @
ff620677
...
@@ -337,7 +337,6 @@ static int lxc_monitor_open(const char *lxcpath)
...
@@ -337,7 +337,6 @@ static int lxc_monitor_open(const char *lxcpath)
int
fd
;
int
fd
;
size_t
retry
;
size_t
retry
;
size_t
len
;
size_t
len
;
int
ret
=
-
1
;
int
backoff_ms
[]
=
{
10
,
50
,
100
};
int
backoff_ms
[]
=
{
10
,
50
,
100
};
if
(
lxc_monitor_sock_name
(
lxcpath
,
&
addr
)
<
0
)
if
(
lxc_monitor_sock_name
(
lxcpath
,
&
addr
)
<
0
)
...
@@ -352,9 +351,9 @@ static int lxc_monitor_open(const char *lxcpath)
...
@@ -352,9 +351,9 @@ static int lxc_monitor_open(const char *lxcpath)
len
=
strlen
(
&
addr
.
sun_path
[
1
]);
len
=
strlen
(
&
addr
.
sun_path
[
1
]);
if
(
len
>=
sizeof
(
addr
.
sun_path
)
-
1
)
{
if
(
len
>=
sizeof
(
addr
.
sun_path
)
-
1
)
{
errno
=
ENAMETOOLONG
;
errno
=
ENAMETOOLONG
;
ret
=
-
errno
;
close
(
fd
)
;
fprintf
(
stderr
,
"name of monitor socket too long (%zu bytes): %s
\n
"
,
len
,
strerror
(
errno
));
fprintf
(
stderr
,
"name of monitor socket too long (%zu bytes): %s
\n
"
,
len
,
strerror
(
errno
));
goto
on_error
;
return
-
errno
;
}
}
for
(
retry
=
0
;
retry
<
sizeof
(
backoff_ms
)
/
sizeof
(
backoff_ms
[
0
]);
retry
++
)
{
for
(
retry
=
0
;
retry
<
sizeof
(
backoff_ms
)
/
sizeof
(
backoff_ms
[
0
]);
retry
++
)
{
...
@@ -366,16 +365,11 @@ static int lxc_monitor_open(const char *lxcpath)
...
@@ -366,16 +365,11 @@ static int lxc_monitor_open(const char *lxcpath)
}
}
if
(
fd
<
0
)
{
if
(
fd
<
0
)
{
ret
=
-
errno
;
fprintf
(
stderr
,
"Failed to connect to monitor socket: %s
\n
"
,
strerror
(
errno
));
fprintf
(
stderr
,
"Failed to connect to monitor socket: %s
\n
"
,
strerror
(
errno
));
goto
on_error
;
return
-
errno
;
}
}
return
fd
;
return
fd
;
on_error:
close
(
fd
);
return
ret
;
}
}
static
int
lxc_monitor_read_fdset
(
struct
pollfd
*
fds
,
nfds_t
nfds
,
static
int
lxc_monitor_read_fdset
(
struct
pollfd
*
fds
,
nfds_t
nfds
,
...
...
src/lxc/tools/tool_utils.c
View file @
ff620677
...
@@ -1093,9 +1093,6 @@ int rm_r(char *dirname)
...
@@ -1093,9 +1093,6 @@ int rm_r(char *dirname)
char
*
pathname
;
char
*
pathname
;
struct
stat
mystat
;
struct
stat
mystat
;
if
(
!
direntp
)
break
;
if
(
!
strcmp
(
direntp
->
d_name
,
"."
)
||
if
(
!
strcmp
(
direntp
->
d_name
,
"."
)
||
!
strcmp
(
direntp
->
d_name
,
".."
))
!
strcmp
(
direntp
->
d_name
,
".."
))
continue
;
continue
;
...
...
src/lxc/utils.c
View file @
ff620677
...
@@ -971,12 +971,13 @@ size_t lxc_array_len(void **array)
...
@@ -971,12 +971,13 @@ size_t lxc_array_len(void **array)
return
result
;
return
result
;
}
}
int
lxc_write_to_file
(
const
char
*
filename
,
const
void
*
buf
,
size_t
count
,
bool
add_newline
)
int
lxc_write_to_file
(
const
char
*
filename
,
const
void
*
buf
,
size_t
count
,
bool
add_newline
,
mode_t
mode
)
{
{
int
fd
,
saved_errno
;
int
fd
,
saved_errno
;
ssize_t
ret
;
ssize_t
ret
;
fd
=
open
(
filename
,
O_WRONLY
|
O_TRUNC
|
O_CREAT
|
O_CLOEXEC
,
0666
);
fd
=
open
(
filename
,
O_WRONLY
|
O_TRUNC
|
O_CREAT
|
O_CLOEXEC
,
mode
);
if
(
fd
<
0
)
if
(
fd
<
0
)
return
-
1
;
return
-
1
;
ret
=
lxc_write_nointr
(
fd
,
buf
,
count
);
ret
=
lxc_write_nointr
(
fd
,
buf
,
count
);
...
...
src/lxc/utils.h
View file @
ff620677
...
@@ -392,7 +392,7 @@ extern int sha1sum_file(char *fnam, unsigned char *md_value);
...
@@ -392,7 +392,7 @@ extern int sha1sum_file(char *fnam, unsigned char *md_value);
/* read and write whole files */
/* read and write whole files */
extern
int
lxc_write_to_file
(
const
char
*
filename
,
const
void
*
buf
,
extern
int
lxc_write_to_file
(
const
char
*
filename
,
const
void
*
buf
,
size_t
count
,
bool
add_newline
);
size_t
count
,
bool
add_newline
,
mode_t
mode
);
extern
int
lxc_read_from_file
(
const
char
*
filename
,
void
*
buf
,
size_t
count
);
extern
int
lxc_read_from_file
(
const
char
*
filename
,
void
*
buf
,
size_t
count
);
/* convert variadic argument lists to arrays (for execl type argument lists) */
/* convert variadic argument lists to arrays (for execl type argument lists) */
...
...
src/tests/aa.c
View file @
ff620677
...
@@ -94,7 +94,7 @@ static int do_test_file_open(struct lxc_container *c, char *fnam)
...
@@ -94,7 +94,7 @@ static int do_test_file_open(struct lxc_container *c, char *fnam)
fret
=
0
;
fret
=
0
;
err2:
err2:
wait_for_pid
(
pid
);
(
void
)
wait_for_pid
(
pid
);
err1:
err1:
close
(
pipefd
[
0
]);
close
(
pipefd
[
0
]);
close
(
pipefd
[
1
]);
close
(
pipefd
[
1
]);
...
...
src/tests/attach.c
View file @
ff620677
...
@@ -124,7 +124,7 @@ static int test_attach_lsm_func(struct lxc_container *ct)
...
@@ -124,7 +124,7 @@ static int test_attach_lsm_func(struct lxc_container *ct)
ret
=
0
;
ret
=
0
;
err2:
err2:
wait_for_pid
(
pid
);
(
void
)
wait_for_pid
(
pid
);
err1:
err1:
close
(
pipefd
[
0
]);
close
(
pipefd
[
0
]);
close
(
pipefd
[
1
]);
close
(
pipefd
[
1
]);
...
@@ -178,7 +178,7 @@ static int test_attach_lsm_cmd(struct lxc_container *ct)
...
@@ -178,7 +178,7 @@ static int test_attach_lsm_cmd(struct lxc_container *ct)
ret
=
0
;
ret
=
0
;
err2:
err2:
wait_for_pid
(
pid
);
(
void
)
wait_for_pid
(
pid
);
err1:
err1:
close
(
pipefd
[
0
]);
close
(
pipefd
[
0
]);
close
(
pipefd
[
1
]);
close
(
pipefd
[
1
]);
...
@@ -240,7 +240,7 @@ static int test_attach_func(struct lxc_container *ct)
...
@@ -240,7 +240,7 @@ static int test_attach_func(struct lxc_container *ct)
ret
=
0
;
ret
=
0
;
err2:
err2:
wait_for_pid
(
pid
);
(
void
)
wait_for_pid
(
pid
);
err1:
err1:
close
(
pipefd
[
0
]);
close
(
pipefd
[
0
]);
close
(
pipefd
[
1
]);
close
(
pipefd
[
1
]);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment