aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_fdserver.c
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2021-07-08 09:07:13 +0300
committerGitHub <noreply@github.com>2021-07-08 09:07:13 +0300
commit6c7ac017886e2f1f63a27871254326d7cd1b48d1 (patch)
treea89fd543bacd9483642ebc27517ff59577ba55ad /platform/linux-generic/odp_fdserver.c
parent3a7a24023021f5959dd2f00fe83cf2635bf25c2d (diff)
parent75b2e7ed219c2f087b7068c4e8b708d475c9026a (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.c26
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);