projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
consumer relayd interaction: fix segfaults
[lttng-tools.git]
/
src
/
common
/
relayd
/
relayd.c
diff --git
a/src/common/relayd/relayd.c
b/src/common/relayd/relayd.c
index aa3f7685300bdd175abd5492c3cb66f6a75283e5..2283865cf0d86be6c905baa287fd5809f17af8f2 100644
(file)
--- a/
src/common/relayd/relayd.c
+++ b/
src/common/relayd/relayd.c
@@
-41,6
+41,10
@@
static int send_command(struct lttcomm_relayd_sock *rsock,
char *buf;
uint64_t buf_size = sizeof(header);
char *buf;
uint64_t buf_size = sizeof(header);
+ if (rsock->sock.fd < 0) {
+ return -ECONNRESET;
+ }
+
if (data) {
buf_size += size;
}
if (data) {
buf_size += size;
}
@@
-87,6
+91,10
@@
static int recv_reply(struct lttcomm_relayd_sock *rsock, void *data, size_t size
{
int ret;
{
int ret;
+ if (rsock->sock.fd < 0) {
+ return -ECONNRESET;
+ }
+
DBG3("Relayd waiting for reply of size %zu", size);
ret = rsock->sock.ops->recvmsg(&rsock->sock, data, size, 0);
DBG3("Relayd waiting for reply of size %zu", size);
ret = rsock->sock.ops->recvmsg(&rsock->sock, data, size, 0);
@@
-337,6
+345,13
@@
int relayd_connect(struct lttcomm_relayd_sock *rsock)
/* Code flow error. Safety net. */
assert(rsock);
/* Code flow error. Safety net. */
assert(rsock);
+ if (!rsock->sock.ops) {
+ /*
+ * Attempting a connect on a non-initialized socket.
+ */
+ return -ECONNRESET;
+ }
+
DBG3("Relayd connect ...");
return rsock->sock.ops->connect(&rsock->sock);
DBG3("Relayd connect ...");
return rsock->sock.ops->connect(&rsock->sock);
@@
-379,6
+394,7
@@
int relayd_close(struct lttcomm_relayd_sock *rsock)
PERROR("relayd_close default close");
}
}
PERROR("relayd_close default close");
}
}
+ rsock->sock.fd = -1;
end:
return ret;
end:
return ret;
@@
-396,6
+412,10
@@
int relayd_send_data_hdr(struct lttcomm_relayd_sock *rsock,
assert(rsock);
assert(hdr);
assert(rsock);
assert(hdr);
+ if (rsock->sock.fd < 0) {
+ return -ECONNRESET;
+ }
+
DBG3("Relayd sending data header of size %zu", size);
/* Again, safety net */
DBG3("Relayd sending data header of size %zu", size);
/* Again, safety net */
This page took
0.028005 seconds
and
4
git commands to generate.