diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2013-12-13 16:27:04 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2013-12-13 21:26:05 +0900 |
commit | 8cdef1831c2cbdad9fc3bb8b03601d76ebe15a94 (patch) | |
tree | e3283e67660a50748cbe736a0068a514ab654dfd | |
parent | f374815a3e66a389bf2495fadbc82eec0e6f586b (diff) |
ecore-con - fix possible unterminated buffers
-rw-r--r-- | src/lib/ecore_con/ecore_con_local.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/ecore_con/ecore_con_local.c b/src/lib/ecore_con/ecore_con_local.c index df86334c5..54dde177b 100644 --- a/src/lib/ecore_con/ecore_con_local.c +++ b/src/lib/ecore_con/ecore_con_local.c @@ -91,7 +91,10 @@ ecore_con_local_connect(Ecore_Con_Server *svr, if (svr->port < 0) { if (svr->name[0] == '/') - strncpy(buf, svr->name, sizeof(buf)); + { + strncpy(buf, svr->name, sizeof(buf) - 1); + buf[sizeof(buf) - 1] = 0; + } else snprintf(buf, sizeof(buf), "/tmp/.ecore_service|%s", svr->name); } @@ -108,8 +111,10 @@ ecore_con_local_connect(Ecore_Con_Server *svr, } } else if ((svr->type & ECORE_CON_TYPE) == ECORE_CON_LOCAL_ABSTRACT) - strncpy(buf, svr->name, - sizeof(buf)); + { + strncpy(buf, svr->name, sizeof(buf) - 1); + buf[sizeof(buf) - 1] = 0; + } svr->fd = socket(AF_UNIX, SOCK_STREAM, 0); if (svr->fd < 0) @@ -251,8 +256,10 @@ ecore_con_local_listen( svr->port); } else if ((svr->type & ECORE_CON_TYPE) == ECORE_CON_LOCAL_ABSTRACT) - strncpy(buf, svr->name, - sizeof(buf)); + { + strncpy(buf, svr->name, sizeof(buf) - 1); + buf[sizeof(buf) - 1] = 0; + } pmode = umask(mask); start: |