summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2011-10-25 15:19:02 -0400
committerStephen Gallagher <sgallagh@redhat.com>2011-10-25 16:18:47 -0400
commitf5379d2cd137c4667ec3e0047ba9b96fe4edf161 (patch)
tree2487f0adaee73ea9247b08b9d6d4255f64907e6f
parent8d955c29b4f1f3694629175102cba9060d6f166a (diff)
downloadsssd_unused-f5379d2cd137c4667ec3e0047ba9b96fe4edf161.tar.gz
sssd_unused-f5379d2cd137c4667ec3e0047ba9b96fe4edf161.tar.xz
sssd_unused-f5379d2cd137c4667ec3e0047ba9b96fe4edf161.zip
RESPONDER: Fix segfault in sss_packet_send()
There are several places (all error-handling) where sss_cmd_done() is called with no response packet created. As a short-term solution, we need to check whether the packet is NULL and simply return EINVAL. client_send() (the consumer) will then forcibly disconnect the client (which will return PAM_SYSTEM_ERR to the client).
-rw-r--r--src/responder/common/responder_packet.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/responder/common/responder_packet.c b/src/responder/common/responder_packet.c
index d308ecd4..5132d955 100644
--- a/src/responder/common/responder_packet.c
+++ b/src/responder/common/responder_packet.c
@@ -217,6 +217,11 @@ int sss_packet_send(struct sss_packet *packet, int fd)
size_t len;
void *buf;
+ if (!packet) {
+ /* No packet object to write to? */
+ return EINVAL;
+ }
+
buf = packet->buffer + packet->iop;
len = *packet->len - packet->iop;