projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: report an error if unix socket address is too long
[lttng-tools.git]
/
src
/
common
/
sessiond-comm
/
unix.c
diff --git
a/src/common/sessiond-comm/unix.c
b/src/common/sessiond-comm/unix.c
index 77a6013f0244572b2c2bb30ae054959db2cdf5c4..39ac89d53281804d33598d2f08538480108b4c30 100644
(file)
--- a/
src/common/sessiond-comm/unix.c
+++ b/
src/common/sessiond-comm/unix.c
@@
-41,6
+41,14
@@
int lttcomm_connect_unix_sock(const char *pathname)
struct sockaddr_un sun;
int fd, ret, closeret;
struct sockaddr_un sun;
int fd, ret, closeret;
+ if (strlen(pathname) >= sizeof(sun.sun_path)) {
+ ERR("unix socket address (\"%s\") is longer than the platform's limit (%zu > %zu).",
+ pathname, strlen(pathname) + 1,
+ sizeof(sun.sun_path));
+ ret = -ENAMETOOLONG;
+ goto error;
+ }
+
fd = socket(PF_UNIX, SOCK_STREAM, 0);
if (fd < 0) {
PERROR("socket");
fd = socket(PF_UNIX, SOCK_STREAM, 0);
if (fd < 0) {
PERROR("socket");
@@
-111,9
+119,17
@@
LTTNG_HIDDEN
int lttcomm_create_unix_sock(const char *pathname)
{
struct sockaddr_un sun;
int lttcomm_create_unix_sock(const char *pathname)
{
struct sockaddr_un sun;
- int fd;
+ int fd
= -1
;
int ret = -1;
int ret = -1;
+ if (strlen(pathname) >= sizeof(sun.sun_path)) {
+ ERR("unix socket address (\"%s\") is longer than the platform's limit (%zu > %zu).",
+ pathname, strlen(pathname) + 1,
+ sizeof(sun.sun_path));
+ ret = -ENAMETOOLONG;
+ goto error;
+ }
+
/* Create server socket */
if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
PERROR("socket");
/* Create server socket */
if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
PERROR("socket");
This page took
0.023626 seconds
and
4
git commands to generate.