Merge pull request #6 from coolacid/SocketFix

Correctly sets size in bind/connect to fixed name of abstract
pull/3/head
Tom Early 2 years ago committed by GitHub
commit 5062d10196
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -48,7 +48,9 @@ bool CUnixDgramReader::Open(const char *path) // returns true on failure
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path+1, path, sizeof(addr.sun_path)-2);
int rval = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
// We know path is a string, so we skip the first null, get the string length and add 1 for the begining Null
int path_len = sizeof(addr.sun_family) + strlen(addr.sun_path + 1) + 1;
int rval = bind(fd, (struct sockaddr *)&addr, path_len);
if (rval < 0)
{
std::cerr << "bind() failed for " << path << ": " << strerror(errno) << std::endl;
@ -139,7 +141,9 @@ ssize_t CUnixDgramWriter::Write(const void *buf, ssize_t size) const
return -1;
}
// connect to the receiver
int rval = connect(fd, (struct sockaddr *)&addr, sizeof(addr));
// We know path is a string, so we skip the first null, get the string length and add 1 for the begining Null
int path_len = sizeof(addr.sun_family) + strlen(addr.sun_path + 1) + 1;
int rval = connect(fd, (struct sockaddr *)&addr, path_len);
if (rval < 0)
{
std::cerr << "connect() failed for " << addr.sun_path+1 << ": " << strerror(errno) << std::endl;

Loading…
Cancel
Save

Powered by TurnKey Linux.