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
/
unix.c
diff --git
a/src/common/unix.c
b/src/common/unix.c
index 7bcbb688b7389f9eb2fccba4b50c7db58a67ee6e..11c30781ba02ea5fa81f84e7f7400e15bb4436ce 100644
(file)
--- a/
src/common/unix.c
+++ b/
src/common/unix.c
@@
-41,6
+41,14
@@
int lttcomm_connect_unix_sock(const char *pathname)
struct sockaddr_un s_un;
int fd, ret, closeret;
struct sockaddr_un s_un;
int fd, ret, closeret;
+ if (strlen(pathname) >= sizeof(s_un.sun_path)) {
+ ERR("unix socket address (\"%s\") is longer than the platform's limit (%zu > %zu).",
+ pathname, strlen(pathname) + 1,
+ sizeof(s_un.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 s_un;
int lttcomm_create_unix_sock(const char *pathname)
{
struct sockaddr_un s_un;
- int fd;
+ int fd
= -1
;
int ret = -1;
int ret = -1;
+ if (strlen(pathname) >= sizeof(s_un.sun_path)) {
+ ERR("unix socket address (\"%s\") is longer than the platform's limit (%zu > %zu).",
+ pathname, strlen(pathname) + 1,
+ sizeof(s_un.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.023473 seconds
and
4
git commands to generate.