Comms: Make sure sun_path is NUL-terminated

When using strncpy the NUL-termination can go missing if the string to be copied is longer than the buffer.
Make sure the last character in the buffer is NUL.
If this really happens, the error (non-existing path due to truncation) will be caught during bind-ing.

Fixes the following warning:
/home/peterke/DEV/zoneminder/src/zm_comms.cpp: In member function ‘bool ZM::SockAddrUnix::resolve(const char*, const char*)’:
/home/peterke/DEV/zoneminder/src/zm_comms.cpp:207:10: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 108 equals destination size [-Wstringop-truncation]
  207 |   strncpy(mAddrUn.sun_path, path, sizeof(mAddrUn.sun_path));
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This commit is contained in:
Peter Keresztes Schmidt 2021-05-24 00:44:15 +02:00
parent 93abbdf964
commit e5cac38521
1 changed files with 1 additions and 0 deletions

View File

@ -205,6 +205,7 @@ bool ZM::SockAddrUnix::resolve(const char *path, const char *proto) {
memset(&mAddrUn, 0, sizeof(mAddrUn)); memset(&mAddrUn, 0, sizeof(mAddrUn));
strncpy(mAddrUn.sun_path, path, sizeof(mAddrUn.sun_path)); strncpy(mAddrUn.sun_path, path, sizeof(mAddrUn.sun_path));
mAddrUn.sun_path[sizeof(mAddrUn.sun_path) - 1] = '\0';
mAddrUn.sun_family = AF_UNIX; mAddrUn.sun_family = AF_UNIX;
return true; return true;