diff options
author | Matias Elo <matias.elo@nokia.com> | 2021-07-08 09:07:13 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 09:07:13 +0300 |
commit | 6c7ac017886e2f1f63a27871254326d7cd1b48d1 (patch) | |
tree | a89fd543bacd9483642ebc27517ff59577ba55ad /platform/linux-generic/odp_fdserver.c | |
parent | 3a7a24023021f5959dd2f00fe83cf2635bf25c2d (diff) | |
parent | 75b2e7ed219c2f087b7068c4e8b708d475c9026a (diff) |
Merge ODP v1.30.0.0v1.30.0.0_DPDK_19.11
Merge ODP linux-generic v1.30.0.0 into ODP-DPDK.
Diffstat (limited to 'platform/linux-generic/odp_fdserver.c')
-rw-r--r-- | platform/linux-generic/odp_fdserver.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/platform/linux-generic/odp_fdserver.c b/platform/linux-generic/odp_fdserver.c index 9e0d75de3..3103ddd5c 100644 --- a/platform/linux-generic/odp_fdserver.c +++ b/platform/linux-generic/odp_fdserver.c @@ -246,10 +246,14 @@ static int get_socket(void) int len; /* construct the named socket path: */ - snprintf(sockpath, FDSERVER_SOCKPATH_MAXLEN, FDSERVER_SOCK_FORMAT, - odp_global_ro.shm_dir, - odp_global_ro.uid, - odp_global_ro.main_pid); + len = snprintf(sockpath, FDSERVER_SOCKPATH_MAXLEN, FDSERVER_SOCK_FORMAT, + odp_global_ro.shm_dir, odp_global_ro.uid, + odp_global_ro.main_pid); + + if (len >= FDSERVER_SOCKPATH_MAXLEN || len >= (int)sizeof(remote.sun_path)) { + ODP_ERR("path too long\n"); + return -1; + } s_sock = socket(AF_UNIX, SOCK_STREAM, 0); if (s_sock == -1) { @@ -561,7 +565,7 @@ int _odp_fdserver_init_global(void) int sock; struct sockaddr_un local; pid_t server_pid; - int res; + int len, res; snprintf(sockpath, FDSERVER_SOCKPATH_MAXLEN, FDSERVER_SOCKDIR_FORMAT, odp_global_ro.shm_dir, @@ -570,10 +574,14 @@ int _odp_fdserver_init_global(void) mkdir(sockpath, 0744); /* construct the server named socket path: */ - snprintf(sockpath, FDSERVER_SOCKPATH_MAXLEN, FDSERVER_SOCK_FORMAT, - odp_global_ro.shm_dir, - odp_global_ro.uid, - odp_global_ro.main_pid); + len = snprintf(sockpath, FDSERVER_SOCKPATH_MAXLEN, FDSERVER_SOCK_FORMAT, + odp_global_ro.shm_dir, odp_global_ro.uid, + odp_global_ro.main_pid); + + if (len >= FDSERVER_SOCKPATH_MAXLEN || len >= (int)sizeof(local.sun_path)) { + ODP_ERR("path too long\n"); + return -1; + } /* create UNIX domain socket: */ sock = socket(AF_UNIX, SOCK_STREAM, 0); |