]>
git.ipfire.org Git - thirdparty/lxc.git/log
Christian Brauner [Sun, 29 Jul 2018 21:45:18 +0000 (23:45 +0200)]
cmd: s/write()/lxc_write_nointr()/g
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 29 Jul 2018 20:59:37 +0000 (22:59 +0200)]
cmd: s/pipe()/pipe2()/g
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 29 Jul 2018 21:09:45 +0000 (23:09 +0200)]
lxccontainer: s/pipe()/pipe2()/g
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 29 Jul 2018 21:09:13 +0000 (23:09 +0200)]
lxccontainer: cleanup do_lxcapi_get_interfaces()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 29 Jul 2018 21:07:33 +0000 (23:07 +0200)]
criu: s/pipe()/pipe2()/
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 29 Jul 2018 21:03:32 +0000 (23:03 +0200)]
conf: always close pipe in run_userns_fn()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 29 Jul 2018 21:02:14 +0000 (23:02 +0200)]
conf: s/pipe()/pipe2()/g
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Rafał Miłecki [Sun, 29 Jul 2018 15:44:06 +0000 (17:44 +0200)]
nl: avoid NULL pointer dereference
It's a valid case to call nla_put() with NULL data and 0 len. It's done e.g. in
the nla_put_attr().
There has to be a check for data in nla_put() as passing NULL to the memcpy()
is not allowed. Even if length is 0, both pointers have to be valid.
For a reference see C99 standard (7.21.1/2), it says: "pointer arguments on
such a call shall still have valid values".
Reported-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
[christian.brauner@ubuntu.com: adapted commit message]
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2xsec [Sun, 22 Jul 2018 12:03:46 +0000 (21:03 +0900)]
change log macro of error case from lxc_ambient_caps_up/down
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
2xsec [Sat, 21 Jul 2018 13:47:08 +0000 (22:47 +0900)]
coverity: #
1438067
Explicit null dereferenced
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
Christian Brauner [Wed, 18 Jul 2018 16:09:21 +0000 (18:09 +0200)]
conf: the atime flags are locked in userns
This means they need to be added for remount and for fresh mounts.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2xsec [Fri, 13 Jul 2018 12:33:09 +0000 (21:33 +0900)]
lxclock: change error log using strerror to SYSERROR
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
Christian Brauner [Thu, 12 Jul 2018 15:52:09 +0000 (17:52 +0200)]
coverity: #
1437935
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 12 Jul 2018 15:49:30 +0000 (17:49 +0200)]
coverity: #
1437936
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Wed, 11 Jul 2018 21:12:04 +0000 (23:12 +0200)]
attach: simplify lxc_attach_getpwshell()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 10 Dec 2018 14:14:07 +0000 (15:14 +0100)]
log: thread-safety backports
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 9 Jul 2018 12:28:57 +0000 (14:28 +0200)]
start: don't unconditionally open("/dev/null")
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2xsec [Mon, 2 Jul 2018 11:37:36 +0000 (20:37 +0900)]
coverity: #
1425816
Explicit null dereferenced
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
Christian Brauner [Sat, 30 Jun 2018 09:41:23 +0000 (11:41 +0200)]
CODING_STYLE: add section about using strlcat()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Tue, 26 Jun 2018 09:25:37 +0000 (11:25 +0200)]
log: account for Android's Bionic's strerror_r()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2xsec [Mon, 25 Jun 2018 13:00:43 +0000 (22:00 +0900)]
log: add lxc_log_strerror_r macro
Let's ensure that we always use the thread-safe strerror_r() function and add
an approriate macro.
Additionally, define SYS*() macros for all log levels. They will use the new
macro and ensure thread-safe retrieval of errno values.
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
[christian.brauner@ubuntu.com: simplify lxc_log_strerror_r macro]
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2xsec [Mon, 25 Jun 2018 04:26:39 +0000 (13:26 +0900)]
move some comments in lxc.spec.in
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
2xsec [Fri, 22 Jun 2018 13:42:32 +0000 (22:42 +0900)]
monitor: change exit() => _exit() system call in child process
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
Christian Brauner [Fri, 22 Jun 2018 12:13:06 +0000 (14:13 +0200)]
commands: simplify lxc_cmd()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Donghwa Jeong [Tue, 19 Jun 2018 01:37:47 +0000 (10:37 +0900)]
fix pointer c is dereferenced after checking null
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Tue, 19 Jun 2018 01:27:33 +0000 (10:27 +0900)]
fix fd handle leak
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Mon, 18 Jun 2018 08:18:14 +0000 (17:18 +0900)]
secure coding: #2 strcpy => strlcpy
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Christian Brauner [Mon, 10 Dec 2018 13:22:04 +0000 (14:22 +0100)]
btrfs: fix get_btrfs_subvol_path()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Wed, 20 Jun 2018 11:44:02 +0000 (13:44 +0200)]
include: add strlcat() implementation
CC: Donghwa Jeong <dh48.jeong@samsung.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 10 Dec 2018 13:15:01 +0000 (14:15 +0100)]
btrfs: fix btrfs_snapshot()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Donghwa Jeong [Mon, 18 Jun 2018 04:42:48 +0000 (13:42 +0900)]
secure coding: network: strcpy => strlcpy
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Mon, 18 Jun 2018 02:30:41 +0000 (11:30 +0900)]
secure coding: strcpy => strlcpy
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Christian Brauner [Fri, 15 Jun 2018 11:37:47 +0000 (13:37 +0200)]
coverity: #
1437027
Read from pointer after free
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 11:36:37 +0000 (13:36 +0200)]
coverity: #
1425855
String not null terminated
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 11:35:09 +0000 (13:35 +0200)]
coverity: #
1425789
Unchecked return value from library
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 10:56:19 +0000 (12:56 +0200)]
coverity: #
1425846
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 10:55:06 +0000 (12:55 +0200)]
coverity: #
1425840
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 10:50:47 +0000 (12:50 +0200)]
coverity: #
1425837
String not null terminated
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 10:43:48 +0000 (12:43 +0200)]
coverity: #
1425825
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 10:41:09 +0000 (12:41 +0200)]
coverity: #
1425824
Missing break in switch
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:54:14 +0000 (11:54 +0200)]
coverity: #
1425819
Resource leak
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:52:04 +0000 (11:52 +0200)]
coverity: #
1425818
Dereference after null check
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:49:10 +0000 (11:49 +0200)]
coverity: #
1425813
Resource leak
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:47:31 +0000 (11:47 +0200)]
coverity: #
1425810
Explicit null dereferenced
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:43:15 +0000 (11:43 +0200)]
coverity: #
1425799
Logically dead code
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:42:18 +0000 (11:42 +0200)]
coverity: #
1425793
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:40:53 +0000 (11:40 +0200)]
coverity: #
1425792
Insecure temporary file
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:37:11 +0000 (11:37 +0200)]
coverity: #
1425789
Unchecked return value from library
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:35:10 +0000 (11:35 +0200)]
coverity: #
1425771
Insecure temporary file
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 15 Jun 2018 09:33:34 +0000 (11:33 +0200)]
coverity: #
1425770
Insecure temporary file
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 14 Jun 2018 22:17:01 +0000 (00:17 +0200)]
include: add getgrgid_r()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Donghwa Jeong [Fri, 15 Jun 2018 02:11:48 +0000 (11:11 +0900)]
storage: Resource leak
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Christian Brauner [Thu, 14 Jun 2018 20:17:08 +0000 (22:17 +0200)]
coverity: #
1425768
Untrusted array index read
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 14 Jun 2018 20:10:26 +0000 (22:10 +0200)]
coverity: #
1425767
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 14 Jun 2018 20:09:14 +0000 (22:09 +0200)]
coverity: #
1425766
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 14 Jun 2018 20:05:09 +0000 (22:05 +0200)]
coverity: #
1425760
Use of untrusted scalar value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2xsec [Thu, 14 Jun 2018 15:19:22 +0000 (00:19 +0900)]
coverity: #
1425778
Out-of-bounds write
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
2xsec [Thu, 14 Jun 2018 13:55:47 +0000 (22:55 +0900)]
coverity: #
1437017
Uninitialized pointer
Signed-off-by: 2xsec <dh48.jeong@samsung.com>
Donghwa Jeong [Thu, 14 Jun 2018 10:06:11 +0000 (19:06 +0900)]
fix getgrgid() thread safe issue
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Thu, 14 Jun 2018 06:32:03 +0000 (15:32 +0900)]
fix getpwuid() thread safe issue
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Thu, 14 Jun 2018 01:36:46 +0000 (10:36 +0900)]
coverity: #
1436916
Resource leak
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Tue, 12 Jun 2018 09:16:35 +0000 (18:16 +0900)]
attach: fix double free
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Tue, 12 Jun 2018 08:09:13 +0000 (17:09 +0900)]
fix getpwnam() thread safe issue
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Christian Brauner [Mon, 11 Jun 2018 11:15:48 +0000 (13:15 +0200)]
tools: restore lxc-create log behavior
Older versions of lxc-create used to set log_file to "none" when a log priority
but no log file was specified on the command line. Let's restore this behavior.
Closes #2392.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Donghwa Jeong [Mon, 11 Jun 2018 05:51:16 +0000 (14:51 +0900)]
coverity: #
1425781
Resource leak
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Mon, 11 Jun 2018 02:10:58 +0000 (11:10 +0900)]
arguments: improve some operations
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Jonathan Calmels [Fri, 8 Jun 2018 23:58:11 +0000 (16:58 -0700)]
conf: only use newuidmap and newgidmap when necessary
Signed-off-by: Jonathan Calmels <jcalmels@nvidia.com>
Donghwa Jeong [Fri, 8 Jun 2018 07:38:56 +0000 (16:38 +0900)]
coverity: #
1425836
Resource leak
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Fri, 8 Jun 2018 02:22:18 +0000 (11:22 +0900)]
coverity: #
1425849
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Fri, 8 Jun 2018 02:20:08 +0000 (11:20 +0900)]
coverity: #
1425841
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Fri, 8 Jun 2018 02:16:31 +0000 (11:16 +0900)]
coverity: #
1425795
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Fri, 8 Jun 2018 02:14:40 +0000 (11:14 +0900)]
coverity: #
1425794
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Fri, 8 Jun 2018 02:12:52 +0000 (11:12 +0900)]
coverity: #
1425779
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Fri, 8 Jun 2018 02:11:03 +0000 (11:11 +0900)]
coverity: #
1425777
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Stéphane Graber [Tue, 5 Jun 2018 21:13:57 +0000 (17:13 -0400)]
Fix typo
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
duguhaotian [Wed, 30 May 2018 02:25:40 +0000 (10:25 +0800)]
support tls in cross-compile
AC_RUN_IFELSE will fail in cross-compile,
we can use AC_COMPILE_IFELSE replace.
Signed-off-by: duguhaotian <duguhaotian@gmail.com>
Christian Brauner [Mon, 4 Jun 2018 10:49:05 +0000 (12:49 +0200)]
conf: copy mountinfo for remount_all_slave()
While a container reads mountinfo from proc fs, the mountinfo can be changed by
the kernel anytime. This has caused critical issues on some devices.
Signed-off-by: Donghwa Jeong dh48.jeong@samsung.com
Reported-by: Donghwa Jeong dh48.jeong@samsung.com
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 1 Jun 2018 17:53:06 +0000 (19:53 +0200)]
tree-wide: handle EINTR in some read()/write()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 31 May 2018 10:18:02 +0000 (12:18 +0200)]
start: log unknown info.si_code
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Donghwa Jeong [Thu, 31 May 2018 08:58:08 +0000 (17:58 +0900)]
start: fix waitpid() blocking issue
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Christian Brauner [Wed, 30 May 2018 13:34:03 +0000 (15:34 +0200)]
confile: improve strprint()
POSIX specifies [1]:
"If the value of n is zero on a call to snprintf(), nothing shall be written,
the number of bytes that would have been written had n been sufficiently large
excluding the terminating null shall be returned, and s may be a null pointer."
But in case there are any non-sane libcs out there that do actually dereference
the buffer when when 0 is passed as length to snprintf() let's give them a
dummy buffer.
[1]: The Open Group Base Specifications Issue 7, 2018 edition
IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008)
Copyright © 2001-2018 IEEE and The Open Group
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Reported-by: Donghwa Jeong <dh48.jeong@samsung.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Donghwa Jeong [Tue, 29 May 2018 13:01:27 +0000 (22:01 +0900)]
conf: va_end was not called.
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Donghwa Jeong [Mon, 28 May 2018 04:42:45 +0000 (13:42 +0900)]
network: fix socket handle leak
Signed-off-by: Donghwa Jeong <dh48.jeong@samsung.com>
Christian Brauner [Sat, 26 May 2018 12:22:51 +0000 (14:22 +0200)]
utils: fix task_blocking_signal()
Closes #2342.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 26 May 2018 01:22:58 +0000 (03:22 +0200)]
coverity: #
1435803
Unchecked return value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 26 May 2018 01:21:05 +0000 (03:21 +0200)]
coverity: #
1435805
Logically dead code
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 25 May 2018 17:35:00 +0000 (19:35 +0200)]
tools: fix lxc-create with global config value II
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 25 May 2018 13:43:59 +0000 (15:43 +0200)]
tools: fix lxc-create with global config value
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 24 May 2018 22:12:46 +0000 (00:12 +0200)]
confile: order architectures
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 24 May 2018 22:00:50 +0000 (00:00 +0200)]
lxccontainer: fix fd leaks when sending signals
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 24 May 2018 18:45:29 +0000 (20:45 +0200)]
utils: fix task_blocking_signal()
sscanf() skips whitespace anyway so don't account for tabs in case the file
layout changes.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 24 May 2018 18:29:48 +0000 (20:29 +0200)]
tree-wide: s/sigprocmask/pthread_sigmask()/g
The behavior of sigprocmask() is unspecified in multi-threaded programs. Let's
use pthread_sigmask() instead.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Tue, 22 May 2018 21:26:03 +0000 (23:26 +0200)]
lxc-init: skip signals that can't be caught
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Simos Xenitellis [Tue, 15 May 2018 11:34:38 +0000 (11:34 +0000)]
coverity: #
1425802
Resource leak
Signed-off-by: Simos Xenitellis <simos.lists@googlemail.com>
Christian Brauner [Tue, 15 May 2018 19:33:48 +0000 (21:33 +0200)]
capabilities: raise ambient capabilities
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Suggested-by: Jonathan Calmels <jcalmels@nvidia.com>
Christian Brauner [Sun, 13 May 2018 13:02:09 +0000 (15:02 +0200)]
config: allow read-write /sys in user namespace
Unprivileged containers can safely mount /sys as read-write. This also allows
systemd-udevd to be started in unprivileged containers.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Simos Xenitellis [Tue, 15 May 2018 11:37:14 +0000 (11:37 +0000)]
coverity: #
1425844
Resource leak
Signed-off-by: Simos Xenitellis <simos.lists@googlemail.com>
Simos Xenitellis [Tue, 15 May 2018 00:05:13 +0000 (00:05 +0000)]
coverity: #
1248106
Resource leak
Signed-off-by: Simos Xenitellis <simos.lists@googlemail.com>
Simos Xenitellis [Tue, 15 May 2018 00:19:12 +0000 (00:19 +0000)]
coverity: #
1425836
Resource leak
Signed-off-by: Simos Xenitellis <simos.lists@googlemail.com>
Christian Brauner [Tue, 15 May 2018 10:34:24 +0000 (12:34 +0200)]
coverity: #
1435603
Resource leak
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>